Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Alle Forms eines Projektes finden (https://www.delphipraxis.net/170895-alle-forms-eines-projektes-finden.html)

HolgerCW 9. Okt 2012 08:39

Delphi-Version: 2006

Alle Forms eines Projektes finden
 
Hallo zusammen,

so finde ich ja alle schon erstellten Forms in der Anwendung:

Delphi-Quellcode:
CB_Form: TComboBox;

var
 Form: TForm;
begin

 CB_Form.Clear;
 For I := 0 to Application.ComponentCount - 1 do
 begin

  if Application.Components[I] is TForm then
  begin

   Form := TForm(Application.FindComponent(Application.Components[I].Name));

   CB_Form.Items.Add(Form.Name)

  end;

 end;

end;
Wie kann ich denn auch die Forms finden, welche noch nicht "created" wurden ?

Gruss

Holger

Zacherl 9. Okt 2012 08:44

AW: Alle Forms eines Projektes finden
 
Gar nicht :D Wie soll das denn gehen, wenn noch gar keine Objektinstanz besteht? Was genau versuchst du denn zu machen? Vielleicht gibt es da eine andere Möglichkeit zum Ziel zu gelangen.

DeddyH 9. Okt 2012 08:45

AW: Alle Forms eines Projektes finden
 
Du suchst doch Instanzen. Die kannst Du aber erst finden, wenn sie erzeugt wurden, oder willst Du auch Schuhe anziehen, die noch als Kuh auf der Weide stehen? ;)

Neutral General 9. Okt 2012 08:50

AW: Alle Forms eines Projektes finden
 
Du könntest dir eine Liste machen in die du zur Laufzeit irgendwo im Code alle Form-Klassen einträgst die du verwendest.

Ansonsten könnte es eventuell sein dass man die Formklassen auch dynamisch über die RTTI ermitteln kann, aber da bin ich mir grad nicht 100%ig sicher.

HolgerCW 9. Okt 2012 08:52

AW: Alle Forms eines Projektes finden
 
Ich speichere in einer Datenbank ab, welche Form geöffnet werden soll, wenn ein bestimmter Button gedrückt wird.

Nun wollte ich mir einen Dialog bauen, mit dem ich die Datenbanktabelle pflegen kann. Und da dachte ich mir das ich die möglichen Formen meines Projektes in einer ComboBox Vorbelege.

Über so eine Liste hatte ich auch schon nachgedacht, aber dann kann ich auch ein Edit-Feld anstatt einer ComboBox machen und den namen der Form dort hard eintragen.

Also quasi Quellcode durchsuchen oder ähnliches geht nicht ?

Gruss

Holger

Neutral General 9. Okt 2012 09:11

AW: Alle Forms eines Projektes finden
 
Hallo,

Welches Delphi hast du denn? Wirklich nur 2006?
Ab 2010 geht das ziemlich sicher per RTTI.

Vorher könnte es problematisch werden glaube ich.

DeddyH 9. Okt 2012 09:12

AW: Alle Forms eines Projektes finden
 
Welchen Quellcode denn? Dann müsstest Du den ja passend zur Version mitliefern.

Neutral General 9. Okt 2012 09:16

AW: Alle Forms eines Projektes finden
 
Er meint sicher nicht den unkompilierten Quellcode...

HolgerCW 9. Okt 2012 09:22

AW: Alle Forms eines Projektes finden
 
Leider habe ich nur die Versin 2006. Überlege aber schon länger über ein Update nach.

Im Quelltext stehen die ja auch alle drin. Kann man den während der Laufzeit durchleuchten ?

himitsu 9. Okt 2012 09:29

AW: Alle Forms eines Projektes finden
 
Natürlich nicht, da dein Quellcode nicht in der EXE landet. :roll:

Du müßtest dann deine Quellcodes selber mitgeben
und dann brauchst'e eventuell auch noch einen Parser, welcher diese lesen/durchsuchen kann.

Jumpy 9. Okt 2012 09:39

AW: Alle Forms eines Projektes finden
 
Aber mal blöd gefragt. Muss man jetzt Quellcode auslesen, um zu wissen was man seiner Anwendung für Forms verpasst hat? Kann man so eine Liste nicht manuell pflegen? Sollte man das nicht sogar, da es bestimmt Forms gibt, die nicht so dynamisch erzeugt werden sollten?

WM_CLOSE 9. Okt 2012 09:44

AW: Alle Forms eines Projektes finden
 
Gibt es denn die Klassenkonstuktoren noch? Wenn ja, dann Kann sich jede Formklasse (TForm abkömmlinge) in einer Globalen Liste eintragen, welche du dann abfragen kannst.

DeddyH 9. Okt 2012 09:53

AW: Alle Forms eines Projektes finden
 
Das scheint mir eine gute Idee zu sein.

HolgerCW 9. Okt 2012 10:00

AW: Alle Forms eines Projektes finden
 
Alles klar. Dann gibt es da für mich nur die Möglichkeit die Werte ohne Vorbelegung einzugeben.

Dennoch danke an alle.

Zacherl 9. Okt 2012 10:07

AW: Alle Forms eines Projektes finden
 
Erstell dir am besten eine Unit, die nur eine globale TClassList enthält, welche du im initialization Teil der Unit erzeugst. Dann kannst du jede Formular Unit ebenfalls um einen initialization Teil erweitern, der die jeweilige Form Klasse in der Liste registriert.

Bummi 9. Okt 2012 10:51

AW: Alle Forms eines Projektes finden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Da ich ein Freund der Beispiel bin ...


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