Q&A

  • Flat버튼 글자색 바꾸기
마우스로 Flat버튼 위에 놓으면 글자색이 다른색으로 바꾸게 하고 싶습니다.
프로퍼티의 ColorFocused로 버튼색깔은 바꿀수 있는데 버튼의 Caption색깔
은 어떻게 바꿔야할지..???? 마우스로 버튼위에다 놓으면 그 버튼의 Caption
의 색깔이 예를들어 검정색에서 흰색으로 바뀐다든지..하여튼
고수님들... 부탁드리겠습니다...
1  COMMENTS
  • Profile
    소울해커 2004.01.08 01:00
    마우스가 버튼에 들어왔을때의 처리는 CM_MOUSEENTER 메세지를 이용해 처리 할 수가 있습니다.
    마우스가 버튼에서 빠져나갈때의 처리는 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에는 그런 컴포넌트가 없군요. 기본 컴포넌트가 아닌듯...;)