Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Alle Forms durchgehen?


Tower - Do 16.01.03 09:32
Titel: Alle Forms durchgehen?
Hi!

Ich möchte in einem meiner Projekte mit sämtlichen Formularen das gleiche machen. Geht das irgendwie völlig dynamisch?

Mit FindGlobalComponent könnte ich ja jedes Formular ansprechen, nur müsste ich dann vorher halt alle Namen irgendwo speichern. Lieber wäre mir soetwas wie


Quelltext
1:
2:
for i:=0 to GlobalComponentCount-1 do
  GlobalComponent[i].Color := clRed;


oder irgendsowas. (Keine Angst, ist nur ein Beispiel, meine Formulare werden nicht alle rot :wink:)


Danke Euch!

Carsten.


AndyB - Fr 17.01.03 00:43

Hast du die Eigenschaften Screen.FormCount und Screen.Forms in betracht gezogen?


Anonymous - Fr 17.01.03 01:11

Mach es doch über Messages. Einfach eine eigene Massage kreieren (z.B. WM_FRABEWECHSEL) und natürlich auch eine Prozedur die die Message empfängt. Als Parameter kannst du die Farbe weitergeben. Dann brauchst du nur noch an die Applikation eine Message zu schicken und alle Formulare empfangen die Information.

Ich hab sowas mal in einem Programm gemacht. Alle Formulare sind unabhängig voneinander (d.h. keine Eintrag in der Uses). Die Kommunikation geht über die Messages.


Tower - Fr 17.01.03 10:40

Zu den Messages: Geht in meinem Fall leider nicht, da ich gewisse Daten aus allen Formularen des Projektes speichern will (genauer gesagt: die Zustände aller Checkboxen, Editfelder, etc.). Sprich: Ich muss wirklich auf die Formulare zugreifen, sie sollen nicht selbst etwas ausführen. Ok, hätte ich vielleicht gleich schreiben sollen, statt des blöden Farbbeispiels, sorry.

Zu Scren.FormCount: Das klappt tatsächlich. Finde ich zwar verwunderlich, weil die Hilfe sehr explizit zu sagen scheint, dass es sich nur auf die Forms bezieht, die GERADE AKTUELL angezeigt werden (und das werden sie bei mir nicht alle)... aber ok! Wenn's funktioniert... :P

Danke euch!