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/)
-   -   Live Bindings Clientdataset <-> zu mehreren Komponenten (https://www.delphipraxis.net/182086-live-bindings-clientdataset-zu-mehreren-komponenten.html)

BlackGuest 29. Sep 2014 14:47

Live Bindings Clientdataset <-> zu mehreren Komponenten
 
Ich versuche mich gerade mit XE7 in die neuen Möglichkeiten einzuarbeiten, die die Live Bindings bieten.
Momentan versuche ich mich an einem kleinen Datenbankprojekt. Ich habe ein TClientDataset, welches in einem Datenbankformular platziert ist.
Auf die Daten greife ich über ein zweites Formular zu. Dazu habe ich die einzelnen Datenfelder Über den Livebindingsdesigner mit den Datenfeldern verknüpft.
Die BindSource und ein BindNavigator liegen ebenfalls mit auf dem Eingabeformular. Funktioniert alles so weit ausgezeichnet.

Jetzt will ich die Daten zusätzlich in Tabellenform darstellen und editieren können. Dafür habe ich ein TMSFMXGrid ins Formular gepackt und im Livebindings-Designer dieses ebenfalls mit der BindSource verbunden (* <--> *).
Funktioniert auch. Ich kann Daten im Gitter ändern, und auch im Gitter mit dem BindNavigator navigieren.

Problem ist jetzt, die Änderungen, die ich im Gitter ausführe werden nicht in die Editfelder übernommen. Nach dem Beenden der Anwendung und Neustart sind die Daten, die ich im Grid geändert habe wieder weg. Ändere ich Daten über die Edit-Felder, werden diese dauerhaft in die Datenbank übernommen.

Habe mich schon dumm und dämlich gesucht, muss ich noch irgend eine Funktion aufrufen, die die Daten des TMSFMXGrids in die Datenbank zurückschreibt?

himitsu 29. Sep 2014 15:50

AW: Live Bindings Clientdataset <-> zu mehreren Komponenten
 
Geht es, wenn du nur das Grid an die DataSource bindest?


Eventuell gibt es im Grid keinen Rückkanal ins DataSet, welcher das Schreiben der Datem übernimmt. :gruebel:
Hast du schon bei TMS nachgefragt?

BlackGuest 30. Sep 2014 11:50

AW: Live Bindings Clientdataset <-> zu mehreren Komponenten
 
Ich habe mal versuchsweise eine zweite BindSource nur mit dem Grid verbunden. Das Verhalten ist identisch. Ich kann die Daten im Grid ändern aber nach einem Programmneustart sind die geänderten Daten weg.
Dann habe ich noch versucht ClientdtDaset.ApplyUpdates aufzurufen. Dann bekomme ich die Meldung "fehlender Datenprovider oder Datenpaket". Das Clientdataset hat aber den richtigen Filename.?

Am Anfang hatte ich ein StringGrid an statt des TMS-Grids. Der Eigenschaft Filename des ClientDataSets hatte ich im Objektinspektor fest den Pfad und den Dateinamen meiner Testdatei zugewiesen und diese beim Programmstart geändert. Da hatte ich das Gleiche Verhalten. Nachdem ich im Objektinspektor die Eigenschaft auf '' gesetzt habe ging es dann komischerweise.?

Bei TMS habe ich noch nicht nachgefragt.

Gruß
BlackGuest

Sir Rufo 30. Sep 2014 15:31

AW: Live Bindings Clientdataset <-> zu mehreren Komponenten
 
Liste der Anhänge anzeigen (Anzahl: 1)
Da du ja keinen Source zeigen möchtest - ist wohl zu geheim - hier mal ein kleines Beispielprojekt mit einem ClientDataSet, Navigator, Grid und Edit-Feldern - so wie du das beschrieben hast.

BlackGuest 30. Sep 2014 16:12

AW: Live Bindings Clientdataset <-> zu mehreren Komponenten
 
Liste der Anhänge anzeigen (Anzahl: 1)
Danke für das Beispiel.
Geheim ist da nichts, gibt nur nicht viel an Source. Gut, hätte vielleicht trotzdem Sinn gemacht. Mein Programm sieht eigentlich genau so aus wie das Beispiel.

Ich habe das Beispiel mal modifiziert und ein TMSFMXGrid mit reingepackt. Ergibt genau das gleiche Verhalten.
Ändere ich was im Grid oder in den Editfeldern, werden die Änderungen in allen drei Controls angezeigt. Ändere ich was im TMSFMXGrid, wird die Änderung nur da angezeigt und nach einem Neustart sind die Änderungen weg. Scheint also doch irgend eine Einstellung oder ein Bug im TMSFMXGrid zu sein, wobei ich eher ersteres vermute.

Das modifizierte Beispiel habe ich mal angehängt.

Gruß
BlackGuest

Sir Rufo 30. Sep 2014 16:22

AW: Live Bindings Clientdataset <-> zu mehreren Komponenten
 
Zitat:

Zitat von BlackGuest (Beitrag 1274328)
Am Anfang hatte ich ein StringGrid an statt des TMS-Grids. Der Eigenschaft Filename des ClientDataSets hatte ich im Objektinspektor fest den Pfad und den Dateinamen meiner Testdatei zugewiesen und diese beim Programmstart geändert. Da hatte ich das Gleiche Verhalten. Nachdem ich im Objektinspektor die Eigenschaft auf '' gesetzt habe ging es dann komischerweise.?

Funktioniert denn mein Beipielprojekt bei dir?

Denn anscheinend hat das ja vorher nicht funktioniert.

BlackGuest 30. Sep 2014 20:02

AW: Live Bindings Clientdataset <-> zu mehreren Komponenten
 
Ja, es funktioniert. Genau so wie es soll.:-D
Allerdings nicht, wenn ich zusätzlich ein TMSFMXGrid verwende. Siehe Anhang von meinem letzten Post.

Gruß
BlackGuest

BlackGuest 1. Okt 2014 22:55

AW: Live Bindings Clientdataset <-> zu mehreren Komponenten
 
Die Antwort von TMS war bis jetzt nicht gerade sehr vielversprechend. Es wird wohl schwer sein das nachzuvollziehen, da wohl einiges umgeworfen wurde(von XE5 auf XE6 und auch auf XE7).
Das von TMS mitgelieferte Beispiel (nach Installation unter ...\TMS Pack for FireMonkey Demos\Grid LiveBindings) funktioniert bei mir auch nicht.
Genau das Gleiche Fehlerbild.

Ich habe das TMS Grid angedacht, da ich in dem Gitter ein paar Comboboxen für die Eingabe vordefinierter Werte benötige. Die "alte" Variante, dass ich einfach über die Eingabezelle eine Combobox einblende funktioniert nicht mehr, da ich keine Möglichkeit gefunden habe, wie ich bei dem Firemonkey Grid die Position der aktuell selektierten Zelle ermittle.

Wenn ich es richtig verstanden habe ist die TGrid-Componente aber auch nur ein Container, in dem ich beliebige Controls unterbringen kann. Gibt es dazu irgendwo ein Beispiel?

Gruß
BlackGuest


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