Показать сообщение отдельно
  #3  
Старый 01.07.2020, 13:26
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 660
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

Цитата:
Сообщение от lmikle
При создании визуального объекта тебе надо сохранить в нем ссылку на класс, содержащий твои данные. Например, если ты используешь стандартные компоненты, то у них есть св-во Tag : Integer. Можно поступить так:
1. Создаем свой список объектов, в котором делаем метод function FindByID(AID : Integer) : TCategory - для поиска объекта по его ID.
2. При создании объекта добавляем его в этот список.
3. При создании визуального компонента в его св-ве Tag сохраняем ID объекта.
4. При клике по визуальному компоненту из св-ва Tag вытаскиваем ID и по этому ID находим нужный объект в списке и уже работаем с ним.
Да можно сразу в Tag хранить ссылку на родителя: SomeControl.Tag := Integer(ParentAsTCategory);
И выловить обратно родителя во время события: Parent := TCategory((Sender as TControl).Tag);

Если я ничего не напутал

Upd: Не напутал. На форме кнопка и лейбл:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  TLabel((Sender as TControl).Tag).Caption := 'Ta-da!';
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Button1.Tag := Integer(Label1);
end;
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием