![]() |
Delphi-Version: 2006
Alle Forms eines Projektes finden
Hallo zusammen,
so finde ich ja alle schon erstellten Forms in der Anwendung:
Delphi-Quellcode:
Wie kann ich denn auch die Forms finden, welche noch nicht "created" wurden ?
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; Gruss Holger |
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.
|
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? ;)
|
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. |
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 |
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. |
AW: Alle Forms eines Projektes finden
Welchen Quellcode denn? Dann müsstest Du den ja passend zur Version mitliefern.
|
AW: Alle Forms eines Projektes finden
Er meint sicher nicht den unkompilierten Quellcode...
|
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 ? |
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. |
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?
|
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.
|
AW: Alle Forms eines Projektes finden
Das scheint mir eine gute Idee zu sein.
|
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. |
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.
|
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 02:15 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