Q&A

  • CMMOUSEENTER를 어떻게 사용하나요?
안녕하세요 엄청 초보입니다. 꾸벅~!



밑에 보니깐 저랑 비슷한 경우의 질답이 있더군요



탐색기의 버튼처럼 마우스커서가 올라갔을때 변경이 되는 단추를 만들고



싶은데 이번트도 없고 cmmouseenter와 cmmouseleave를 사용하라는데



vcl 리소스를 봤거든요 근데 잘 모르겠어요 이미지 위에서 저 두 명령을



사용하는 간단한 예제랑 설명 좀 올려 주시면 정말 많은 도움 되겠습니다.



부탁~! 꾸벅~!

1  COMMENTS
  • Profile
    김영대 1999.10.11 22:41
    송수현 wrote:

    > 안녕하세요 엄청 초보입니다. 꾸벅~!

    > 밑에 보니깐 저랑 비슷한 경우의 질답이 있더군요

    > 탐색기의 버튼처럼 마우스커서가 올라갔을때 변경이 되는 단추를 만들고

    > 싶은데 이번트도 없고 cmmouseenter와 cmmouseleave를 사용하라는데

    > vcl 리소스를 봤거든요 근데 잘 모르겠어요 이미지 위에서 저 두 명령을

    > 사용하는 간단한 예제랑 설명 좀 올려 주시면 정말 많은 도움 되겠습니다.

    > 부탁~! 꾸벅~!



    unit Unit1;



    interface



    uses

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

    StdCtrls;



    type

    TForm1 = class(TForm)

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    CheckBox1: TCheckBox;

    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);

    if Message.LParam = Longint(Label2) then

    ChangeColor(Label2, Message.Msg);

    if Message.LParam = Longint(Label3) then

    ChangeColor(Label3, Message.Msg);

    if Message.LParam = Longint(CheckBox1) then

    ChangeColor(CheckBox1, 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;



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

    if Sender is TCheckBox then

    begin

    if (Msg = CM_MOUSELEAVE) then

    (Sender as TCheckBox).Font.Color := clWindowText;

    if (Msg = CM_MOUSEENTER) then

    (Sender as TCheckBox).Font.Color := clRed;

    end;

    end;



    end.