Zitat von
TStringlist:
Der Owner des Objektes muss aber nicht zwingend auch sein Parent sein.
Richtig. Das hat aber mit seinem Problem erstmal nichts zu tun.
Zitat von
TStringlist:
Gut vorstellbar wäre z.B. auch die Situation bei der dieses Panel-ComboBox-Objekt selbst wieder auf einem anderen Panel Platz mehmen soll...
Ja, aber selbst wenn. Auch das berührt sein geschildertes Problem nicht. Soll das Panel-Combo-Objekt auf einem Panel2 sitzen, so
könnte er das mit
X:=TMyClass.Create(Panel2); direkt angeben. Panel2 wäre dann Owner und Parent, was ja durchaus machbar wäre. Ich würde das so zwar auch nicht tun, aber möglich ist es.
Ebensogut
könnte man nach dem Erzeugen den Parent verbiegen:
Delphi-Quellcode:
X:=TMyClass.Create(Form1);
X.Parent:=Panel2:
Oder man
könnte im Konstruktor den Parent fest einbrennen:
Delphi-Quellcode:
constructor TMyClass.Create(Compo:TComponent);
begin
inherited;
parent:=Panel2;
combo:=TCombobox.Create(self);
combo.Parent:=self;
end;
Als letztes
könnte man auch einen Parent getrennt mit übergeben (so würde ich es wahrscheinlich machen):
Delphi-Quellcode:
X:=TMyClass.Create(Form1, Panel2);
...............
constructor TMyClass.Create(Compo:TComponent; WinC: TWinControl);
begin
inherited create(Compo);
parent:=WinC;
combo:=TCombobox.Create(self);
combo.Parent:=self;
end;
Wichtig für sein Problem ist nur, dass die Eigenschaft Parent
direkt beim Erzeugen belegt wird. Mehr wollte ich nicht ausdrücken.