Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Formulare meiner Anwendung abfragen


mcst09 - Fr 02.06.06 08:03
Titel: Formulare meiner Anwendung abfragen
Hallo,

gibt es eine Möglichkeit, die Namen der Formulare meiner Anwendung abzufragen und in eine ComboBox zu laden?
Dies alles soll natürlich zur Laufzeit erfolgen...just for Info!

Axl


Blackheart666 - Fr 02.06.06 08:13

Form.Name;


Lannes - Fr 02.06.06 08:16

Hallo,

schau Dir mal Screen.FormCount und Screen.Forms[x] an.


azubi_20 - Fr 02.06.06 08:36

Die obrigen Beiträge ergeben folgende Funktion :


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure LoadNameOfFormsInCombobox(cb : TComboBox; SendForm : TForm);
var i: Byte;
begin
  // Einträge in Combobox löschen
  cb.Clear;
  // Alle Forms durchgehen
  for i := 0 to Screen.FormCount - 1 do
  begin
    // Eintrag hinzufügen
    cb.AddItem(Screen.Forms[i].name, SendForm);
  end;
  // ersten Eintrag anzeigen
  cb.ItemIndex := 0;
end;


Beispielaufruf :

Delphi-Quelltext
1:
LoadNameOfFormsInCombobox(combobox1,self);                    


mcst09 - Sa 03.06.06 00:20

hallo,

kann man so auch formulare auslesen die zu dem zeitpunkt nicht geladen sind, aber die in der anwendung existieren??

axl


FrankLink - Sa 03.06.06 18:02

Hallo,
das funktioniert nur, wenn du alle Formulare auf automatisches Erstellen stehen hat. Das bedeutet, dass Du alle Formulare beim Start Deine Anwendung automatisch durch Delphi-Code erzeugen läst.

Machst Du das nicht, so kennt Deine Anwendung die Formularklassen nicht.

Ich habe das in meiner Anwendung so geregelt, dass ich alle meine Formulare generell in einem Array verwalte. Dann kann ich die einzelnen Formularklassen über das Array abfragen.

Es gibt auch nach andere Lösungen mit RegisterClass und dann über alle registrierten Klassen interieren und prüfen ob Sie von TForm oder einer BasisKlasse von der Du Deine Formulare ableitest abgeleitet sind.

Aber der einfachste Weg ist alle Deine Formulare in einem Array zu speichern, dass Du global verfügbar machst. Dann kannst Du Deine Kombobox aus dem Array befüllen.

Gruss
Frank


mcst09 - Sa 03.06.06 20:02

Hallo Frank,

danke für die Ratschläge.
Kannst Du mir noch verraten wie das Array aufgebaut ist?
Was genau steht dort drin?

Danke
Axl


Softchaos67 - Do 03.08.06 11:02

user profile iconFrankLink hat folgendes geschrieben:
Hallo,
Es gibt auch nach andere Lösungen mit RegisterClass und dann über alle registrierten Klassen interieren und prüfen ob Sie von TForm oder einer BasisKlasse von der Du Deine Formulare ableitest abgeleitet sind.
Frank


Wie macht man das genau?
Das würde mich sehr Interressieren.
Gruss
Matthias