Вставка и удаление компонент
в форму в design-time
Добавлено с компакт диска "Delphi & OnLine Books"
6.11.2001
Каким образом можно отследить вставку и удаление компонент в форму
в design-time? Такая информация могла бы пригодится, если моя компонента
имеет ссылки на другие компоненты (например, как в связке TDateSource,TTable
и др.)
Ответ: Для получения такой информации предназначен метод
procedure Notification (AComponent: TComponent; Operation: TOperation);
virtual;
класса TComponent. Перекрыв его в своей компоненты Вы можете произвести
необходимые действия, в зависимости от значения параметра Operation типа
TOperation = (opInsert, opRemove);
объявленного в модуле Classes. Параметр AComponent - компонента, соответственно
вставлемая или удаляемая, в зависимости от Operation.
Внутри конструктора Create компонента создаю другой
компонент, но Delphi помещает запись о втором компоненте в dfm-файл!
Добавлено с компакт диска "Delphi & OnLine Books"
6.11.2001 У меня такая проблема: я пишу компонент, который внутри себя создаёт
другой компонент. Конструктор первого компонента выглядит примерно так:
constructor TFirstComp.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
SecondComp:=TSecondComp.Create(Owner)
end;
Проблема заключается в том, что при помещении первого компонента на форму
в dfm-файл записывается информация и о втором компоненте тоже. А в pas-файл
- только о первом. Это приводит к конфликтам. Для меня принципиально, чтобы
хозяин у второго компонента был тот же, что и у первого. Как не дать Delphi
поместить запись о TSecondComp в dfm-файл?
Попробуйте сделать так:
constructor TFirstComp.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
SecondComp:=TSecondComp.Create(SELF);
end;
Т.е. дочернему компоненту в качастве владельца передавайте его непосредственного
хозяина.