Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Помогите с OnClick'ом


Автор: EtherLord 25.9.2005, 11:34
Суть проблемы вот в чем:
Нужно отловить OnClick в проге и узнать на каком объекте этот Click произошел.
Как?

Автор: kent 25.9.2005, 11:53
Цитата(EtherLord @ 25.9.2005, 11:34)
Суть проблемы вот в чем:
Нужно отловить OnClick в проге и узнать на каком объекте этот Click произошел.
Как?

Заведи логическую переменную, и при нажатии кнопки присваивай ей True, после этого проверяй если значение перменной True, значит кнопка была нажата...

Автор: Pakshin A. S. 25.9.2005, 11:58
Сделать один OnClick и присвоить его всем остальным компонентам... Апотом различать компоненты по Sender'у достаточно просто...

Автор: EtherLord 25.9.2005, 12:04
До этого я уже сам допер, вот только как это реализовать. smile
Заранее спасибо.

Автор: kent 25.9.2005, 14:42
Вот как то так:
Код

var
  Form1: TForm1;
  But1Click : Boolean;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
     But1Click := True;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
     if But1Click then begin
       Form1.Caption := 'Нажата кнопка  Button1';
       But1Click := False;
     end;
end;


Автор: FRAGNATIC 25.9.2005, 14:51
а может уж лучше тогда завести строковую переменую и в каждом онклик присваиваеть ей имя Sender'a )

Автор: EtherLord 25.9.2005, 14:58
Вы меня немного не поняли. Lonley Delphist понял правильно. Мне нужно реакцию вообще на клик мыши. А потом уже в обработчике нужно выяснить на каком объекте был совешен клик. Вот так вот. Если не тудно, то пусть Lonley Delphist напишет код реализации своей вышеуказанной идеи. smile

Автор: Pakshin A. S. 25.9.2005, 15:07
Цитата(EtherLord @ 25.9.2005, 15:58)
Вы меня немного не поняли. Lonley Delphist понял правильно. Мне нужно реакцию вообще на клик мыши. А потом уже в обработчике нужно выяснить на каком объекте был совешен клик. Вот так вот. Если не тудно, то пусть Lonley Delphist напишет код реализации своей вышеуказанной идеи

smile smile smile

Код

procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Sender is TLabel
   then
    ShowMEssage((Sender as TLabel).Name);
  if Sender is TEdit
   then
    ShowMEssage((Sender as TEdit).Name);
  if Sender is TButton
   then
    ShowMEssage((Sender as TButton).Name);
end;


Немного длинно... Может есть еще функция по определению типа нашего Sender'а?

Автор: EtherLord 25.9.2005, 15:24
Спасибо огромное. Это то, что мне нужно. smile smile smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)