Hallo,
@einbeliebigerName: alles so, wie oben beschrieben, hatte nicht geschnallt, daß es in dem einen Fall um's Speichern in's Formular ging.
Interessant ist, daß wenn man in der
IDE-Umgebung
Delphi-Quellcode:
procedure TTestpanel_UA.FilterGetChildren(Child: TComponent);
begin
end;
wieder auskommentiert, auf dem Formular die zusätzliche Checkbox erhalten bleibt, zur Laufzeit ist sie dann weg - und erst recht, wenn das Formular gespeichert wurde.
Problem gelöst - danke an einbeliebigerName!
Nebenher - beim Programmieren von Objekten taucht einem ja ständig nach der einen die nächste Frage vor den Füßen auf:
Delphi-Quellcode:
{...}
published
{ published declarations }
property checkA: TCheckBox read FcheckA write Fchecka;
property ted: TEdit read Fted write Fted;
constructor create(AOWNER:tcomponent);override;
{!} procedure oncheckboxclick(Sender: TObject);virtual;
constructor TTestpanel_UA.create(AOWNER: tcomponent);
begin
{...}
FcheckA.OnClick:=oncheckboxclick;
AutoSize:=true;
end;
procedure TTestpanel_UA.oncheckboxclick(Sender: TObject);
var oldss,oldsell:integer;
begin
try //geht hier bei der Initialisierung noch schief, da noch kein Fenster da ist
with Fted do begin
oldss:=SelStart;oldsell:=sellength;
setfocus;
selstart:=oldss; SelLength:=oldsell;
end;
except
end;
end;
Also als Reaktion auf Checkboxclick wieder zu Ted zurückkehren und alte Verhältnisse wieder herstellen.
Ist fcheckA.checked=TRUE und speichert man zur Laufzeit testpanel ab und lädt es dann wieder, so geht das
ohne try except schief mit der Meldung: "Fehler beim Lesen von testpanel_ua1.checka.checked: Element Testpanel_ua1 hat kein übergeordnetes Fenster."
Wie kann man ermitteln, wann das übergeordnete Fenster da ist, um soche Ausnahmen zu verhindern?
Ich würde den eigentlich Thread eigentlich als beantwortet markieren wollen - dank der Arbeit von einbeliebigerName, finde aber 'grad nicht, wo das passieren kann ...
Gruß Uwe