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/)
-   -   Alle Forms gleichzeitig schließen? (https://www.delphipraxis.net/164436-alle-forms-gleichzeitig-schliessen.html)

smart 12. Nov 2011 12:34

Alle Forms gleichzeitig schließen?
 
Hallo zusammen.

Ich habe mehrere Formen mit Show geöffnet. Giebt es eine Möglichkeit alle geöffneten Formen zugleich zu schließen?

DeddyH 12. Nov 2011 12:38

AW: Alle Forms gleichzeitig schließen?
 
Nur eine Idee (ungetestet):
Delphi-Quellcode:
for i := Screen.FormCount - 1 downto 0 do
  if Screen.Forms[i] <> Application.MainForm then
    Screen.Forms[i].Close;

Bummi 12. Nov 2011 12:55

AW: Alle Forms gleichzeitig schließen?
 
Je nach dem wie Du die Fenster erstellst, bei uns üblicherweise dynamisch
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  With TForm2.Create(self) do show;
end;

Procedure CloseForms(Owner:TComponent;Recursive:Boolean=true);
var
  i:Integer;
begin
  for I := 0 to Owner.Componentcount - 1 do
      if Owner.Components[i] is TForm then
        begin
        if Recursive then CloseForms(Owner.Components[i]);
        TForm(Owner.Components[i]).Close;
        end;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  CloseForms(Self);
end;
sorry, hatte nicht richtig gelesen, statt Hide halt close ...

smart 12. Nov 2011 13:17

AW: Alle Forms gleichzeitig schließen?
 
Was ist besser, Formen dynamisch oder auf "herkömmlicher" Weise zu erstellen?

DeddyH 12. Nov 2011 13:21

AW: Alle Forms gleichzeitig schließen?
 
Was ist besser: Brot oder Brötchen? Das kann man halt nicht pauschal beantworten. Wenn Du nicht allzuviele Formulare mit tausenden Komponenten verwendest, kannst Du IMHO ruhig alles beim Alten lassen. Die Formulare werden dann zum Programmstart komplett geladen und verbrauchen dementsprechend Arbeitsspeicher. Erzeugst Du sie hingegen dynamisch, hast Du mehr Kontrolle über den Speicherverbrauch, aber eben auch die Verantwortung dafür.

Sir Rufo 12. Nov 2011 16:05

AW: Alle Forms gleichzeitig schließen?
 
Es kommt auch darauf an, ob man eine oder n Instanzen der Formulare benötigt.

Bei n Instanzen sollte man alle diese Formulare halt dynamisch erstellen.

So wie ich aus deinen bisherigen Fragen herauslesen würde, benötigst du so etwas wie einen ViewController, der dir diese Formulare erzeugt, anzeigt und dann wieder ins Nirwana schickt, wenn dieser ViewController entsorgt wird.

Dann brauchst du nur eine Instanz erzeugen und alles ist wie gewünscht da ... und beim entsorgen ist alles wieder sauber ;)


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