Announcement

Collapse
No announcement yet.

Formulare zu Laufzeit erstellen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Formulare zu Laufzeit erstellen

    Ich schreibe an einer Komponente, die auf verschiedene Formulare eines Projektes zurückgreift. Solange die Formulare automatisch erzeugt werden funktioniert alles wunderbar. Nun erzeuge ich die meisten Formulare erst dann, wenn diese benötigt werden. Auch das ist grundsätzlich kein Problem, solange die Klasse vorhanden sprich bekannt ist.
    Mein Komponente hingegen, beinhaltet eine Liste aller im Projekt benötigter Formulare.
    Gespeichert werden allerdings nur der "ClassName" und der Name des Formulares jeweils als String.
    Ich habe hier im Forum geschaut und verschiedene hinweise bekommen nur haben mir diese nicht weiter geholfen.
    Wie kann ich anhand des Formularnamen und des Klassennames (beide String), das Formular erstellen, und für die weitere Verarbeitung verwenden.

    Ich habe die Funktionen FindClass, GetClass ausprobiert, auch mit dem Hinweis auf RigisterClass. Doch um RegisterClass zu verwenden muss die Klasse übergeben werden.
    Nur wie kann ich die entsprechende Klasse erzeugen, wenn ich nur den Klassennamen habe.

    Für Eure Hilfe wäre ich sehr dankbar!

  • #2
    http://entwickler-forum.de/webx?13@@.1dd041c0/1<BR&gt

    Comment


    • #3
      Danke für die Tips, nur auch hier ist die Klasse (TForm1) bekannt! Ich habe nur den Klassennamen als String

      Comment


      • #4
        Du könntest im initialization-Abschnitt jeder Form-Unit die entsprechende Form-Klasse registrieren. Dann sollte (ungetestet!) es reichen, die Units aller Forms, die du nutzen willst, in die *.dpr aufzunehmen, um sie projektweit für FindClass verfügbar zu machen.
        <br>Ciao, Uli

        Comment


        • #5
          Ulrich auch das hilft mir nicht weiter, es handelt sich um eine Komponente, die Formulare sind voher nicht unbedingt bekannt. Eine Möglichkeit könnte ich mir noch vorstellen, wenn ich die Classe in eine Variable TFormClass speichere dann müsste man diese auch wieder aufrufen können. Nur wie kann ich die Classe von TForm(x) einer Variablen von Typ TClassForm zuweisen

          Comment


          • #6
            Deine Form:<BR>
            <BR>
            initialization<BR>
            RegisterClass(TUserForm);<BR>
            <BR>
            Nicht vergessen die obige Unit in Application einzubinden.<BR>
            <BR>
            <BR>
            Irgendwo anders:<BR>
            <BR>
            procedure Go;<BR>
            var AClass: TPersistentClass;<BR>
            AForm TCustomForm;<BR>
            begin<BR>
            try<BR>
            AClass := findclass('TUserForm');<BR>
            if (AClass <> nil) and AClass.InheritsFrom(TForm) then<BR>
            begin<BR>
            AForm := TFormClass(AClass).Create(nil);<BR>
            try<BR>
            <BR>
            Schnittstelle zu AForm<BR>
            <BR>
            AForm.ShowModal;<BR>
            finally<BR>
            AForm .Release;<BR>
            end;<BR>
            end ;<BR>
            except<BR>
            end;<BR>
            end;<BR&gt

            Comment

            Working...
            X