마우스로 Flat버튼 위에 놓으면 글자색이 다른색으로 바꾸게 하고 싶습니다.
프로퍼티의 ColorFocused로 버튼색깔은 바꿀수 있는데 버튼의 Caption색깔
은 어떻게 바꿔야할지..???? 마우스로 버튼위에다 놓으면 그 버튼의 Caption
의 색깔이 예를들어 검정색에서 흰색으로 바뀐다든지..하여튼
고수님들... 부탁드리겠습니다...
마우스가 버튼에 들어왔을때의 처리는 CM_MOUSEENTER 메세지를 이용해 처리 할 수가 있습니다.
마우스가 버튼에서 빠져나갈때의 처리는 CM_MOUSELEAVE 메세지를 이용해 처리 할 수가 있습니다.
캡션의 색상을 바꾸는것은 Font에서 Color을 변경하면 가능합니다.
procedure TForm1.CMMOUSEENTER(var Message: TMessage);
begin
inherited;
case Message.Msg of
CM_MOUSEENTER:
with Message do
if PtInRect(FlatButton1.BoundsRect, ScreenToClient(Point(Mouse.CursorPos.x, Mouse.CursorPos.y))) then
FlatButton1.Font.Color := clWhite;
end;
end;
procedure TForm1.CMMOUSELEAVE(var Message: TMessage);
begin
inherited;
case Message.Msg of
CM_MOUSELEAVE:
if Not (FlatButton1.Font.Color = clBlack) then
FlatButton1.Font.Color := clBlack;
end;
end;
대충 이런 형태가 되겠죠...
이렇게 짜면 약간의 문제가 있지만 일단 설명이니...
개인적으론 위와 같이 사용하기 보단
WndProc를 오버라이드 하시는게 좋으리라 여깁니다.
FlatButton이란게 원래 OnMouseEnter, OnMouseLeave 이벤트 프로시져가 있는거라면
그냥 거기다가 색상 바꿔주시면되구요.
(델파이4.0, 7.0에는 그런 컴포넌트가 없군요. 기본 컴포넌트가 아닌듯...;)
마우스가 버튼에서 빠져나갈때의 처리는 CM_MOUSELEAVE 메세지를 이용해 처리 할 수가 있습니다.
캡션의 색상을 바꾸는것은 Font에서 Color을 변경하면 가능합니다.
private
procedure CMMOUSEENTER(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMOUSELEAVE(var Message: TMessage); message CM_MOUSELEAVE;
implementation
procedure TForm1.CMMOUSEENTER(var Message: TMessage);
begin
inherited;
case Message.Msg of
CM_MOUSEENTER:
with Message do
if PtInRect(FlatButton1.BoundsRect, ScreenToClient(Point(Mouse.CursorPos.x, Mouse.CursorPos.y))) then
FlatButton1.Font.Color := clWhite;
end;
end;
procedure TForm1.CMMOUSELEAVE(var Message: TMessage);
begin
inherited;
case Message.Msg of
CM_MOUSELEAVE:
if Not (FlatButton1.Font.Color = clBlack) then
FlatButton1.Font.Color := clBlack;
end;
end;
대충 이런 형태가 되겠죠...
이렇게 짜면 약간의 문제가 있지만 일단 설명이니...
개인적으론 위와 같이 사용하기 보단
WndProc를 오버라이드 하시는게 좋으리라 여깁니다.
FlatButton이란게 원래 OnMouseEnter, OnMouseLeave 이벤트 프로시져가 있는거라면
그냥 거기다가 색상 바꿔주시면되구요.
(델파이4.0, 7.0에는 그런 컴포넌트가 없군요. 기본 컴포넌트가 아닌듯...;)