조은 만남
다음은 마우스의 포커스를 체크하여 그림을 올려주는 예입니다.
*-> 소스
private
{ Private declarations }
procedure WndProc(var Message: TMessage); override;
procedure TW001F.WndProc(var Message: TMessage);
begin
if Message.LParam = Longint(SB_Grp1) then
begin
if Message.Msg = CM_MOUSELEAVE then SB_Grp1.Glyph := GRP_Right_F.Glyph
else if Message.Msg = CM_MOUSEENTER then SB_Grp1.Glyph := GRP_Right_T.Glyph;
end;
inherited;
end;
*-> 설명
SB_Grp1,GRP_Right_T, GRP_Right_F : TSpeedButton
폼위에다가 TSpeedButton을 올려놓으면 문제 없이 원하는 그림이 나오는데....
근데, 판넬위에다가 TSpeedButton을 올리면 왜 안되죠 ?
즉, CM_MOUSEENTER, CM_MOUSELEAVE는 W001F 객체에 메세지가 가는 것이지
Panel 객체에 메세지가 가는 것이 아닙니다.
아마 마우스의 이동에 따라 이미지를 다르게 보여줄 목적 같은데요.
TSpeedButton을 상속받아서 새로운 컴포넌트를 만들어야 합니다.
가장 무난한 방법은 자료실에 있는 다른 컴포넌트들을 설치해서 사용하시는 것입니다.
코스모 wrote:
>
> 조은 만남
> 다음은 마우스의 포커스를 체크하여 그림을 올려주는 예입니다.
>
> *-> 소스
> private
> { Private declarations }
> procedure WndProc(var Message: TMessage); override;
>
> procedure TW001F.WndProc(var Message: TMessage);
> begin
> if Message.LParam = Longint(SB_Grp1) then
> begin
> if Message.Msg = CM_MOUSELEAVE then SB_Grp1.Glyph := GRP_Right_F.Glyph
> else if Message.Msg = CM_MOUSEENTER then SB_Grp1.Glyph := GRP_Right_T.Glyph;
> end;
> inherited;
> end;
>
>
> *-> 설명
> SB_Grp1,GRP_Right_T, GRP_Right_F : TSpeedButton
> 폼위에다가 TSpeedButton을 올려놓으면 문제 없이 원하는 그림이 나오는데....
> 근데, 판넬위에다가 TSpeedButton을 올리면 왜 안되죠 ?
>
>
>