Регистрация ваших кадров в качестве компонента решает как 1., так и 2 .:
- компоненты на фрейме блокируются, когда вы помещаете этот элемент управления фрейма в форму или другой фрейм
- вы получите компонент (фактически: элемент управления), который вы можете создать визуально
Но: есть несколько уловов (которые можно решить, см. Ссылку на статью), из которых наиболее важен этот:
Когда вы помещаете компоненты в свой фрейм, а затем удаляете этот фрейм как компонент в форме или фрейме Delphi, компоненты отображаются на панели структуры.
Проблема в том, что, поскольку они видны на панели структуры, их можно удалить, что приведет к нарушениям доступа.
Хитрость, чтобы решить эту проблему с , не забывая про "веточку" .
Я получил этот ценный урок от Рэя Конопки во время DelphiLive 2009.
Поскольку урок настолько ценен, я написал в нем сообщение в блоге , в котором подробно его описал.
Важнейшая часть - это маленький кусочек кода (подробности в сообщении в блоге):
procedure RegisterFramesAsComponents(const Page: string; const FrameClasses: array of TFrameClass);
var
FrameClass: TFrameClass;
begin
for FrameClass in FrameClasses do
begin
RegisterComponents(Page, [FrameClass]);
RegisterSprigType(FrameClass, TComponentSprig);
end;
end;
Надеюсь, это поможет.
- Йерун