![]() |
Alle Formulare einer Anwendung auflisten
Hallo zusammen,
wie kann ich alle Formulare und Datenmodule meiner Anwendung auflisten? Also auch die, die noch nicht mit "Create" erzeugt wurden. screen.forms, screen.CustomForms, screen.DataModules listet mir nur die Formulare auf die bereits erstellt sind. Besten Dank für jeden Tip |
AW: Alle Formulare einer Anwendung auflisten
Woher soll denn Delphi wissen, ob Du gerade Lust hast eine Form zu erzeugen oder eben nicht? :shock: Da wird wohl nur übrigbleiben, den Quelltext zu durchsuchen. Bei mir beginnen die Forms immer mit "frm". Mir würde da wohl nichts anderes übrigbleiben, als nach folgendem Muster zu suchen : frm*.create. Die automatisch erzeugten liefert ja zusätzlich screen.forms oder so.
|
AW: Alle Formulare einer Anwendung auflisten
Unter D2010 geht sogar das!
Delphi-Quellcode:
uses
TypInfo, RTTI; procedure ListAllFormClasses(Target: TStrings); var aClass: TClass; context: TRttiContext; types: TArray<TRttiType>; aType: TRttiType; begin context := TRttiContext.Create; types := context.GetTypes; for aType in types do begin if aType.TypeKind = tkClass then begin aClass := aType.AsInstance.MetaclassType; if (aClass <> TForm) and aClass.InheritsFrom(TForm) then begin Target.Add(aClass.ClassName); end; end; end; end; |
AW: Alle Formulare einer Anwendung auflisten
noch ein bisschen mehr Erklärung dazu.
Mit dem Start der Anwendung wird nur ein Login-Formular erzeugt. Nach erfolgreicher Anmeldung sollen dann alle Formulare und Datenmodule im "Hintergrund" geladen werden. Das Laden der Anwendung wird per Progressbar angezeigt. Dann soll das Login-Formular geschlossen werden und mein Haupt-Formular soll angezeigt werden. Danke Uwe. Leider funktioniert das unter Delphi2007 noch nicht:(. |
AW: Alle Formulare einer Anwendung auflisten
Komponenten werden von der RTL automatisch registriert.
Das Problem ist nur, dass die Registrierung nur intern ist und man da von Aussen nicht rankommt. In Unit Classes gibt es das private
Delphi-Quellcode:
.
ClassList: TThreadList
Vielleicht hast du Glück und deine Delphi-Version lässt dich ran... |
AW: Alle Formulare einer Anwendung auflisten
Forms werden nicht automatisch registriert, wenn du sie alle auflisten willst, dann musst du dich selber drum kümmern, sie irgendwie zu registrieren. Entweder über RegisterClass oder einen eigenen Mechanismus. Entweder packst du das in jeder Form unit ins initialization oder du leitest alle deine Forms von einer eigenen Form Klasse ab, die diesen Mechanismus beinhaltet.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:59 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 by Thomas Breitkreuz