AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Das zuletzt geöffnete TForm finden?

Ein Thema von günni0 · begonnen am 20. Apr 2018 · letzter Beitrag vom 20. Apr 2018
Antwort Antwort
günni0
(Gast)

n/a Beiträge
 
#1

Das zuletzt geöffnete TForm finden?

  Alt 20. Apr 2018, 21:29
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.
  Mit Zitat antworten Zitat
Benutzerbild von timog
timog

Registriert seit: 26. Sep 2006
Ort: Landkreis Oldenburg (Oldb)
117 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

AW: Das zuletzt geöffnete TForm finden?

  Alt 20. Apr 2018, 21:43
Es gibt eine VCL TScreens.Forms Aufzählung, die listet die Forms aber nur in Z-Order. Ggf. ein eigener Stack?
Timo
Real Programmers are surprised when the odometers in their cars don't turn from 99999 to 9999A.
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#3

AW: Das zuletzt geöffnete TForm finden?

  Alt 20. Apr 2018, 21:45
Z-Order?
Das kenne ich von CSS. Aber bei Delphi kann ich mir nicht vorstellen, was es damit auf sich haben soll.
  Mit Zitat antworten Zitat
Benutzerbild von timog
timog

Registriert seit: 26. Sep 2006
Ort: Landkreis Oldenburg (Oldb)
117 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: Das zuletzt geöffnete TForm finden?

  Alt 20. Apr 2018, 21:49
Gar nicht so unähnlich. Schau Dir mal das Beispiel für CustomForms an.
Timo
Real Programmers are surprised when the odometers in their cars don't turn from 99999 to 9999A.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Das zuletzt geöffnete TForm finden?

  Alt 20. Apr 2018, 21:53
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
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Das zuletzt geöffnete TForm finden?

  Alt 20. Apr 2018, 21:54
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.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#7

AW: Das zuletzt geöffnete TForm finden?

  Alt 20. Apr 2018, 22:10
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.

Geändert von günni0 (20. Apr 2018 um 22:18 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Das zuletzt geöffnete TForm finden?

  Alt 20. Apr 2018, 22:20
OnActiveFormChange das wollte ich Eigentlich senden, sorry zu spät.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#9

AW: Das zuletzt geöffnete TForm finden?

  Alt 20. Apr 2018, 22:23
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.
  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 00:15 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