C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[406] [답변] 재질문..(쉰들러님의 답변이 이해가 안가요)/프포
류종택 [ ] 5377 읽음    1998-06-14 06:23
우선 아래와 같이 콤포넌트를 구성하여 사용하실 수도 있고요..
이것을 귀찮으시면..
아래 제가 이미 올린 답변이 있는데..
(이와 같은 질문은 상당히 여러번 나오는 것 같군요..)
우선 콤포넌트는 아래 소스가 있으니 참고 하세요..
어느 분이 올리셨더라..
여하튼 그분이 올리신 것을 조금 수정했습니다..

* 제가 지금 델파이를 사용할 수가 없어서..
  태스트는 해보지 않았습니다..
  오타가 나있을 수도 있겠네요..

* 간단한 코딩의 예제는 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.


+ -

관련 글 리스트
405 [질문] 재질문..(쉰들러님의 답변이 이해가 안가요)/프포 horong 5117 1998/06/14
406     [답변] 재질문..(쉰들러님의 답변이 이해가 안가요)/프포 류종택 5377 1998/06/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.