AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Spring4d, Marshmallow, Änderungen überwachen
Thema durchsuchen
Ansicht
Themen-Optionen

Spring4d, Marshmallow, Änderungen überwachen

Ein Thema von Rainer Wolff · begonnen am 30. Nov 2016 · letzter Beitrag vom 30. Nov 2016
Antwort Antwort
Rainer Wolff

Registriert seit: 25. Okt 2005
Ort: Bretten
321 Beiträge
 
Delphi 10.4 Sydney
 
#1

Spring4d, Marshmallow, Änderungen überwachen

  Alt 30. Nov 2016, 08:53
Hallo Delphianer,

ich versuche mich im Moment an ORM und Trennung von GUI und Businesslogik, mir fehlen aber für die Gui einige gute Ansätze, verschiedene Ansätze mit Livebindings (unter VCL), TObjectDataset und Databinding aus DSharp haben immer wieder Ecken und Kanten.

z.B. habe ich eine Klasse TProgramme, die eine property TProgrammschritte vom Typ IList<TProgrammschritte> enthält. Diese wird über ORM (Marshmallow) auch erfolgreich geladen.
Die TProgramme gehen in z.b. eine Listbox, wo sich ein einzelnes durch Klick selektieren lässt. In der Listbox oder Grid... werden dann die einzelnen Programmschritte angezeigt und lassen sich ändern (und zufügen/löschen).

Ich will nun die Änderungen in den Schritten im Gesamten speichern oder verwerfen und versuche, eine Änderung an den Schritten zu erkennen. Mit einer IObservableList könnte ich ja entsprechende PropertyChanged-Events auslösen und weiter oben z.b. ein Flag setzen, daß sich was geändert hat.
Ich habe aber keine ObservableList, sondern aus Marshmallow nur eine Objectlist.

Wer macht etwas in dieser Richtung und kann mir Tips geben, vielleicht gibt es auch etwas komplexere Projekte im Sourcecode, in denen man schauen kann, wie was gelöst wird.

Die ganzen Demos sind ja ganz nett, aber sobald das etwas komplexer wird, merkt man doch, es hakt da und dort.
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Spring4d, Marshmallow, Änderungen überwachen

  Alt 30. Nov 2016, 10:17
Hi,

ich bin grad an einem größeren Projekt, das mittels Oberserver-Pattern eben diese Trennung vollzieht.

Dazu hab ich mir erstmal, entsprechend der DB-Struktur, Datenobjekte geschrieben.

Ich nehm jetzt mal eine Tabelle aus dem Projekt als Beispiel: Repositories

Dazu hab ich mir 2 Klassen geschrieben (TRepository und TRepositories), die mir die Datenhaltung und
die Bearbeitungsmöglichkeiten und das Handling in der DB abnehmen.

Zusätzlich hab ich bei TRepository (quasi Einzeldatensatzbearbeitung/Detailansicht) eine Methodenliste
sowie die 3 Methoden Register, Unregister und Notify implementiert.

Wenn ein anderes Object sich bei TRepository registriert, wird es bei Änderungen entsprechend Benachrichtigt.

Bei TRepositories (quasi eine Liste der Datensätze) hab ich das gleiche, sowie zusätzlich
eine Methode, so das sich die Liste bei einer Detailansicht als Beobachter registrieren kann.


UI-Element hab ich im Moment ein Listview, das sich bei TRepositories als Beobachter registriert hat. Wenn also die Liste (TRepositories) sich nun ändert, wird der Listview benachrichtig und zeichnet sich neu.
Umgekehrt ist natürlich TRepositories auch wieder bei der Listview registriert um z.B. entsprechende
Änderungen an der Sortierung zu ermöglichen.

Analog dazu soll die Detail-Geschichte laufen. Hier kann sich (neben dem entsprechenden Formular) auch die Liste (TRepositories) beim Detail (TRepository) registrieren. Sobald sich der Datensatz ändert wird das Formular und die Liste benachrichtigt und können entsprechende Aktionen durchführen.
Uwe
e=mc² or energy = milk * coffee²

Geändert von Ghostwalker (30. Nov 2016 um 10:25 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Spring4d, Marshmallow, Änderungen überwachen

  Alt 30. Nov 2016, 11:05
Schau dir mal diese "Prototyp" an (angelehnt an dem JS MVVM-Framework KnockOut)
https://bitbucket.org/sglienke/knockoff
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:39 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