![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Динамически создаваемые компоненты
snake-as © (2008-12-16 12:28:00)Здравствуйте. Есть массив компонентов типа TCheckBox. Там n элементов. Свойство OnClick я присваиваю таким образом CheckBox[i].OnClick := MyClick; Скажите, пожалуйста, как узнать номер компонента на котором кликнул пользователь? Заранее спасибо!
ivak (2008-12-16 12:55:00) [1]
CheckBox[i].OnClick := MyClick;
procedure TForm1.MyClick(Sender : TObject)
begin
if Sender is TCheckBox
then with TCheckBox(Sender) do begin
. . .
end;
end;
snake-as (2008-12-16 12:53:00) [2]Все, извините, все получилось. Сижу через мобильник, очень медленно в интернете. Поэтому пока гружу страницу, здесь уже кучу всего написали и моя запись становится неактуальной. Всем спасибо!
snake-as (2008-12-16 12:50:00) [3]Так не получается почему-то. Пишет, что не знаю такого свойства Tag
Ega23 (2008-12-16 12:46:00) [4]Ну, например, добавить ещё строчку:
CheckBox[i].OnClick := MyClick;
CheckBox[i].Tag := i;
procedure TForm1.MyClick(Sender : TObject)
begin
ShowMessage('Номер чекбокса - ' + IntToStr(TCheckBox(Sender).Tag));
end;
Amoeba (2008-12-16 12:43:00) [5]
> snake-as © (16.12.08 12:38) [5]
>
> Спасибо! А другого варианта нет, без тэга?
С использованием Tag - наиболее эффективно.
Есть и другой, только он сложнее, кода больше и выполняться будет дольше. А это тебе надо?
clickmaker (2008-12-16 12:43:00) [6]есть
for i := 0 to High(CheckBox) do
if (CheckBox[i] = Sender) then
ShowMessage("зёма я "+ TCheckBox(Sender).name);
Сергей М. (2008-12-16 12:43:00) [7]А собссно, зачем тебе этот индекс понадобился ?
Сергей М. (2008-12-16 12:42:00) [8]
> другого варианта нет, без тэга?
Это самый очевидный, быстродостижимый и эффективный (с т.з. производительности) вариант.
На то, кстати, св-во Tag и предоставляется, чтобы хранить в нем пользовательскую инф-цию.
snake-as (2008-12-16 12:38:00) [9]Спасибо! А другого варианта нет, без тэга?
tesseract (2008-12-16 12:37:00) [10]
> войство OnClick я присваиваю таким образом CheckBox[i].OnClick
> := MyClick
CheckBox[i].tag = i;
В onclick
ShowMessage("зёма я "+ CheckBox[Sender.tag].name);
snake-as (2008-12-16 12:37:00) [11]Извините, да, индекс в массиве.
Сергей М. (2008-12-16 12:36:00) [12]
> Есть массив
Элемены массива индексируются, а не нумеруются.
Индекс не всегда тоже самое что и номер.
Palladin (2008-12-16 12:31:00) [13]Что такое "номер компонента" ?