![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Отслеживание нажитий на динамически-формируемые элементы формы [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, осталость только его типизировать