좀 오래된 (?) 질문이고 답변이 나왔으나
저두 의문점이 있어서...
이렇게 답변과 질문을 동시에..^^;
먼저 답변은..
컴퍼넌트를 하나 정의해서 사용하는 것이 좋습니다.
어렵지 않게 구현 할 수 있습니다.
Application을 작성 중에도 컴퍼넌트를 추가할 수 있는데요,
Component->New Component를 해서
Ancestor type을 BitBtn을 선택하고,
Class Name을 BitBtnTemp로 설정하고,
Create Unit을 하십시오.
그리고 아래처럼 추가를 해주면 됩니다.
(위에서 Class Name을 BitBtn으로 했다면 그냥 카피를 해도 무방합니다)
{ 프로그램 소스 }
unit BitBtnTemp;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons;
type
TBitBtnTemp = class(TBitBtn)
Private
FEnterColor : TColor;
FTempColor : TColor;
procedure CMMouseEnter (var msg: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave (var msg: TMessage); message CM_MOUSELEAVE;
published
property EnterColor : TColor read FEnterColor write FEnterColor;
{ 이 부분이 Object Inspector에 나타납니다.
프로그램 동작시 색을 clYellow로 바꾸어 보세요..}
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('CanEasy', [TBitBtnTemp]);
{ CanEasy 대신 자신의 이니셜을 넣으셔도 좋습니다 }
end;
procedure TBitBtnTemp.CMMouseEnter (var msg: TMessage);
begin
FTempColor := Font.Color;
Font.Color := FEnterColor;
end;
procedure TBitBtnTemp.CMMouseLeave (var msg: TMessage);
begin
Font.Color := FTempColor;
end;
end.
이렇게 하면 마우스의 움직임에 대해 세밀한 처리를 할 수 있습니다.
그리고 질문은요..
왜 BitBtn만 Font의 색지정으로 글씨색이 바뀌는 반면
Button의 Font는 지적을 해도 글씨색이 바뀌지 않는가요?
사실 처음에 답변을 Button으로 준비하다 안되더라고요...
[류]님의 답변을 보고 BitBtn으로 고쳐서 이렇게 올립니다. (감사..)
아시는 분 답변을 부탁드립니다.
그럼..
아는 것만 대답하는 주니..
|