Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Dynamisch Forms erzeugen
Tower - Fr 07.03.03 15:01
Titel: Dynamisch Forms erzeugen
Hallo zusammen!
In meinem Projekt gibt es zig verschiedene Forms nach dem Schema Form<Nr>, also Form1, Form2, ... FormX.
Manche von diesen muss ich zur Laufzeit erzeugen, welche, das entscheidet sich erst während des Programmablaufs.
Normalerweise würde ich das ja in der Art...
Quelltext
1:
| Form12 := TForm12.Create; |
... machen.
Praktischerweise müsste jetzt sowas möglich sein wie:
Quelltext
1:
| tmpForm := ('TForm'+IntToStr(Nr)).Create; |
... klar, geht natürlich nicht.
Aber möglich ist das doch bestimmt irgendwie, oder...?
UGrohne - Fr 07.03.03 15:28
Ja, du musst glaub ich mit GetMem zur Laufzeit eine Variable erzeugen, und dann über Variable as TForm darauf zugreifen, dann kannste glaub ich auch sowas mit Laufvariablen machen.
Oder Du nimmst einfach ein Array of TForm, das dürfte auch gehen.
Gruß
Tower - Fr 07.03.03 15:43
Danke, aber das trifft leider nicht ganz mein Problem.
Das Abspeichern in einer Variable ist (zumindest bisher ;-) ) kein Problem. "tmpForm" hab ich nur der Einfachheit halber geschrieben, wirklich steht da schon folgendes:
Quelltext
1: 2: 3: 4: 5: 6: 7:
| var MyForms: Array of TForm; begin [...] MyForms[i] := ???.Create(Application); [...] end |
Und DAS ist das Problem: Was kommt hinter das ":=", wenn ich noch nicht weiß, welches Form erzeugt werden muss - und damit auch: den Konstruktor welcher Klasse ich aufrufen muss?
Wenn (vereinfacht gesagt) der Anwender "Form1" auswählt, das erzeugt werden soll, dann müsste da "... := Form1.Create" stehen, bei Form23 entsprechend "... := Form23.Create" usw. Und da ich das zur Entwicklungszeit noch nicht weiß, muss ich das irgendwie dynamisch lösen...
UGrohne - Fr 07.03.03 15:56
Brauchst Du denn unbedingt eine Variable, mit der Du später auf das Form noch zugreifen kannst?
Ansonsten kannste ja auch einfach ein Form1:=TForm1.Create.... machen, auch mit mehreren Instanzen, es ist halt schwieriger darauf zuzugreifen....
Vielleicht vereinfacht das Dein Problem ein bisschen..... ich überleg aber grad mal etwas weiter...
Gruß
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!