Q&A

  • 마우스 위치알기엽!
아래처럼 하믄여 마우스가 라벨에 가믄 글짜색이 변하거든여

근데요 그 라벨을 판넬(panel)위에 올리면 작동을 하지 않는군여

흐흐흐

어케하야 할지 깜깜하군요..

도사님들의 하이테크닉을 부탁혀여~!



unit Unit1;



interface



uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls;



type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

private

{ Private declarations }

procedure WndProc(var Message: TMessage); override;

public

{ Public declarations }

procedure ChangeColor(Sender: TObject; Msg: Integer);

end;



var

Form1: TForm1;



implementation

{$R *.DFM}



procedure TForm1.WndProc(var Message: TMessage);

begin

// 콤포넌트에 마우스가 있으면(over) 폰트의 색상을 바꾼다

if Message.LParam = Longint(Label1) then

ChangeColor(Label1, Message.Msg);

inherited WndProc(Message);

end;



procedure TForm1.ChangeColor(Sender: TObject; Msg: Integer);

Begin

// 마우스가 Label위에 있을때

if Sender is TLabel then

begin

if (Msg = CM_MOUSELEAVE) then

(Sender as TLabel).Font.Color := clWindowText; // 마우스가 떠날때

if (Msg = CM_MOUSEENTER) then

(Sender as TLabel).Font.Color := clBlue; // 마우스가 들어올때

end;



end;



end.

1  COMMENTS
  • Profile
    박지훈.임프 1999.10.24 19:09
    산들바람 wrote:

    > 아래처럼 하믄여 마우스가 라벨에 가믄 글짜색이 변하거든여

    > 근데요 그 라벨을 판넬(panel)위에 올리면 작동을 하지 않는군여

    > 흐흐흐

    > 어케하야 할지 깜깜하군요..

    > 도사님들의 하이테크닉을 부탁혀여~!

    >

    > unit Unit1;

    >

    > interface

    >

    > uses

    > Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    > StdCtrls;

    >

    > type

    > TForm1 = class(TForm)

    > Label1: TLabel;

    > Label2: TLabel;

    > private

    > { Private declarations }

    > procedure WndProc(var Message: TMessage); override;

    > public

    > { Public declarations }

    > procedure ChangeColor(Sender: TObject; Msg: Integer);

    > end;

    >

    > var

    > Form1: TForm1;

    >

    > implementation

    > {$R *.DFM}

    >

    > procedure TForm1.WndProc(var Message: TMessage);

    > begin

    > // 콤포넌트에 마우스가 있으면(over) 폰트의 색상을 바꾼다

    > if Message.LParam = Longint(Label1) then

    > ChangeColor(Label1, Message.Msg);

    > inherited WndProc(Message);

    > end;

    >

    > procedure TForm1.ChangeColor(Sender: TObject; Msg: Integer);

    > Begin

    > // 마우스가 Label위에 있을때

    > if Sender is TLabel then

    > begin

    > if (Msg = CM_MOUSELEAVE) then

    > (Sender as TLabel).Font.Color := clWindowText; // 마우스가 떠날때

    > if (Msg = CM_MOUSEENTER) then

    > (Sender as TLabel).Font.Color := clBlue; // 마우스가 들어올때

    > end;

    >

    > end;

    >

    > end.







    임펠리테리입니다.



    당연합니다. 보여주신 코드는 폼 자체가 LAbel의 직접 패어런트이기 때문에

    가능한 것입니다. 폼의 메시지를 처리하는 WndProc() 함수를 오버라이드한거니까요.

    패널위에 올렸다면 패널의 메시지를 받아서 처리해야 하는데, 폼이야 직접

    프로젝트에서 폼클래스를 작성하니까 쉽지만 패널은 미리 만들어진 vcl 클래스이므로

    좀 복잡해지죠.



    간단히 트릭으로 해결하시는 건 어떨지?

    먼저 레이블을 폼 위의 원하는 위치에 올립니다. 그리고 그 위에 패널을 올립니다.

    레이블이 패널뒤로 가려져버렸죠? 패널에서 마우스 오른쪽 클릭을 하면

    Send to back이란 메뉴가 있습니다. 이 항목을 클릭하면 패널이 레이블 뒤로

    가면서 레이블이 패널 위에 있는 것처럼 보입니다.

    그냥 단순한.. 시각적인 트릭이지만 효과는 똑같죠.



    그럼 참고하시길...







    임펠리테리 박지훈이었습니다.



    (http://myhome.thrunet.com/~cbuilder)

    • memogi
    • 1999.10.24 03:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박지훈.임프
      1999.10.24 19:00
      memogi wrote: > 안녕하세요 > Memo컴퍼넌트 안에있는 내용을 인쇄할려고하는데...??? > 어떻게해야할지...
    • 오승섭
      1999.10.25 18:46
      안녕하세요 .... 먼저 SQL*PLUS에서 SCOTT/TIGER@balbs로 접속을 해보십시요.... 만약 접속이 않된다면...
    • 박현수
    • 1999.10.23 21:17
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이상호
      1999.11.02 07:24
      Windows 95부터 사용되는 Win32 API에서 포트를 다루기 위해서 권장되는 방법은 CreateFile이란 API를 사...
    • 김금남
    • 1999.10.23 21:05
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이주흥
      1999.10.24 02:30
      김금남 wrote: > 자재관리 프로그램입니다. > 출고번호에 딸린 출고물품들이 여러건 되는데, > 양식지에...
    • 유도삼
      1999.10.25 22:46
      이주흥 wrote: > 김금남 wrote: > > 자재관리 프로그램입니다. > > 출고번호에 딸린 출고물품들이 여러...
    • 초보
    • 1999.10.23 20:18
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 조복기
      1999.10.24 04:51
      안녕하세요.. 어떤 용도로 일본어를 써야되는지는 알수가 없지만 한글윈도우에는 자체적으로 일본어를 ...
    • 최종오
    • 1999.10.23 18:47
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 권경부
      1999.10.23 20:38
      최종오 wrote: > 인터넷에서 엑셀 파일을 다운로드 받아서 > 프로그램에 데이터를 읽어 들여야 하는데요....
    • 열심이
    • 1999.10.23 06:50
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 유도삼
      1999.10.24 09:10
      열심이 wrote: > 퀵리포트에서 qrgroup으로 그룹을 지정한 후 footband를 qrband로 지정하였습니다. footb...
    • 최종오
    • 1999.10.23 04:43
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 권경부
      1999.10.23 21:28
      최종오님... 한델 강의실에 있는 안치봉님의 다국적언어지원 강의를 참고해보세요... 행운이 있길 빕니...
    • 권경부
      1999.10.23 05:00
      최종오님.. 1. 자동으로 만든 폼을 Create해야 하나...? - Create 하지 않으셔도 됩니다. 2. 같은 폼...
    • 박지훈.임프
      1999.10.24 19:09
      산들바람 wrote: > 아래처럼 하믄여 마우스가 라벨에 가믄 글짜색이 변하거든여 > 근데요 그 라벨을 판넬...
    • 송정환
    • 1999.10.23 03:08
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.10.23 03:38
      송정환 wrote: > TQuery컴포넌트를 이용해서 커리해온 데이타를 DB에디터을 이용해서 쓰는과 동시에 데이...
    • 델초보
    • 1999.10.23 03:02
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 권경부
      1999.10.23 03:16
      이렇게 해보세요.... procedure TForm1.Button2Click(Sender: TObject);//최소화된 폼을 활성화 시키는 ...
    • 조형석
    • 1999.10.23 02:39
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.10.23 03:33
      조형석 wrote: > DB에서 field를 추가하면 Edit 박스와 라벨 을 다른 폼에 생성 하려구 합니다. > > 만...
    • 권경부
      1999.10.23 02:51
      조형석님.. 이렇게 해보세요... procedure TForm1.FormCreate(Sender: TObject); var MyLabel : TLabe...
    • 얼라
    • 1999.10.23 01:48
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.10.23 03:29
      얼라 wrote: > 음... 마우스가 폰트위로 가게 되면 색을 바꾸는 소스에서염... > label이 Form위에 있으...
    • 권경부
      1999.10.23 02:35
      이렇게 해보세요....(패널위에서 입니다.)... (현재 폼 위에 레이블이 하나 있고요.. 글구 패널위에 또 레...
    • 화랑
    • 1999.10.23 00:30
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 박지훈.임프
      1999.10.24 19:15
      화랑 wrote: > 안녕하세요.. > > 누가 아는 사람없어요.. > > 저는 ASP용 Active Server Component...
    • 화랑
      1999.10.25 02:55
      답변 정말 감사합니다. 그럼 델파이에서 유니코드와 String사이에는 어떻게 변환을 하면 되는 지요.. ...
    • 델초보
    • 1999.10.22 23:18
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.10.23 00:19
      델초보 wrote: > SendMessage(CboZip.Handle,WM_KEYDOWN,VK_F4,0); > 문을 써서 자동으로 디비콤보 박스...
    • 김경율
    • 1999.10.22 22:56
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.10.23 00:26
      김경율 wrote: > edit keydown 이벤트에서 버튼이라든지 그밖으 컴포너트의 event를 동적으로 실행할려면 ...