![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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.
|
|
#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; |