Q&A

  • 스피드버튼에 마우스가 가면 Glyph변화 급함
스피드버튼의 flat속성이 true 되어 있습니다.

이때 마우스가 스피드 버튼 위에 가면 스피드 버튼에 있는 bmp과 글자가

다른 bmp파일로, 글씨는 흰색에서 검은 색으로 바꾸고자 합니다.

좀 가르쳐 주세요.

여러 고수님 들께 부탁드립니다.



2  COMMENTS
  • Profile
    김영대 1999.11.27 00:34
    조영욱 wrote:

    > 스피드버튼의 flat속성이 true 되어 있습니다.

    > 이때 마우스가 스피드 버튼 위에 가면 스피드 버튼에 있는 bmp과 글자가

    > 다른 bmp파일로, 글씨는 흰색에서 검은 색으로 바꾸고자 합니다.

    > 좀 가르쳐 주세요.

    > 여러 고수님 들께 부탁드립니다.



    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.







  • Profile
    조영욱 1999.11.27 02:03
    조영욱 wrote:

    > 스피드버튼의 flat속성이 true 되어 있습니다.

    > 이때 마우스가 스피드 버튼 위에 가면 스피드 버튼에 있는 bmp과 글자가

    > 다른 bmp파일로, 글씨는 흰색에서 검은 색으로 바꾸고자 합니다.

    > 좀 가르쳐 주세요.

    > 여러 고수님 들께 부탁드립니다.



    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.







    영대님 감사합니다.

    헌데 panel 위에 스피드 버턴이 있을 경우 어떻게 해야 합니까?

    다시 한번 부탁드립니다.