AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Bester Zeitpunkt zum Zugriff auf WinControls etc.
Thema durchsuchen
Ansicht
Themen-Optionen

Bester Zeitpunkt zum Zugriff auf WinControls etc.

Ein Thema von Satty67 · begonnen am 22. Feb 2009 · letzter Beitrag vom 23. Feb 2009
Antwort Antwort
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#1

Bester Zeitpunkt zum Zugriff auf WinControls etc.

  Alt 22. Feb 2009, 22:32
Hallo,

bisher habe ich WinControls im onCreate des jeweiligen ParentForm initialisiert.

Manche WinControls benötigen aber Daten aus einem anderen Form/DatenModul (bei mir meist nur das DatenModul). Die hab' ich dann im ParentForm.onActivate initialisiert (über Bool nur einmaliger Durchlauf der Initialisierung). Zumindest ging ich bisher davon aus, das MainForm.onActivate erst eintritt, wenn alle anderen Fenster samt enthaltener Objekte fertig initialisiert sind.

Jetzt hatte ich folgenden Fall:

MainForm mit DBGrid. Wird via Datasource/Query/Connection gefüllt, die alle in einem Datenmodul liegen.

Beim Start dann Peng... Zugriffsverletzung. Offenbar ist bei MainForm.onActivate eines der Datenzugriffs-Objekte im DatenModul noch nicht fertig initialisiert. Eine Abfrage, ob das entsprechende Datenzugriffs-Objekt bereit ist, verzögert wegen der nötigen Schleife den Programmstart erheblich.

Ich hab' zwei Alternativen getestet:

1) Timer im MainForm ruft eine Methode auf, die die Initialisierung vornimmt (die vorher in MainForm.onActivate war)
2) Application.onActivate enhält jetzt den Code von MainForm.onActivate

Beide Versionen funktionieren.

Wann ist sichergestellt, das alle Objekte aller automatisch erzeugten Fenster fertig erzeugt sind?
  Mit Zitat antworten Zitat
gemeni2005

Registriert seit: 2. Jul 2007
Ort: München
38 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Bester Zeitpunkt zum Zugriff auf WinControls etc.

  Alt 23. Feb 2009, 05:30
Hallo,
ein sicherer Weg ist das Abwarten, bis die Botschaftswarteschlange arbeitet - diese wird erst von Application.Run initialisiert. Du könntest dir also eine UM_Nachricht an deine Mainform senden. Wenn diese ankommt, ist Application.Run angelaufen und somit alle automatisch erzeugten Formulare wurden vorher geladen und initialisert.
Robert
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
416 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Bester Zeitpunkt zum Zugriff auf WinControls etc.

  Alt 23. Feb 2009, 05:44
Warum läßt Du die Formulare / Datenmodule automatisch erzeugen? Ich würde das nur für das Hauptformular machen und den Rest per Hand im OnCreate des Hauptformulars (Datenmodule die sofort benötigt werden) bzw. erst bei Bedarf. Außerdem is der OnActivate ein schlechter Moment: schreibst ja selbst, daß Du das mehrmalige Erzeugen dann unterbinden mußt. Besser OnCreate zw. OnShow.

Gruß,
Uli
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz