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

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

Динамически создаваемые компоненты


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]

Что такое "номер компонента" ?


Наверх

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