음... 마우스가 폰트위로 가게 되면 색을 바꾸는 소스에서염...
label이 Form위에 있으면 색이 바뀌는데... 패널이나 이미지위에 가게 되면 색이 안바뀝니다...
아래 소스는 바로 문제의 그 소스인데요...
label이 패널위나 이미지 위에 가도 색이 바뀌게 좀 해주세요...
전 아무리할려구 해도 안됩니다..
여러 고수님들의 가르침...기다리겠어염... 저... 담 주까지는 꼬옥 해야 되여.. 이거 안되면..흑흑 ㅠㅠ 빠른 답변 기다리겠습니다.~~
=========================================================================
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Label1: 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이 Form위에 있으면 색이 바뀌는데... 패널이나 이미지위에 가게 되면 색이 안바뀝니다...
> 아래 소스는 바로 문제의 그 소스인데요...
> label이 패널위나 이미지 위에 가도 색이 바뀌게 좀 해주세요...
> 전 아무리할려구 해도 안됩니다..
> 여러 고수님들의 가르침...기다리겠어염... 저... 담 주까지는 꼬옥 해야 되여.. 이거 안되면..흑흑 ㅠㅠ 빠른 답변 기다리겠습니다.~~
> =========================================================================
> unit Unit1;
>
> interface
>
> uses
> Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
> StdCtrls, ExtCtrls;
>
> type
> TForm1 = class(TForm)
> Label1: 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.
편법이지만 간단한 방법을 알려드리죠.
만약 Label1이 Panel위에 있다면
Panel의 MouseMove 이벤트 핸들러에 아래처럼 쓰고,
Label1.Font.Color:= clWindowText;
Label1의 MouseMove 이벤트 핸들러에 아래처럼 쓰시면 됩니다.
Label1.Font.Color:= clBlue;
아래 경부님의 답변처럼 하면 아마도..
판넬위로 마우스가 가면 무조건 Label의 색깔이 변할거 같습니다만..
테스트는 못해 보았습니다.
그럼.. 즐거운 프로그래밍 하세요~