AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi DevExpress cxGrid und LayoutControll neuer Datensatz.
Thema durchsuchen
Ansicht
Themen-Optionen

DevExpress cxGrid und LayoutControll neuer Datensatz.

Ein Thema von stOrM · begonnen am 25. Jul 2016 · letzter Beitrag vom 26. Jul 2016
Antwort Antwort
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
436 Beiträge
 
Delphi 10.3 Rio
 
#1

DevExpress cxGrid und LayoutControll neuer Datensatz.

  Alt 25. Jul 2016, 19:01
Moin,
ich denke mal ich habe irgendwo in dem Wust von Einstellungen eventuell etwas falsch stehen.
Das Problem ist das ich meiner Anwendung zwei Button verwende Neu zum anlegen eines neuen Datensatzes und Edit zum editieren eines vorhandenen Datensatzes.
Beim editieren gibt es keine Probleme das Grid steht auf dem zu editierenden Datensatz im LayoutControl kann ich über diverse Editfelder die Daten beliebig ändern.

Beim hinzufügen eines neuen Datensatzes passiert folgendes:
Grid hat den Fokus, man klickt auf Neu, die Editfelder im LayoutControl sind leer, beim klick auf eines der Editfelder im LayoutControl springt das Grid plötzlich auf einen vorhandenen Datensatz (meist der erste in der Tabelle)

Lustigerweise, wenn das Grid nicht den Fokus hat sprich ich klicke bevor ich auf den Neu Button klicke erstmal auf das LayoutControl kein Problem dann bleibt das Grid auf dem neuen Datensatz stehen und wechselt nicht auf einen alten.

Nun dachte ich ok, also vor Neu klick fokus woanders hin werfen. Nöö bringt nichts.
Dann hab ich nach einigen (man kann schon sagen Stunden durch sämtliche Properties des Grids folgendes gefunden:

cxGrid1DBTableView1.DataController.DataModeController.SyncMode := False;

behebt das Problem zwar, allerdings muss ich nach dem Append selbiges wieder auf True setzen das sonst ein klick auf das Grid den Datensatz im LayoutControl nicht mehr aktualisiert.

Gut ich kann notfalls damit leben aber ich frage mich was das Problem ist bzw. wie man das ganze behebt. (Mir ist bekannt das man nicht direkt über die DatenControls auf Daten zugreifen bzw. diese ändern sollte ich werde das bei Zeiten mal in Listen umändern.)
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.357 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: DevExpress cxGrid und LayoutControll neuer Datensatz.

  Alt 25. Jul 2016, 19:43
Hi

Wie ist die Grid eingestellt.

GridMode (True, False)

Was machst du beim Klick auf den Button Neu
DataSet.Append oder über das GridView -> DataController.Append

Je nach GridMode gibt es da verschiedene Fallstricke...

Frank
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
436 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: DevExpress cxGrid und LayoutControll neuer Datensatz.

  Alt 25. Jul 2016, 19:57
Gridmode = False
Append = Uniquery.append
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.357 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: DevExpress cxGrid und LayoutControll neuer Datensatz.

  Alt 25. Jul 2016, 20:09
Ich benutze bei GridMode := False DataController.Append...
SyncMode sollte eigentlich auf True stehen.

Je nach Datenbank und Verfügbarkeit des Primary Key' s sollte das (die) PK - Feld (er) unter KeyFieldNames zugewiesen werden.
IMHO benutzt DevExpress diesen Wert zur Positionierung.

Ist KeyFieldNames gesetzt?


Frank
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
436 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: DevExpress cxGrid und LayoutControll neuer Datensatz.

  Alt 25. Jul 2016, 20:13
Ich benutze bei GridMode := False DataController.Append...
SyncMode sollte eigentlich auf True stehen.

Je nach Datenbank und Verfügbarkeit des Primary Key' s sollte das (die) PK - Feld (er) unter KeyFieldNames zugewiesen werden.
IMHO benutzt DevExpress diesen Wert zur Positionierung.

Ist KeyFieldNames gesetzt?


Frank
KeyFieldNames nein nicht gesetzt.
Was mich wundert wieso beim editieren, das Problem nicht auftritt und beim append auch nicht wenn das Grid den Fokus verliert bzw OnExit ausgelöst wird.
DB = MySQL
Verbindung über UniDac

Also nur zur Verständnis, dass Grid benutze ich nur zur Anzeiger und Navigation durch die Datensätze, editiert wird im Grid nichts.

Geändert von stOrM (25. Jul 2016 um 20:15 Uhr) Grund: Alzheimer
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.357 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: DevExpress cxGrid und LayoutControll neuer Datensatz.

  Alt 25. Jul 2016, 20:28
Ich bin mir ziemlich sicher, dass KeyFieldNames das Problem lösen würde.

Wenn du als PK z.B. ein Feld ID hast, dann positioniert er anhand dieses Wertes.
Bei Append wäre das Null (sofern auf der DB erzeugt) oder halt eine neue ID.
Dann sollte das Sync auch ordentlich funktionieren.

Frank
Frank Reim
  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 07:30 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