Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Zwei Formulare gleichzeitig sichtbar und bearbeitbar (https://www.delphipraxis.net/208366-zwei-formulare-gleichzeitig-sichtbar-und-bearbeitbar.html)

aktivfruehstueck 20. Jul 2021 12:40

Zwei Formulare gleichzeitig sichtbar und bearbeitbar
 
Hallo Leute,

ist es mit Delphi mögliche 2 Formulare gleichzeitig aktiv zu haben um diese bearbeiten zu können?

Im Projekt gibt es die main Unit Form die beim Start dargestellt wird. Auf dieser kann man mit einem Button ein zweites Formular öffnen. Standartmäßig liegt dieses nun auf der Main Unit. die Main Unit ist ab diesem ZEitpunkt nicht mehr bedienbar, bis ich das zweite Formular wieder schließe. In Zeiten von mehreren Monitoren möchte ich das zweite Formular auf einem anderen Monitor anzeigen und das erste auch noch bedienen können.
Geht sowas?

Viele Grüße

himitsu 20. Jul 2021 12:45

AW: Zwei Formulare gleichzeitig sichtbar und bearbeitbar
 
ShowModal vs. Show (bzw. Visible=True)

aktivfruehstueck 20. Jul 2021 13:23

AW: Zwei Formulare gleichzeitig sichtbar und bearbeitbar
 
Oha, da ist der kleine Unterschied. Mit Show kann ich dieses Verhalten provozieren.

Jetzt habe ich in der main Unit die Möglichkeit sogar mehrere dieser zweiten Formulare zu öffnen.

Vorher:
Code:
var
  fmUnit1 : TfmUnit1;

-----

fmUnit1                         := TfmUnit1.Create(nil);
fmUnit1.ShowModal;

fmUnit1.Release;
fmUnit1 := nil;
Nachher:
Code:
var
  fmUnit1 : TfmUnit1;

-----
fmUnit1                         := TfmUnit1.Create(nil);
fmUnit1.Show;

//fmUnit1.Release;
//fmUnit1 := nil;
An welcher STelle macht es nun Sinn bei Formular schließen aufzuräumen?
Release und auf nil setzen geht an dieser Stelle nun nicht mehr, da das Programm nicht auf den Rückgabewert des 2ten Forms wartet.
Oder ist das Egal? Wird beim Schließen eines Formulars automatisch aufgeräumt?

dummzeuch 20. Jul 2021 13:30

AW: Zwei Formulare gleichzeitig sichtbar und bearbeitbar
 
Zitat:

Zitat von aktivfruehstueck (Beitrag 1492554)
Wird beim Schließen eines Formulars automatisch aufgeräumt?

Standardmäßig ist das so (und es lässt sich auch nur sehr schwer ändern):

Wenn das Programm beendet wird, werden alle Formulare freigegeben.
Das Programm wird beendet, wenn das Hauptformular geschlossen wird.
Das erste Formular, das erzeugt wird, ist das Hauptformular.

Dalai 20. Jul 2021 14:06

AW: Zwei Formulare gleichzeitig sichtbar und bearbeitbar
 
Zitat:

Zitat von dummzeuch (Beitrag 1492557)
Wenn das Programm beendet wird, werden alle Formulare freigegeben.

Trifft das denn auch auf die nicht automatisch erzeugten Formulare zu? Oder anders gefragt: Weiß denn Delphi von den zur Laufzeit erzeugten Formularen und kann diese freigeben?

Grüße
Dalai

dataspider 20. Jul 2021 14:17

AW: Zwei Formulare gleichzeitig sichtbar und bearbeitbar
 
Wenn ich die so erzeuge:
Delphi-Quellcode:
TfmUnit1.Create(nil)
dann nicht.
Dann sollte man wenigstens Application als Owner setzen.
Und im OnClose der Formulare CloseAction auf caFree (caHide ist glaub ich Standard).

Frank

Jumpy 21. Jul 2021 07:49

AW: Zwei Formulare gleichzeitig sichtbar und bearbeitbar
 
Zitat:

Zitat von Dalai (Beitrag 1492559)
Zitat:

Zitat von dummzeuch (Beitrag 1492557)
Wenn das Programm beendet wird, werden alle Formulare freigegeben.

Trifft das denn auch auf die nicht automatisch erzeugten Formulare zu? Oder anders gefragt: Weiß denn Delphi von den zur Laufzeit erzeugten Formularen und kann diese freigeben?

Grüße
Dalai

Ich dachte immer, wenn ein Programm geschlossen wird, wird allein schon vom Betriebssystem der Speicher wieder freigegeben?

Uwe Raabe 21. Jul 2021 08:12

AW: Zwei Formulare gleichzeitig sichtbar und bearbeitbar
 
Zitat:

Zitat von dummzeuch (Beitrag 1492557)
Zitat:

Zitat von aktivfruehstueck (Beitrag 1492554)
Wird beim Schließen eines Formulars automatisch aufgeräumt?

Standardmäßig ist das so (und es lässt sich auch nur sehr schwer ändern)

Na ja, beim Close wird das Formular (wenn es nicht das Hauptformular ist) erstmal nicht freigegeben, sonder nur unsichtbar gemacht (über Screen.Forms kommt man sogar wieder dran).

Man kann das sehr schön im OnClose Event sehen, wo die Action in der Regel auf caHide steht (außer bei einem MDIChild, dann caMinimize).

Es ist aber auch genau der Event, in dem man die Action auf caFree setzen kann um das Formular direkt im Anschluss freizugeben.


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