|
#1
|
||||
|
||||
TShape OnDblClick
Как реализовать в TShape OnDblClick?
|
#2
|
|||
|
|||
Поскольку:
TShape = class(TGraphicControl) TGraphicControl = class(TControl) А у TControl есть соотв.обработчик: property OnDblClick: TNotifyEvent read FOnDblClick write FOnDblClick; То можно сделать наследника от TShape и "проявить" это свойство. Примерно так: Код:
Type TMyShape = class(TShape) published property OnClick; property OnDblClick; //вот это оно и есть end; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private public MyShape1 : TMyShape; procedure MyShape1DblClick(Sender: TObject); //это объявление на уровне формы end; implementation procedure TForm1.FormCreate(Sender: TObject); begin //----------------------------- //Тест MyShape1:=TMyShape.Create(Self); MyShape1.Parent:=Self; MyShape1.OnDblClick:=MyShape1DblClick; //----------------------------- end; procedure TForm1.MyShape1DblClick(Sender: TObject); //это реализация на уровне формы begin ShowMessage('Двойной щелчок мышкой по MyShape1'); end; |
#3
|
||||
|
||||
если на форме уже лежит Shape1, то:
Код:
unit Unit1; interface uses Dialogs, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, ExtCtrls; type TForm1 = class(TForm) Shape1: TShape; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } FWndMethod: TWndMethod; procedure Lost(var Message: TMessage); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin FWndMethod:=Shape1.WindowProc; Shape1.WindowProc:=Lost; end; procedure TForm1.Lost(var Message: TMessage); begin FWndMethod(Message); if Message.Msg=WM_LBUTTONDBLCLK then MessageBox(Handle, 'WM_LBUTTONDBLCLK', 'TForm1', MB_OK); end; end. Пишу программы за еду. __________________ |
#4
|
||||
|
||||
NumLock
Большое спасибо! все работает!!! |