Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi MVC: View in View einbetten -- Kommunikation? (https://www.delphipraxis.net/169996-mvc-view-view-einbetten-kommunikation.html)

s.h.a.r.k 24. Aug 2012 16:15

MVC: View in View einbetten -- Kommunikation?
 
Hallo zusammen,

habe da mal wieder eine Frage bzgl. dem MVC Pattern. Es muss ja nicht immer sein, dass die View eine Form ist, sondern es kann ja auch gut und gerne ein Frame sein, den man später dann in eine andere Form einbetten will -- ich gehe in meinen weiteren Ausführungen von einem Frame aus, aber natürlich könnte es jede andere Komponente à la TreeView oder dergleichen sein.

Meine Controller lasse ich momentan über einen Mediator miteinander kommunizieren, sodass sich diese gar nicht erst kennen, sondern eben nur Nachrichten austauschen. Aber wie schaffe ich es das mit sinnvolle mit den Views?

Meine Idee war, dass ich einen Controller, der ein Frame als View hat, eine GetView-Methode spendiere, die über ein entsprechendes Interface definiert ist:
Delphi-Quellcode:
IFrameController = interface
  function GetView(): IFrame;
end;
So kann ich von jedem Controller die entsprechende Komponente anfordern. Aber sollte ein Controller seine View nach außen geben? Wie macht ihr das denn?

s.h.a.r.k 26. Aug 2012 23:02

AW: MVC: View in View einbetten -- Kommunikation?
 
Hat keine Ideen oder will sein Wissen mit mir teilen? :oops:

mquadrat 27. Aug 2012 13:14

AW: MVC: View in View einbetten -- Kommunikation?
 
Na das kommt wohl drauf an, wo der View letzendlich ausgewählt wird. Wenn der Controller macht, dann bleibt dir ja nichts anderes übrig als diesen nach dem View zu fragen. Oder versteh ich grad nicht was du meinst?

s.h.a.r.k 27. Aug 2012 13:53

AW: MVC: View in View einbetten -- Kommunikation?
 
Nehmen wir ein praktisches Beispiel: eine Benutzerverwaltung. In einem Fenster soll links eine Auswahl an Nutzer stehen und rechts die Rechte für einen ausgewählten Nutzer angezeigt werden.

Nun hätte ich zwei Controller, zwei Models und zwei Views konzipiert, jeweils für den User und den Rechte-Kontext einen. Die Views wären in diesem Fall dann jeweils ein Frame, welche dann auf das Hauptformular platziert werden sollen.

Wir in dem Nutzer-Auswahl-Frame ein Nutzer selektiert, wird der User-Controller benachrichtigt und dieser sendet eine Message über das Mediator-Pattern an alle anderen Controller, die sich für die Änderung interessieren. So wird die Anzeige der Rechte aktualisiert.

Nun ist aber mein Problem, dass ich nicht so recht weiß, wie ich die einzelnen Frames auf die Main-Form klatschen soll. Klar, ich könnte es machen, wie oben beschrieben, indem ich die jeweiligen Controller nach den Views frage und diese dann entsprechend auf die Form platziere. Aber ist das ein sinvoller Weg? Gibt es andere, bessere Wege? Auf das kommt es mir gerade an.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz