Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi FireMonkey, Datenbank und Schichtentrennung (https://www.delphipraxis.net/190312-firemonkey-datenbank-und-schichtentrennung.html)

BattleScarz 22. Sep 2016 10:51

FireMonkey, Datenbank und Schichtentrennung
 
Schönen guten Tag,

ich bin neu im Umgang mit FireMonkey und bastel gerade an meinem ersten Projekt.

Ziel ist es, dass eine Suche in einer MariaDB ausgeführt wird und die Ergebnisse in der FireMonkey Oberfläche angezeigt werden.
Bei dem Projekt möchte ich die Schichten klar von einander trennen.
Das heißt im Moment habe ich die GUI, die Geschäftslogik und eine Datenzugriffsschicht. Die GUI soll nur die Geschäftslogik kennen und die Geschäftslogik soll nur das DatenModul kennen.
Soweit so gut.

Meine Frage ist nun, wie ich der GUI die Daten durch die Geschäftslogik unterschieben kann.
Bislang habe ich es nicht hinbekommen, dass in der GUI die Daten sichtbar ankommen. Bislang habe ich bei VCL Datenbankkomponenten immer mit dem Attribut DataSource arbeiten können.
Bei FireMonkey steige ich aber mit den LiveBindings noch nicht so ganz durch.

In Beispielen liegen die Querys oder anderen Datenquellen immer neben den GUI-Komponenten. Bei meinem Projekt bekomme ich in die GUI aber nur noch ein DataSet.

Vielen Dank für eure Hilfe

mkinzler 22. Sep 2016 11:00

AW: FireMonkey, Datenbank und Schichtentrennung
 
In FMX gibt es keine Datacontrols mehr. Deshalb muss man sich Live-Bindings oder anderen Techniken verwenden (MVC-MVP-MVVC)

himitsu 22. Sep 2016 11:02

AW: FireMonkey, Datenbank und Schichtentrennung
 
Wenn du ein TDataModul hast, dann kannst du im OI, bei einem Property, auch
Delphi-Quellcode:
DataModulName.DataSourceName
angeben, statt
Delphi-Quellcode:
DataSourceName
zu einer Quelle auf der eigenen Form.

Hoffe es hilft.



Im Notfall ginge auch DataSet auf 'nem Datenmodul, DataSource auf der Form (verbunden siehe oben) und dann via LiveBinding an das Grid/Edit binden.

Ansonsten bleibt dir nur das LiveBinding per Code vorzunehmen und den visuellen Editor zu ignorieren. ... da kannst du dann ja Alles von sonstwo mit sonstwem sonstwie verknubbln.

Mavarik 22. Sep 2016 11:52

AW: FireMonkey, Datenbank und Schichtentrennung
 
Zitat:

Zitat von mkinzler (Beitrag 1348446)
Deshalb muss man sich Live-Bindings oder anderen Techniken verwenden (MVC-MVP-MVVC)

Andere Techniken bitte! MVVM?

Oder um es anders zu beschreiben:

Dein Datenmodul hat neue Daten - dann schick eine Message an die GUI "Sie" möge ich bitte aktualisieren. Dann einfach von GUI Seite die Felder auslesen...

Für Deine Trennung, hoffe ich, dass Du gegen die Datenbankschicht per Interfaces linkst, um diese ggf. austauschen zu können...

Also Eigentlich:

GUI -> GUI_Steuerung -> Business Logik -> Datensteuerung -> Interface(Datenzugriff)

Mavarik :coder:

Rollo62 22. Sep 2016 20:28

AW: FireMonkey, Datenbank und Schichtentrennung
 
Schau mal hier
https://delphiaball.co.uk/tag/livebindings/

Aber wg. der LiveBindings per Code ...
Nicht mit dem Designer

Rollo


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:20 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