Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как определить по какому из объектов был нанесен удар мышью?


Anton :-)) ©   (2006-03-01 07:57:00) 

Добрый день! Вопрос в следующем:
в run-time добавляется некоторое количество объектов в форму,
как определить в процессе работы программы, по какому из этих объектов был нанесен удар мышью?

//Действия, при нажатии на любую из созданных label:
procedure tform1.Label_Click(sender:tobject);
begin
 beep;
end;

//Вставляем в panel1 n-ное количество label и устанавливаем некоторые их свойства:
for i:=1 to n do
 begin
   msg_label[i]:=tlabel.Create(form1);
   panel1.InsertControl(msg_label[i]);
   msg_label[i].Caption:='Caption';
   msg_label[i].Left:=4;
   msg_label[i].Top:=2;
   msg_label[i].Height:=20;
   msg_label[i].Width:=100;
   msg_label[i].OnClick:=form1.Label_Click; //обработка удара мыши по label
 end;

Заранее спасибо!


Anton :-))   (2006-03-01 08:38:00) [1]

Супер! Это как раз то, что доктор прописал! Огромное спасибо.
И с наступлением весны всех, кто не жалеет времени, помагая новичкам!


Mikhail V   (2006-03-01 08:28:00) [2]

...
msg_label[i].Parent := Self;
msg_label[i]. Tag := i;
...
TLabel(Sender).Caption := 'Меня ударили мышью ' + IntToStr(Tag);


Anton :-))   (2006-03-01 08:21:00) [3]

Да, забыл  msg_label[i].Top домножить на какой-то коэффициент и i (индекс цикла).

Попробовал предложенный немного выше вариант, действительно все получается. Спасибо.

А как наиболее просто определить по какой имненно (по счтеу) label щелбанули? Т.е. получить порядковый номер избитой label...


ЮЮ   (2006-03-01 08:04:00) [4]

З.Ы. зачем n экземпляров, расположенных в одном и том же месте? ударить сможешь только по верхней


ЮЮ   (2006-03-01 08:01:00) [5]

sender - это и есть тот объект.

procedure tform1.Label_Click(sender:tobject);
begin
TLabel(Sender).Caption := 'Меня ударили мышью';
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо