Also ich weiß nicht wie das mit dem "AcceptControls" in deinem Thread ausschaut. Aber ich leite die "Containerkomponente" ja von TCustomPanel ab und dieses sollte das bereits gesetzt haben. In Deinem Fall denke ich, ist das setzen des Wertes im Konstruktor nach dem inherited evtl. etwas spät - vielleicht in CreateParams?
Anyway, ich hab's im Konstruktor meiner Kompo nun so gemacht (Achtung Pseudocode aus dem Kopf - hab's gerade nicht hier greifbar):
Delphi-Quellcode:
type TSlidePanel = class(TCustomPanel)
private
FChild: TPanel;
...
published
property ControlPanel: TPanel read FChild write SetChild;
end;
procedure TSlidePanel.Create(AOwner: TComponent); // override !
var f: TCustomForm;
begin
inherited Create(AOwner);
...
if (csDesigning in ComponentState) and not assigned(FChild) then begin
f:= nil;
if assigned(AOwner) then begin
if AOwner.inheritsFrom(TCustomForm) then
f:= TCustomForm(AOwner)
else
f:= GetParentForm(AOwner);
end else
f:= GetParentForm(Self);
if assigned(f) then begin
FChild:= TPanel.Create(f);
FChild.Parent:= Self;
...
if f.Designer<>nil then
f.Designer.Modified;
end;
end;
...
end;
...wobei FChild über eine public published property zugänglich ist.
So geht's eigentlich ganz gut. TPageControl scheint das Hinzufügen von TTabSheets auch ähnlich zu handhaben. Beim Hinzufügen im Designer der
IDE wird autom. das ChildPanel als Objekt des besitzenden Forms erzeugt und steht mit allen hinzugefügten Objekten auch im
DFM.
Michael