AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Wann sind objecte auf der IDE fertig initialisert?
Thema durchsuchen
Ansicht
Themen-Optionen

Wann sind objecte auf der IDE fertig initialisert?

Ein Thema von DrUArn · begonnen am 27. Feb 2018 · letzter Beitrag vom 28. Feb 2018
 
DrUArn

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

AW: Wann sind objecte auf der IDE fertig initialisert?

  Alt 27. Feb 2018, 22:57
@ Himitsu,
danke für den Tip (das habe ich schon lange gesucht).


Meine Lösung nun:
für alles spätere
Delphi-Quellcode:
// ....
   published
   Procedure loaded;override;
// ...


procedure TSimpTestRich_UA.loaded;
begin
  inherited;
  if ReadyForTmp then createTmpMemo else deleteTmpMemo //je nach Wert von ReadyForTmp die Objecte laden oder löschen
end;

in den Settern (wobei ich die Definition von CSLOAding bzw. CSReading in meiner Hilfe nicht finden kann):
Delphi-Quellcode:
procedure TSimpTestRich_UA.SetShowpts(const Value: tshowOpts_UA);
begin
  FShowOpts:=Value;

  if not(csloading in ComponentState) then
  // if not(csreading in ComponentState) then exit;
  begin
      if ShowSubRichEd_UA in ShowOpts then createsubriched
      else deletesubriched;
  end;
{
    if ShowSubRichEd_UA in ShowOpts then SubRichEd.Show
    else SubRichEd.hide;
}


// geht beim setzten von ShowSubriched in der IDE nicht - hat noch kein Fenster
// if ShowSubRichEd_UA in ShowOpts then subriched.lines.add('bin sichtbar')
// else subriched.lines.add('bin UNsichtbtar');


end;
Aber: in meinem Beispiel ist "csLoading in compoentstate" immer true - d.h. an dieser Stelle wird das Objekt nicht erzeugt oder gelöscht!!, lasse ich die Prüfung weg, wird die Initialisierung durchgeführt - nur weiß ich eben da nicht, ob z.B. TSimpTestRich_UA.Parent schon gesetzt ist usw. -in meinem Beispiel ist das alles schon geschehen.



und was das löschen von Componenten (hier SubRichEd) bertrifft:
- stimmt: Subriched.free darf man ungeprüft anwenden.
- freeandnil(SubRichEd); geht nicht !! da Fehler E2197 Konstantenobject kann nicht als Var-Parameter weitergegeben werden

- bleibt die Frage, muß ich in meiner Löschprocedure
Delphi-Quellcode:
procedure TSimpTestRich_UA.DeleteSubrichEd;
begin
subriched.free;//kann auch auf nil angewendet werden
subriched:=nil; //sonst würde bei Eerneutem löschen wieder versucht zu löschen obowohl das object gelöscht ist
//freeandnil(SubRichEd); //geht nicht da E2197 Konstantenobject kann nicht als Var-Parameter weitergegeben werden
end;
subriched:=nil; setzen.

Ich denke ja. Scheinbar kriegt der Owner (TSimpTestRich_UA) nichts von der Löschung mit.
Lasse ich
subriched:=nil;
weg, wird beim nächsten Versuch mit der gleichen Routine ein Fehler ausgelöst (ungültige Zeigeroperation).


Also nochmal
Danke für den Tip

Gruß Uwe

Geändert von DrUArn (27. Feb 2018 um 23:32 Uhr) Grund: ausprobiert
  Mit Zitat antworten Zitat
 

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz