Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Das zuletzt geöffnete TForm finden? (https://www.delphipraxis.net/196072-das-zuletzt-geoeffnete-tform-finden.html)

günni0 20. Apr 2018 20:29

Das zuletzt geöffnete TForm finden?
 
Wie findet man heraus, welches Formular als letztes geöffnet wurde?
Ich kenne zwar Screen.ActiveForm, aber das ist nicht immer zwangsweise das zuletzt geöffnete Formular, da Screen.ActiveForm wohl eher darauf achtet, welches Fenster den Focus hat.

Ich meine irgendwo mal gelesen zu haben, dass es eine Art Liste gibt, wo die gesuchte Information drin steht.

timog 20. Apr 2018 20:43

AW: Das zuletzt geöffnete TForm finden?
 
Es gibt eine VCL TScreens.Forms Aufzählung, die listet die Forms aber nur in Z-Order. Ggf. ein eigener Stack?

günni0 20. Apr 2018 20:45

AW: Das zuletzt geöffnete TForm finden?
 
Z-Order?
Das kenne ich von CSS. Aber bei Delphi kann ich mir nicht vorstellen, was es damit auf sich haben soll.

timog 20. Apr 2018 20:49

AW: Das zuletzt geöffnete TForm finden?
 
Gar nicht so unähnlich. Schau Dir mal das Beispiel für CustomForms an.

Neutral General 20. Apr 2018 20:53

AW: Das zuletzt geöffnete TForm finden?
 
Machs dir nicht zu schwer.

DU schreibst den Code der die Formulare öffnet.
Wenn ich den Zusammenhang zu deinem anderen Thread richtig erkenne hast du sogar 1 Methode die am Ende all deine Formulare erstellt und öffnet.
Jedes mal wenn du diese Methode aufrufst merkst du dir in dieser Methode das gerade geöffnete Fenster als das zuletzt geöffnete Fenster in einer Variable und Zack hast du jederzeit über diese Variable Zugriff auf das zuletzt geöffnete TForm ;)

KodeZwerg 20. Apr 2018 20:54

AW: Das zuletzt geöffnete TForm finden?
 
OnActiveControlChange Beispiel damit könntest Du Dir irgendwo Dein zuletzt geöffnetest speichern bzw was basteln was bei dem Ereigniss darauf reagiert falls Du verstehst was ich meine.

günni0 20. Apr 2018 21:10

AW: Das zuletzt geöffnete TForm finden?
 
Habe es nun folgendermaßen gelöst.
Meine Prozedur die für das Erstellen für Formulare zuständig ist, setzt das aktuelle Formular in einer public class-var.
Da wo ich diese Variable dann benötige frage ich ab
Delphi-Quellcode:
     if Assigned(TFormUtils.LastOpenedForm) and TFormUtils.LastOpenedForm.Visible then // LastOpenedForm vom Typ TForm
      aForm := TFormUtils.LastOpenedForm
     else
      aForm := Screen.ActiveForm; // Fallback ?
Die von euch empfohlene Prozedur habe ich jedoch noch aufgeteilt in
- ShowForm
- CreateForm
und
- CreateAndShowForm (ruft CreateForm und ShowForm auf)
Zusätzlich erweitert um einen Parameter der regelt, ob man Show oder ShowModal haben möchte. Und zuletzt noch ein Result vom Typ TModalResult.
Funktioniert sehr gut auch mit komplexeren Aufrufen und Formularen. Eine Hand voll habe ich schon abgearbeitet, der Rest (viele weitere Hände voll) kommt noch. Heute habe ich aber keine Lust mehr.

KodeZwerg 20. Apr 2018 21:20

AW: Das zuletzt geöffnete TForm finden?
 
OnActiveFormChange das wollte ich Eigentlich senden, sorry zu spät.

günni0 20. Apr 2018 21:23

AW: Das zuletzt geöffnete TForm finden?
 
Screen.OnActiveFormChange kannte ich gar nicht. Quasi eine globale, schon existierende Variable genau wie ich sie eben selber erstellt habe.
Ich setze sie lediglich. Ich setze nicht zurück auf nil, da ich das sonst in wirklich jedes OnClose jeder Form schreiben müsste.
Daher meine If-Abfrage mit Assigned und Visible.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:47 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