MDI - Form dynamisch aufrufen über "Strings"?



  • Hallo zusammen,
    gib es die möglichkeit die Namen von Forms aus einer Datei oder DB auszulesen und so aufzurufen?

    also Beispielweise steht in der DB
    Tbsp2
    Tbsp3

    mit dem Code

    Tbsp2* bsp = new Tbsp2 (this)
    

    komme ich da logischerweise nicht weiter

    Mfg Ulf87



  • push



  • Das geht, da der Konstruktor von TComponent virtuell ist. Allerdings gibt es keine Möglichkeit, in C++-Code virtuelle Konstruktoren direkt aufzurufen; auch gibt es keine Metaklassenhierarchie wie in Delphi.
    Um das Problem zu lösen, kannst du folgende Delphi-Unit zu deinem Projekt hinzufügen und die vom Compiler generierte .hpp-Datei einbinden:

    unit ComponentUtils;
    
    interface
    
    uses
      Classes;
    
    function CreateComponent (AClass: TComponentClass; AOwner: TComponent): TComponent;
    
    implementation
    
    function CreateComponent (AClass: TComponentClass; AOwner: TComponent): TComponent;
    begin
      Result := AClass.Create (AOwner);
    end;
    
    end.
    

    Der für das Auffinden des Formulares benötigte Mechanismus steht mit RegisterClass() und FindClass() zur Verfügung.



  • Cool danke werde ich morgen mal testen


Anmelden zum Antworten