Q&A

  • 마우스가 위로 가면 버튼 색상이 바뀌게
델 고수님들의 도움이 필요합니다.



마우스가 위로 가면 버튼 색상이 바뀌게 하려면 어떻게 해야 되지요....

당연히 마우스가 버튼에 없을때는 정상적인 색상이 구요...

3  COMMENTS
  • Profile
    홍세비 2001.01.12 20:44
    freelab wrote:

    > 델 고수님들의 도움이 필요합니다.

    >

    > 마우스가 위로 가면 버튼 색상이 바뀌게 하려면 어떻게 해야 되지요....

    > 당연히 마우스가 버튼에 없을때는 정상적인 색상이 구요...



    안녕하세여~ 홍세빕니다. 아래 소스를 참고하시길...



    unit Unit1;



    interface



    uses

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

    StdCtrls, Buttons;



    type

    TForm1 = class(TForm)

    BitBtn1: TBitBtn;

    procedure FormCreate(Sender: TObject);

    procedure FormDestroy(Sender: TObject);

    private

    { Private declarations }

    FOldWndProc : TWndMethod;

    procedure BtnWndProc( var Message : TMessage);

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;



    implementation



    {$R *.DFM}



    { TForm1 }



    procedure TForm1.BtnWndProc(var Message: TMessage);

    begin

    FOldWndProc(Message);

    case Message.Msg of

    CM_MOUSEENTER : BitBtn1.Font.Color := clBlue;

    CM_MOUSELEAVE : BitBtn1.Font.Color := clBlack;

    end;

    end;



    procedure TForm1.FormCreate(Sender: TObject);

    begin

    FOldWndProc := BitBtn1.WindowProc;

    BitBtn1.WindowProc := BtnWndProc;

    end;



    procedure TForm1.FormDestroy(Sender: TObject);

    begin

    BitBtn1.WindowProc := FOldWndProc;

    end;



    end.



  • Profile
    xdelphi 2001.01.09 20:50
    freelab wrote:

    > 델 고수님들의 도움이 필요합니다.

    >

    > 마우스가 위로 가면 버튼 색상이 바뀌게 하려면 어떻게 해야 되지요....

    > 당연히 마우스가 버튼에 없을때는 정상적인 색상이 구요...





    아래와 같이 한번해보세요



    -------아 래---------





    unit Unit1;



    interface



    uses

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



    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.

  • Profile
    액션가면 2001.01.09 20:05


    안녕하세염~



    아주 좋은 예로 flatstyle컴포넌트 버튼이 있답니다..

    colorfocus프로퍼티가 있는데 원하시는 부분같네여..

    오픈소스인 만큼 소스를 한번 보셨으면 합니다..

    여기 자료실에도 있습니다.

    그럼 좋은하루되세여~





    freelab wrote:

    > 델 고수님들의 도움이 필요합니다.

    >

    > 마우스가 위로 가면 버튼 색상이 바뀌게 하려면 어떻게 해야 되지요....

    > 당연히 마우스가 버튼에 없을때는 정상적인 색상이 구요...