![]() |
Weiß einer in welcher Folge die Formulare freigegeben werden
Nehmen wir ein Programm mit fünf Formularen an: Form1, Form2, Form3, Form4 und Form5. Form1 ist das Mainformular. Nun beende ich das Programm in dem ich Form1 schließe. In welcher Reihenfolge werden nun die Fenster freigegeben?
- nach Application.Components Folge? - wie sie erstellt wurden? - nach Screen.Forms in der Z-Ordnung Folge? - es wird eine Message an alle Fenster geschickt und jeder schließt für sich alleine? |
Re: Weiß einer in welcher Folge die Formulare freigegeben we
Pack einfach in das OnDestroy einen Hinweis und du wirst es sehen. Zudem hängt es auch davon ab wie du die Formulare erzeugst. Also ob du einen Owner angibst oder nicht und was du als Owner angibst. Auch der Parent spielt eine Rolle. Wenn du einem Form einen Parent zuweist wird das Form auch freigegeben bevor der Parent zerstört wird.
|
Re: Weiß einer in welcher Folge die Formulare freigegeben we
Zitat:
|
Re: Weiß einer in welcher Folge die Formulare freigegeben we
Ich hab gerade festgestellt, daß es auch aufwändigen nicht geht. Ich wollte das schließen in einer Logdatei protokollieren. Bis auf Form1 wurde nichts protokolliert.
|
Re: Weiß einer in welcher Folge die Formulare freigegeben we
Was hälst du von einem Blick in den Quellcode? Dort steht, das Du mit deiner ersten Annahme Recht hast.
|
Re: Weiß einer in welcher Folge die Formulare freigegeben we
Aber Application.Components funktioniert doch nur wenn als Owner die Application angegeben wurde?! Und ob Nachrichten im OnDestroy funktionieren hängt von der Delphiversion ab die im Profil ja leider nicht angegeben wurde.
|
Re: Weiß einer in welcher Folge die Formulare freigegeben we
Zitat:
Ich hab jetzt etwas experimentiert und in jeden FormDestroy diesen einfachen Code eingefügt:
Delphi-Quellcode:
Jedes Fenster erzeugt jetzt beim schließen eine Textdatei und die Folge ist: Form1, Form2, Form3, Form4 und zuletzt Form5.
with TStringList.Create do
try Add(Self.Name); SaveToFile(ExtractFilePath(ParamStr(0)) + Self.Name + '.txt'); finally Free end; Dabei ist es egal wie die Formulare in der Projektdatei erstellt wurden, sie kommen alphabetisch raus. Und nur zur Information, ist der Ordner in Explorer offen, werden die Dateien nur angehängt und nicht alphabetisch sortiert. Die Sortierung erfolgt also nicht im Explorer. |
Re: Weiß einer in welcher Folge die Formulare freigegeben we
Wie hast du denn die Fenster erzeugt? Automatisch erzeugen lassen? Denn das sollte auch eine Rolle spielen.
Wenn dir Reihenfolge des Freigebens für dich eine Rolle spielt solltest du dich selbst um Erzeugen und Freigeben kümmern da nur so sicher gestellt ist das es sich bei der nächsten Delphiversion noch genau so verhält und keine überraschenden Effekte auftreten. |
Re: Weiß einer in welcher Folge die Formulare freigegeben we
Eigentlich erstelle ich die Formulare auch selbst, ich hab erst nur allgemein gefragt, nicht speziell. Auch ist es nicht so wichtig wie sie geschlossen werden, es ist nur wichtig zu wissen in welcher Reihenfolge. Da ich die Formulare selbst erstelle, schließe ich sie auch selbst. Dabei gehe ich der Reihe nach von Oben nach Unten und schicke an jedes Formular per SendMessage eine Message die das Formular zum schließen veranlasst. Somit ist die Reihenfolge eigentlich klar, nur sagt das Ergebnis etwas anderes. Danach ist die Reihenfolge der Schließung zufällig.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:11 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