Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Alle Forms auflisten? (https://www.delphipraxis.net/123999-alle-forms-auflisten.html)

blackdrake 12. Nov 2008 20:56


Alle Forms auflisten?
 
Hallo.

Ein unabhängiges Form wird von 2 Projekten in einer Projektgruppe verwendet.

Dabei soll in allen Anwendungen immer nur 1 Form gleichzeitig geöffnet sein.

Dabei würde ich mir wünschen, dass man alle Forms von TApplication dynamisch aufrufen kann. Nur: Wie geht das?

Folgender Code würde mir vorschweben:

Delphi-Quellcode:
procedure HideAllForms;
begin
  for i := ... do
  begin
    Application.Form[i].Hide; // Form[i] gibt's nicht :-/
  end;
end;

procedure TGemeinsamesForm.ShowOnlyThisFrom;
begin
  HideAllForms;
  Self.Show;
end;
Gruß
blackdrake

HalloDu 12. Nov 2008 21:01

Re: Alle Forms auflisten?
 
Die Formulare sind die Unterkomponenten des Application Objekts, du kannst auf sie, wenn ich mich nicht irre, mit Components und ComponentCount zugreifen.

Apollonius 12. Nov 2008 21:04

Re: Alle Forms auflisten?
 
Delphi-Referenz durchsuchenTScreen.Forms dürfte das Gesuchte sein.

Edit: Oder auch nicht. Soll das ganze programmübergreifend funktionieren?

blackdrake 12. Nov 2008 21:11

Re: Alle Forms auflisten?
 
Vielen Dank! Das ist genau der Array, den ich gesucht hatte:

Delphi-Quellcode:
var
  i: integer;
begin
  for i := 0 to screen.FormCount - 1 do
  begin
    Screen.Forms[i].Hide;
  end;
end;
Es ist irgendwie seltsam, dass ein Form in TApplication.CreateForm() erstellt, aber in TScreen.Form gelistet wird.

Was meinst du mit Programmübergreifend? Ich meine natürlich alle Forms des eigenen Programms. Da ich aber ein Form vom Code her zwischen 2 Projekten teile, darf ich im Code keine Forms eines spezifischen Projektes nennen, da es sonst nicht mehr Projektneutral wäre.

Gruß
blackdrake

Apollonius 12. Nov 2008 21:25

Re: Alle Forms auflisten?
 
Ach so. Ich dachte, beide Anwendungen sollten gleichzeitig laufen und sich dieses Formular teilen. Das wäre etwas komplizierter geworden.


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