Einzelnen Beitrag anzeigen

DrUArn

Registriert seit: 20. Mär 2003
130 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: readcomponent(ResFile) "heckt" Subkomponenten

  Alt 7. Mär 2012, 19:14
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

Geändert von DrUArn ( 7. Mär 2012 um 19:20 Uhr)
  Mit Zitat antworten Zitat