|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Создание динамических объектов
Здравствуйте, помогите, пожалуйста! Создаю объекты в цикле как обратится к конкретному?
Код:
var lb,lbl1:TRzLabel; begin while rc>=0 do begin lb:=TRzLabel.Create(lbl1); lb.Parent:=rpnlRows; lb.Caption:=IntToStr(ip); lb.OnClick:=lbl1OnClick; lb.Left:=l; lb.Top:=10; lb.Cursor:=crHandPoint; l:=l+20; inc(ip); rc:=rc-1000; end end; Код:
procedure TfmDetails.lbl1OnClick(Sender: TObject); begin if Assigned(lb) then lblpgNum.Caption:=lb.Caption; end; Последний раз редактировалось Aristarh Dark, 11.09.2012 в 11:20. |
#2
|
||||
|
||||
Инициализируй свойство Tag, например.
Затем можно написать функцию которая вернет объект по его владельцу и Tag Код:
function GetLabelByTag(AOwner:TComponent; ATag:Integer):TLabel; var i: Integer; begin Result:=nil; for i := 0 to AOwner.ComponentCount-1 do if (AOwner.Components[i] is TLabel) and ((AOwner.Components[i] as TLabel).Tag=ATag) then begin Result:=AOwner.Components[i] as TLabel; Exit; end; end; ЗЫЖ Не забывай проверять на nil значение возвращаемое функцией. Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#3
|
||||
|
||||
Для быстрого и удобного доступа лучше их сложить, например, в ObjectList.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#4
|
|||
|
|||
Всё! Нашла решение! Спасибо за вариант тоже ))
Код:
var lbClick:TLable; begin lbClick := sender as TLabel; if Assigned(lbClick) then begin .... end; end; Последний раз редактировалось Aristarh Dark, 11.09.2012 в 12:31. |
#5
|
|||
|
|||
Лучше так
Код:
begin if Sender is TLabel then lbClick := sender as TLabel else exit; if Assigned(lbClick) then begin .... end; end; |