Вниз
Скачать: CL | DM;

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

← →
Anton :-))   (2006-03-01 07:57) [0]

Добрый день! Вопрос в следующем:
в 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;

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


← →
ЮЮ ©   (2006-03-01 08:01) [1]

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

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


← →
ЮЮ ©   (2006-03-01 08:04) [2]

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


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

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

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

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


← →
Mikhail V ©   (2006-03-01 08:28) [4]

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


← →
Anton :-))   (2006-03-01 08:38) [5]

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



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.026 c
2-1141394155
Fenix
2006-03-03 16:55
2006.03.19
Savedialog. Проблема с расширениями.


1-1139611982
LordOfRock
2006-02-11 01:53
2006.03.19
Как сделать файл с самыми разными данными?


3-1138186334
alenamc
2006-01-25 13:52
2006.03.19
Проблема c BookMark


3-1138173453
flad
2006-01-25 10:17
2006.03.19
Oracle-TOAD, Interbase- что?


2-1141484258
rolex
2006-03-04 17:57
2006.03.19
Нужно ли выгружать переменные?




   Наверх