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

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

Отслеживание нажитий на динамически-формируемые элементы формы [D7, Win95/98, Win2k, WinXP]


ПсихЪ_просто ©   (2004-07-14 17:11:00) 

Возникла сабжевая проблема. Мастера, я динамически создаю, скажем, TLable:

 id := LabelCount;
 inc( LabelCount );
 SetLength( Labels, LabelCount );
 Labels[id] := TLabel.Create( Owner );
 Labels[id].Parent := TWinControl( Owner );
 Labels[id].Alignment := taRightJustify;
 Labels[id].Font.Style := [fsBold];
 Labels[id].Left := x;
 Labels[id].Top := y;
 Labels[id].Width := w;
 Labels[id].Height := h;
 Labels[id].Layout := tlBottom;
 Labels[id].BringToFront();
 Result := id;
// LabelCount - размер массива c TLabel'ами
// Labels - массив TLabel'ов
// Owner - хэндел формы или иного элемента,
// на котором рисуются TLabel'ы

Каждый динамический TLabel имеет свой ID'шник, по которому его можно получить:

function GetLabel( id : integer ) : PLabel;
begin
 Result := @Labels[id];
end;
// PLabel = ^TLabel;


Как мне зафиксировать нажатие на один из TLabel'ов в Labels и как получить ID этого TLabel'а?

Полный исходник можно скачать с этой страницы: http://tzlab.amillo.net/delphi/down/index.htm.Называется P7 Designer.
Извините, прямой ссылки дать не могу из-за дурацкой особенности хостинга.


KSergey   (2004-07-14 18:13:00) [1]

Читаем тут
http://www.delphikingdom.com/helloworld/runtime_comp.htm


Гаврила   (2004-07-14 17:24:00) [2]

Во первых, Plabel тут наверно лишний, зачем указатель на указатель использовать? Достаточно TLabel.
Далее программно присваивается обработчик OnClick всем Label'ам один и тот же
Labels[id].OnClick:=MyLabelClickProcrdure;

Параметром Sender в этот обработчик будет приходить тот самый Label, осталость только его типизировать


Наверх

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