unit
마우스가 컨트롤위에 오면 CM_MOUSEENTER이란 메세지가 발생합니다.또 마우스가 커트롤에서 벗어나면 CM_MOUSELEAVE란 메세지가 발생하죠.
델에서Q&A에서 본 코드입니다.
그런데 제가 델 초보라서 잘 안돼요...
자세히 말하면 모르겠습니다.
이 코드를 보시고 자세한 설명해 주세요...부탁합니다.
interface
uses
()()()()()();
type
()
()
private
FGlyph1:TBitmap;
FGlyph2:TBitmap;
procedure SetGlyph1(const Value:TBitmap);
procedure SetGlyph2(const Value:TBitmap);
protected
procedure CMMouseEnter(var Message:TMessage);Message CM_MOUSEENTER;
Procedure CMMouseLeave(var Message:TMessage);Message CM_MOUSELEAVE;
{ Private declarations }
public
constructor Create(AOwner:TComponent);
destructor Destroy;override
published
property Glyph1:TBitmap read FGlyph1 write SetGlyph1;
property Glyph2:TBitmap read FGlyph2 write SetGlyph2;
{ Public declarations }
end;
var
Video: TVideo;
count : integer;
implementation
constructor TMyBitBtn.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
FGlyph1 := TBitmap.Create;
FGlyph2 := TBitmap.Create;
if Glyph := TBitBtn.Destroy;
end;
begin
FGlyph1.Free;
FGlyph2.Free;
inherited;
end;
procedure TMyBitBtn.CMMouseEnteer(var Message:TMessage);
begin
Glyph.Assign(Glyph1);
end;
procedure TMyBitBtn.CMMouseLeave(var Message:TMessage);
begin
Glyph.Assign(Glyph2);
end;
procedure TMyBitBtn.SetGlyph1(const Value:TBitmap);
begin
FGlyph1.Assign(Value);
end;
procedure TMyBitBtn.SetGlyph2(const Value:TBitmap);
begin
FGlyph2.Assign(Value);
end;
end.
그럼 즐거운 하루 되세요
안녕하세요...
아래 쓰신 코드는 컴포넌트 코드이군요...
TBitBtn 을 상속받아 새 컴포넌트틀 만든 것 같습니다...
굳이 컴포넌트로 만들지 않아도 사용할 수 있습니다.
아래 코드입니다..
델파이는 내부적으로
CM_MOUSEENTER 와 CM_MOUSELEAVE 메시지를 만들어 사용한다.
.....
private
{ Private declarations }
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
.....
procedure TForm1.CMMouseEnter(var Message: TMessage);
begin
//SpeedButton1 영역에 마우스가 들어온다.
if Pointer(Message.lParam) = SpeedButton1
then SpeedButton1.Caption := 'Inside';
end;
procedure TForm1.CMMouseLeave(var Message: TMessage);
begin
//SpeedButton1 영역에서 마우스가 빠져나간다.
if Pointer(Message.lParam) = SpeedButton1
then SpeedButton1.Caption := 'Outside';
end;
SpeedButton1.Caption 대신 SpeedButton1.Glyph 를 이용하면 되겠죠..
그럼.
이빈 wrote:
> unit
> 마우스가 컨트롤위에 오면 CM_MOUSEENTER이란 메세지가 발생합니다.또 마우스가 커트롤에서 벗어나면 CM_MOUSELEAVE란 메세지가 발생하죠.
> 델에서Q&A에서 본 코드입니다.
> 그런데 제가 델 초보라서 잘 안돼요...
> 자세히 말하면 모르겠습니다.
> 이 코드를 보시고 자세한 설명해 주세요...부탁합니다.
>
> interface
> uses
> ()()()()()();
> type
> ()
> ()
> private
> FGlyph1:TBitmap;
> FGlyph2:TBitmap;
> procedure SetGlyph1(const Value:TBitmap);
> procedure SetGlyph2(const Value:TBitmap);
> protected
> procedure CMMouseEnter(var Message:TMessage);Message CM_MOUSEENTER;
> Procedure CMMouseLeave(var Message:TMessage);Message CM_MOUSELEAVE;
>
> { Private declarations }
> public
> constructor Create(AOwner:TComponent);
> destructor Destroy;override
> published
> property Glyph1:TBitmap read FGlyph1 write SetGlyph1;
> property Glyph2:TBitmap read FGlyph2 write SetGlyph2;
> { Public declarations }
> end;
>
> var
> Video: TVideo;
> count : integer;
>
> implementation
> constructor TMyBitBtn.Create(AOwner:TComponent);
> begin
> inherited Create(AOwner);
> FGlyph1 := TBitmap.Create;
> FGlyph2 := TBitmap.Create;
> if Glyph := TBitBtn.Destroy;
> end;
> begin
> FGlyph1.Free;
> FGlyph2.Free;
> inherited;
> end;
> procedure TMyBitBtn.CMMouseEnteer(var Message:TMessage);
> begin
> Glyph.Assign(Glyph1);
> end;
> procedure TMyBitBtn.CMMouseLeave(var Message:TMessage);
> begin
> Glyph.Assign(Glyph2);
> end;
> procedure TMyBitBtn.SetGlyph1(const Value:TBitmap);
> begin
> FGlyph1.Assign(Value);
> end;
> procedure TMyBitBtn.SetGlyph2(const Value:TBitmap);
> begin
> FGlyph2.Assign(Value);
> end;
> end.
> 그럼 즐거운 하루 되세요
>
>