Форум: "Начинающим";
Текущий архив: 2006.03.19;
Скачать: [xml.tar.bz2];
Внизкак определить по какому из объектов был нанесен удар мышью? Найти похожие ветки
← →
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 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.03.19;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.128 c