Announcement

Collapse
No announcement yet.

MDI in einer DLL

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

  • MDI in einer DLL

    Hi,

    ich möchte gerne mdi formulare in dll´s packen. diese sollen wie eine art
    plugin aufrufbar sein. die klasse dafür hätte ich bereits fertig. ich kenne auch die probleme mit formularen in dll´s (tab, tastaturbefehle), aber gibt es irgendeine möglichkeit diese probleme zu umgehen, ohne packages zu verwenden oder weiß jemand eine andere lösung ?

  • #2
    In diesem Abschnitt DLL gibt es eine Diskussion <b>Forms in DLLs und MDI Childs</B> die Dir weiterhelfen sollte.<p>
    Schöne Grüße, Mario Noac
    Schöne Grüße, Mario

    Comment


    • #3
      danke für deine antwort, leider hilft mir diese nicht weiter. ich habe bereits alle diskussionen über forms und mdi childs in dll´s gelesen

      Comment


      • #4
        <i>aber gibt es irgendeine möglichkeit diese probleme zu umgehen, ohne packages zu verwenden oder weiß jemand eine andere lösung ? </i>
        <b>nein</b><br>
        es sei denn du änderst das komplette VCL,RTTI Design der Delphi Objecte und damit zwangsläufig auch den Compiler, da dieser viele Informationen über Objecte, also z.B. deren RTTI, VMT, DMT, TypInfos, erzeugt. Aber genau diese Klassendefinitionen und deren Speicherung im Codesegement des implementierenden Moduls verurschen die besagten Probleme. Da aber Packages und deren enthaltene Klassen gemeinsam durch alle abhängigen Module benutzt werden wird diese Mauer mit Packages durchbrochen. Ein weg drumherum müsste im Falle von MDI einerseits die MDI Childformulare der DLL vollständig auf Windows API basis programmieren udn andererseits müsste das MDI Mainform der Anwendung ebenfalls vollständig auf Windows-API basis arbeiten. D.h. in allen Modulteilen müsste auf die VCL verzichtet werden. Auch das TApplication und TScreen Object müsste vollständig entfernt werden.

        Ändert man alle Delphi Original Sourcen, so daß dort alle <b>is</b> und <b>as</b> Operatoren durch eine dynamische Variante wie TObject.InheritsFromName(const Classname: String) oder TObject.ClassNameIs(), ersetzt würden, könnte man auch mit der VCL in DLL's arbeiten.
        Alternativ könnte man beim Start der DLL alle Klassen die identisch mit denen der EXE sind, z.B. TComponent usw. patchen. D.h. anstatt deren Klassentypzeiger in das Codesegment der DLL zeigen zu lassen wird dies dynamisch gepatch auf die gleichen Klassen die in der EXE gespeichert sind.<br>

        So das wären verschiedene Wege, die meiner Meinung nach aber Inkompatibilitäten erzeugen oder aufwendig sind oder den Komfort der VCL verringern.<br>

        Gruß Hage

        Comment

        Working...
        X