мне нужно было решить две проблемы
1 - чтобы в инспекторе объектов можно было задать popupmenu. эта проблема решилась благодаря
angvelem
2 - прописать реакцию на нажатия кнопки мыши. но тут чет так и не пашет.
сейчас у меня прописано так
Код:
private
{ Private declarations }
FOnMouseDown: TNotifyEvent;
...
protected
{ Protected declarations }
procedure WMMouseDown(var Msg : TMessage); message WM_LBUTTONDOWN;
...
published
{ Published declarations }
property OnMouseDown: TNotifyEvent read FOnMouseDown write FOnMouseDown;
...
procedure TMyComponent.WMMouseDown(var msg: TMessage);
begin
inherited;
if Assigned (FOnMouseDown) then FOnMouseDown(Self);
x - Msg.LParamLo
y - Msg.LParamHi
end;
но проблема в том что при таком коде, во время создания программы с моим компонентом, если шелкнуть в инспекторе по событию OnMouseDown то появляется следующие:
Код:
procedure TForm1.MyComponent1MouseDown(Sender: TObject);
begin
end;
тоесть нету ни x, ни y, ни button.
по листингу
http://www.delphisources.ru/forum/sh...6&postcount=12
у меня тоже чтото не получается.
сейчас всплыла и вовсе любопытная и неприятная вещь
как я понял код прописаный в
Код:
procedure TForm1.MyComponent1MouseDown(Sender: TObject);
begin
end;
во время проектирования программы, выполняется ДО кода выполняемого в событие OnMouseDown который прописан внутри компонента
тоесть допустим я пишу внутри компонента:
первый код
Код:
procedure TMyComponent.WMMouseDown(var msg: TMessage);
var int1:integer;
begin
inherited;
if Assigned (FOnMouseDown) then FOnMouseDown(Self);
int1:=1;
end;
во время создания программы с моим компонентом пишу:
второй код
Код:
procedure TForm1.MyComponent1MouseDown(Sender: TObject);
begin
Edit1.Text:=strtoint(int1);// на самом деле я конечно передаю это значение подругому, тут я так написал для простоты
end;
и ожидаю увидить в Edit1 значение "1", но это не происходит как я понимаю потому что второй код выполняется ДО первого. в итоге в Edit появляется единица только после повторного нажатия на компонент