안녕하세요? 유승우 입니다.
제가 하드 공간이 없는 관계로 (빌더를 잘 모르는 관계로..^^;) 빌더로는 구현 못했구요.
델파이로 제가 구현한게 있으니 그냥 참조 하세요.(빌더랑 거의 비슷할꺼에요)
델파이의 이벤트 만든것(RightClick, RightDoubleClick)이 있으니 참조 하세요.
(밑에 있음) - Component입니다. 버튼..
오브젝트 호출이 포인터로 이루어 지니 그점 유의 하셔서 짜시면 될꺼에요..
PS : Click, DoubleClick이 다른 메세지를 호출하는데, 왜 두 이 벤트를 같이 쓰면
Click만 인식을 하는지 모르겠네요..아시는분 있으면..글좀 올려 주세요.
unit EvButton;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TEvButton = class(TButton)
private
{ Private declarations }
FOnRightClick : TNotifyEvent;
FOnDBRightClick : TNotifyEvent;
Procedure WMRButtonDown(var Message: TWMRButtonDown); message WM_RBUTTONDOWN;
Procedure WMRButtonDblClk(var Message: TWMRButtonDblClk); message WM_RBUTTONDBLCLK;
protected
{ Protected declarations }
Procedure RightClick;
Procedure DBRightClick;
public
{ Public declarations }
published
{ Published declarations }
Property OnRightClick : TNotifyEvent Read FOnRightClick Write FOnRightClick;
Property OnDBRightClick : TNotifyEvent Read FOnDBRightClick Write FOnDBRightClick;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [TEvButton]);
end;
Procedure TEvButton.WMRButtonDown(var Message: TWMRButtonDown);
Begin
inherited;
RightClick;
End;
Procedure TEvButton.WMRButtonDblClk(var Message: TWMRButtonDblClk);
Begin
inherited;
DBRightClick;
End;
Procedure TEvButton.RightClick;
Begin
If Assigned(FOnRightClick) then FOnRightClick(Self);
End;
Procedure TEvButton.DBRightClick;
Begin
If Assigned(FOnDBRightClick) then FOnDBRightClick(Self);
End;
end.
그럼 이만..도움이 될지 모르겠네요.
|