Показать сообщение отдельно
  #22  
Старый 04.08.2011, 03:07
Fox Mulder Fox Mulder вне форума
Прохожий
 
Регистрация: 19.01.2011
Сообщения: 16
Репутация: 10
По умолчанию

мне нужно было решить две проблемы
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 появляется единица только после повторного нажатия на компонент
Ответить с цитированием