Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Konzept: Daten und GUI synchronisieren (https://www.delphipraxis.net/192358-konzept-daten-und-gui-synchronisieren.html)

Phunkafizer 11. Apr 2017 19:48

Konzept: Daten und GUI synchronisieren
 
Moin,

Ich möchte mir ein Programm schreiben mit welchem ich grafisch ein bestimmtes Dateiformat (eine Konfigurationsdatei einer Maschine) schreiben und lesen kann. Ich habe mir dazu eine Klasse gebaut die diese Datei schreibt und liest. Jedes Control ruft eine Setmethode der Dateiklasse auf, aber wie könnte ich umgekehrt, wenn sich die Daten ändern, das entsprechende Control aktualisieren? Es handelt sich um ganz unterschiedliche Controls wie etwa Comboboxen, Spinedits, Checkboxen usw.

Gruß
Phunkafizer

hoika 11. Apr 2017 22:27

AW: Konzept: Daten und GUI synchronisieren
 
Hallo,
such mal nach MVC (Model-View-Controller) bzw. MVVC
oder nach Observer Pattern.

haentschman 12. Apr 2017 10:11

AW: Konzept: Daten und GUI synchronisieren
 
Hallöle...:P
Zitat:

such mal nach MVC (Model-View-Controller) bzw. MVVC
...finde ich mit Kanonen auf Spatzen geschossen. :roll:

Hier sollte ein einfaches Event der Dateiklasse dem du die Daten übergibst, der Einfachheit die Datenklasse die die Informationen beinhaltet, ausreichen. Im Eventhandler kannst die die Werte den Controls zuordnen.

...fertsch. 8-)

stahli 12. Apr 2017 12:55

AW: Konzept: Daten und GUI synchronisieren
 
Suche mal in der DP nach "Databinding".

Welche Delphi-Version nutzt Du denn? Seit XE gibt es ja die "LiveBindings", allerdings sind die wohl immer noch nicht sehr zuverlässig einzusetzen.

Delphi bietet sonst keine entsprechende Funktionalität an und es gibt entsprechend Ansätze von Entwicklern, so etwas zu lösen - aber keinen etablierten Standard. Auf jeden Fall gibt es eine Lernkurve, wenn man so etwas einsetzen möchte.

Wichtig ist zunächst, dass Du Deine Businesslogik von der GUI trennst. Das hast Du ja offenbar.
Offenbar kannst Du auch schon Datenänderungen aus der GUI in die BL weiter reichen.

Bei Änderungen in der BL muss diese die GUI informieren. Aber das sollte durch eine einfache Nachricht erfolgen "NeueDaten" oder "NeueDaten("Vorname") - woraufhin sich die GUI alle Daten neu abruft oder nur den Vornamen.
Wie man das ausgestaltet muss man sich danach überlegen, wie das Projekt sonst aufgebaut ist.
Auf keinen Fall sollte die BL die einzelnen Controls aus der GUI kennen und diese benutzen.

Ein fertiges Databindingframework würde dieses Ziel vereinfachen, aber so etwas gibt es für Delphi ohne Lernkurve leider nicht.

Wenn Du eine entsprechende Lösung nur für dieses Projekt brauchst, dann behalte die Trennung von BL und GUI bei und schaffe Dir einen Informationskanal von der BL zur GUI für Änderungsbenachrichtigungen.

Phunkafizer 12. Apr 2017 20:22

AW: Konzept: Daten und GUI synchronisieren
 
Vielen Dank für die Antworten!

>such mal nach MVC (Model-View-Controller) bzw. MVVC
Danke für die Stichwörter! Observerpattern kannte ich schon, habe aber das bisher nicht in Zusammenhang für diesen Zweck gebracht.

>...finde ich mit Kanonen auf Spatzen geschossen.
Naja, wer weiß wie sich das ganze mal noch erweitert, und für das persönliche Repertoire ist das immer gut

>Wichtig ist zunächst, dass Du Deine Businesslogik von der GUI trennst. Das hast Du ja offenbar.
Halbwegs ja, möchte aber genau da hin. Im Moment ist das so dass die Controls wie Button, Checkbox usw. zum einen die GUI aktualisieren und auf das Model schreiben.

Ich denke ich werde mal ein MVA ausprobieren wie das so tut, hier gibt es sogar ein kurzes Delphi Beispiel:

http://stackoverflow.com/questions/6...he-mvc-pattern

Gruße
Phunkafizer


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

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