우선 아래와 같이 콤포넌트를 구성하여 사용하실 수도 있고요..
이것을 귀찮으시면..
아래 제가 이미 올린 답변이 있는데..
(이와 같은 질문은 상당히 여러번 나오는 것 같군요..)
우선 콤포넌트는 아래 소스가 있으니 참고 하세요..
어느 분이 올리셨더라..
여하튼 그분이 올리신 것을 조금 수정했습니다..
* 제가 지금 델파이를 사용할 수가 없어서..
태스트는 해보지 않았습니다..
오타가 나있을 수도 있겠네요..
* 간단한 코딩의 예제는 3002번에 있습니다..
게시판 번호가 바뀌었을 때에는 GRCSB로 올라온 것 중..
'마우스'를 검색하세요
Property ColorOn : 마우스가 라벨위에 올라왔을 때의 색
Property ColorOff : 마우스가 라벨 밖으로 갔을 때의 색
Property ColorDown : 마우스 버턴이 눌러졌을 때의 색
Property LightOn : 마우스로 인한 색의 변화 동작 여부,
Ture로 해주셔야 동작합니다.
From 류..
---------
* 소스
unit LabelBtn;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
TLabelBtn = class(TLabel)
private
{ Private declarations }
FColorOn : TColor;
FColorOff : TColor;
FColorDown : TColor;
FTagStr : String;
FLightOn : Boolean;
ButtonDowned : Boolean;
Procedure MouseEnter (var msg: TMessage); message CM_MOUSEENTER;
Procedure MouseLeave (var msg: TMessage); message CM_MOUSELEAVE;
protected
{ Protected declarations }
public
{ Public declarations }
Constructor Create(AOwner:TComponent); Override;
procedure doOnMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure doOnMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
published
{ Published declarations }
Property ColorOn : TColor Read FColorOn Write FColorOn;
Property ColorOff : TColor Read FColorOff Write FColorOff;
Property ColorDown : TColor Read FColorDown Write FColorDown;
Property TagStr : String Read FTagStr Write FTagStr;
Property LightOn : Boolean Read FLightOn Write FLightOn Default False;
end;
procedure Register;
implementation
Uses
DsgnIntf, RyuAbout;
procedure Register;
begin
RegisterComponents('i2Max', [TLabelBtn]);
end;
Constructor TLabelBtn.Create(AOwner:TComponent);
Begin
Inherited Create(AOwner);
ButtonDowned:= False;
Self.OnMouseDown:= doOnMouseDown;
Self.OnMouseUp:= doOnMouseUp;
End;
procedure TLabelBtn.doOnMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
If not FLightOn then Exit;
Self.Font.Color:= FColorDown;
ButtonDowned:= True;
end;
procedure TLabelBtn.doOnMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
If not FLightOn then Exit;
Self.Font.Color:= FColorOn;
ButtonDowned:= False;
end;
procedure TLabelBtn.CMMouseEnter (var msg: TMessage);
begin
Font.Color := FColorOn;
end;
procedure TLabelBtn.CMMouseLeave (var msg: TMessage);
begin
If not ButtonDowned then
Font.Color := FColorOff;
end;
end.
|