Hi,
ich denke sich ein Vorbild an schon bestehenden Systemen zu nehmen ist schon der richtige Ansatz. Ein sehr einfaches Beispiel für solche Systeme wäre wohl schon die
IDE vor der du sitzt. Hier kannst du so ziemlich alles per Plugin einbinden.
Für ein Plugin System bietet sich ein
API deiner Anwendung an. Du könntest dir z.B. von deinem Programm ein Control zurückgeben lassen, auf das eigene grafische Elemente dürfen. Diese fügst du dann ganz normal (im Plugin) ein. Hier ist natürlich dann wahrscheinlich schon eine deutliche Bindung an Delphi (je nachdem wie du das angehst). Die eigentliche Flexibilität hängt dann letztlich von deinem
API ab.
Hier solltest du dir ruhig ein paar Design Patterns anschauen. Ein Observer ist zum Beispiel ideal für Plugins, aber es gibt da noch so ein paar die gut in Frage kommen. Nur um den Observer als Beispiel etwas auszuführen, mittels diesem Pattern könntest du für jedes Ereignis das von Plugins behandelt werden darf einen oder mehrere Beobachter schreiben. Ein Plugin wäre also der Beobachter. Das Ereignis ist das zu Beobachtende. Die eigentlichen Beobachter registrieren sich beim Beobachteten und werden dann alle benachrichtigt, wenn das Ereignis eintritt.
Alle Conrrolls, auf die jmd. zugriff hat, kannst du entweder direkt per Funktion zugänglich machen (dann hätten die Plugin Schreiber schon eine ganze Menge Freiheiten). Oder du erstellst einfach Methoden, die z.B. einen Menüeintrag hinzufügen. Hier kannst du dann per
API festlegen, was die mit übergeben dürfen (für ein Menü z.B. der Eintrag in der Menüleiste, der Unterpunkt und die Methode die bei einem Klick aufgerufen werden soll).
Gruß Der Unwissende