Vielen dank für eure antworten.
Zitat von
himitsu:
...
Am Einfachsten, stelle eine Schnittstelle her, über welche die Plugins eine Form zusammenbasteln können.
So mit Funktionen wie ErstelleFenster, ErstelleEdit ... und die Callbacks (die Ereignismethoden ala OnClick wieder über ein Interface im Plugin weiterleiten)
Und schon hast du auch C und D gelöst, da dieses direkt in der Anwendung verwaltet werden kann.
So sind zwar nur "einfache" Fenster möglich, aber immerhin ist dann alles aus einer Hand und eine Anwendung behält die vollte Kontrolle. (ist z.B. gut, falls irgendwann auch noch Themes, bzw. eine Design-Enginge eingesetzt werden sollen)
...
Das ist mir viel zu viel aufwand. ich befürchte auch, dass die plugin-hersteller dann immer mehr wünsche
haben werden bezüglich zur verfügung stehender controls. im sinne von bitte bau uns noch ein ErstelleTreeview,
ErstelleImage, ErstelleX, ErstelleURLLabel, ErstelleYZ, etc... ich möchte noch events für OnMouseOver, OnEnter, OnXYZ, etc...
darum habe ich mir gedacht, wenn ich dies über einen
ole-container mache, können die plugin-hersteller
programmieren was sie wollen und auch so wie sie es in deren sprache bereits gewohnt sind...
und sie können alle Controls benutzen die sie in ihrer sprach-umgebung haben.
Zitat von
Bernhard Geyer:
Sollte alles (u.U. mit viel Aufwand) möglich sein. Unsere eigenes Plugin-System kann Fenster von
DLL's (C-Kompatible schnittstelle) in Hauptformular einbetten und unterstützt Shortcuts + Tabs. Tiefgreifende Delphi+
Win32-
API-Kenntnisse und 1-2 Wochen für das Fensterhandling sind schon nötig.
diese eingebundenen fenster können dann auch an das hauptformular gedockt werden? so ähnlich wie in delphi?
auch mit der funktion unpinn, pinn (also wegg-sliden und wenn mit maus auf das DockTabSet wieder erscheinen?)
Da gibt es keine probleme?
kann auch in einem teil (container z.b. scrollbox) eines fensters der hauptanwendung das fenster der plugin-
dll
angezeigt werden? das wollte ich nämlich auch noch. sodass ich z.b. ein Einstellungen-Fenster in meinem programm habe
mit diversen tabs z.b. Allgemein (meins), Erweitert (meins), Drucken (von Plugin-Drucken), Mailen (von Plugin-Email), etc.
Zitat von
blackfin:
Eine andere Möglichkeit für ein Plugin-System ist die Erstellung einer eigenen
API für das Programm, die du dann über eine Scriptsprache nach aussen trägst.
So etwas in der Art habe ich mal mit Delphi + Scriptsprache Lua gemacht, klappt wunderbar.
Es ist natürlich ein relativ hoher Aufwand, die ganzen Funktionen, die per Scriptscprache zur Verfügung stehen sollen, nach Aussen zu tragen, allerdings hast du dadurch die volle Kontrolle, was deine Plugins dürfen und was nicht.
meine plugins dürfen in einem definierten container eigentlich machen was sie wollen.
die idee dies mit active-forms zu lösen wäre doch eigentlich gut, oder meint ihr nicht?
der internet explorer hat auch so eine funktionalität. flash und solche inhalte werden
dort auch eingebunden (vermutlich auch über diese activeforms) und die können dann in ihrem rahmen machen was sie wollen.
hier ist noch ein beispiel auf welches ich mal gestossen bin wie man mit delphi eine control im internet explorer erzeugt über
activeforms
http://delphi.about.com/od/interneti...l/aa042099.htm
das scheint mir eine super lösung zu sein, wenn da nur nicht dieses docking-problem wäre.
und der aufwand ist auch sehr klein, mann braucht nur einen TOleContainer und die angabe,
welches objekt darin angezeigt werden soll.
ein normales fenster kann ich docken, aber wenn auf dem form ein olecontainer ist, dann verschwindet der inhalt
nach dem docken und manchmal stürzt auch der
ole-server ab (z.b. word)