AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Zwei Formulare gleichzeitig sichtbar und bearbeitbar

Ein Thema von aktivfruehstueck · begonnen am 20. Jul 2021 · letzter Beitrag vom 21. Jul 2021
Antwort Antwort
aktivfruehstueck

Registriert seit: 15. Mai 2014
8 Beiträge
 
#1

Zwei Formulare gleichzeitig sichtbar und bearbeitbar

  Alt 20. Jul 2021, 13:40
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#2

AW: Zwei Formulare gleichzeitig sichtbar und bearbeitbar

  Alt 20. Jul 2021, 13:45
ShowModal vs. Show (bzw. Visible=True)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
aktivfruehstueck

Registriert seit: 15. Mai 2014
8 Beiträge
 
#3

AW: Zwei Formulare gleichzeitig sichtbar und bearbeitbar

  Alt 20. Jul 2021, 14:23
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?
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.449 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Zwei Formulare gleichzeitig sichtbar und bearbeitbar

  Alt 20. Jul 2021, 14:30
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.
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.679 Beiträge
 
Delphi 5 Professional
 
#5

AW: Zwei Formulare gleichzeitig sichtbar und bearbeitbar

  Alt 20. Jul 2021, 15:06
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
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Zwei Formulare gleichzeitig sichtbar und bearbeitbar

  Alt 20. Jul 2021, 15:17
Wenn ich die so erzeuge:
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
Frank Reim

Geändert von dataspider (21. Jul 2021 um 07:20 Uhr)
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#7

AW: Zwei Formulare gleichzeitig sichtbar und bearbeitbar

  Alt 21. Jul 2021, 08:49
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?
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.934 Beiträge
 
Delphi 12 Athens
 
#8

AW: Zwei Formulare gleichzeitig sichtbar und bearbeitbar

  Alt 21. Jul 2021, 09:12
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:33 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