Tut mir leid, dass ich mich erst so spät melde...
Habs jedoch irgendwie verdrängt die Demo hochzuladen.
Erklärung zum Projekt:
Also erstmal gibt es den Controller als Singleton. Dieser wird nur über die Instance Methode aufgerufen und ist halt solange vorhanden bis er nicht mehr gebraucht, bzw bis jede Instanz von ihm freigeben wird. Das habe ich hier in dem simplen Beispiel über eine globale Variable im Implementation - Teil geregelt. Ist sie noch nicht initialisiert erstelle ich sie mit CreateInstance, wenn sie dann erstellt ist gebe ich sie einfach immer per Result zurück.
Der Controller beinhaltet dann eine Beobachter-Liste, dort kann man jeweils ein Model und View anmelden und wieder abmelden.
Die Beobachterliste ist eigentlich nur eine Liste, wo pro Beobachter-Item jeweils ein Model und View dran hängen.
Zum Schluss hat der Controller noch eine Notify bzw. Aktualisierungsmethode mit einem Model als Übergabeparameter, da werden dann alle Views die an diesem Model hängen aktualsisiert ( Die Update-Methode des Views wird aufgerufen).
In dem abstrakten Model ist nur die Melde-Methode für den Controller vorhanden, also "Aktualisiere alle die mit mir regristiert sind". In dem konkreten Model sind dann noch zusätzlich die Daten vorhanden.
In dem abstrakten View ist nur eine abstrakte Update - Methode, die in den konkreten Views implementiert werden muss.
Die konkreten Views sind jeweils die Darstellungstypen, also z.b. Editfeld, Gauge, Label, etc...
Ich habe in meinem Beispiel darüber noch eine Klasse die als erstes ein
MDI-Formular implementiert / erstellt, die Klassen die ich davon ableite beinhalten dann die individuelle Oberfläche.
Wichtig ist dann noch das das View das Model über eine Referenz kennt, da es sich dort die Daten herholt und auch über die Notify - Methode sagt das sich etwas geändert hat.
Ist eine Möglichkeit eine MVC zu implementieren, wobei ich halt auch mehrere Sachen weggelassen habe die nicht nötig sind.
Ist leider nicht ne 100% strikte Trennung, aber das nun noch zu erstellen... hätte meinen Zeitrahmen gesprengt.
Jedoch sollte es das sein was du wolltest...hoffe ich zumindest
Theorethisch sollte die Demo selbsterklärend sein, wobei unter Umständen der Singleton erst etwas verwirren könnte.
Bei Fragen einfach melden
MfG Alaitoc
Anmerkung: In der Demo habe ich die Erstellung der Models und Views einfach in FormCreate und FormDestroy reingepackt, das kann man um einiges besser machen... z.b. habe ich bei mir jeweils nocheinmal einen Handler der die Models und Views dann verwaltet.
Ganz wichtig dabei noch! Nicht zwischen den MDI-Childforms hin und her wechseln, einfach nur in dem Editfeld Daten eingeben...weil irgendwie haut er mir da immer ne EInvalidOperation raus und da ich noch nie MDI Sachen benutzt habe habe ich keine Ahnung woran es liegt
Edit findet immer Fehler x.x