![]() |
AW: TcxGrid - ERR: hat kein übergeordnetes Fenster
Zitat:
|
AW: TcxGrid - ERR: hat kein übergeordnetes Fenster
fundiert kann ich das nicht beantworten.
aber die gleiche funktion unter zuhilfenahme des onDblClick Events anstatt des OnEditDblClick events funktoniert nun tadellos. schaut man sich die events genauer an, stellt man fest, das die OnEdit Variante zwei parameter übergibt: AItem specifies the grid item whose value is being edited. AEdit specifies the cell editor. Das Grid wird wie gesagt in den "edit" modus gesetzt, und ohne die eingabe zu bestätigen oder abzubrechen, hatte ich den fokus auf ein anderes element gesetzt. Wo jedoch der genaue zusammenhang zum parent fehler kommt, kann ich dir nicht sagen, dafür bin ich auch zu frisch im Thema "Delphi". Aber dieses problem ist leicht rekonstruierbar. cxGrid -> OnEditDblClick -> focus auf ein anders element setzen -> Fehler |
AW: TcxGrid - ERR: hat kein übergeordnetes Fenster
Zitat:
Zitat:
|
AW: TcxGrid - ERR: hat kein übergeordnetes Fenster
Hallo,
bei OnDblClick reagiert das gesamte cxGrid, obwohl du nicht auf einem Feld geklickt hast. Du möchtest aber doch einen Datensatz anklicken, wo sich ein Detailformular zum Bearbeiten öffnet. Ich würde dir raten OnCellDblClick zu verwenden. Das reagiert nur wenn du auf einen Datensatz klickst. Außerdem würde ich das cxGrid grundsätzlich sperren, d. h. bei OptionData des DBTabelviews die Eigenschaften Deleting, Editing und Inserting auf False setzen (Appending ist standardmäßig False). Vorausgesetzt du willst im Grid sowieso keine Daten bearbeiten. Das Detailformular würde ich im Event OnCellDblClick erzeugen und mit Showmodal anzeigen (danach natürlich Free(n)). Dann kann man nur noch das zuletzt geöffnete Formular bearbeiten und das Grid nicht anklicken, somit auch keinen Datensatz wechseln. So z. B.
Delphi-Quellcode:
Ich hoffe ich konnte ein wenig helfen.
frmDetail := TfrmDetail.Create(self);
try case frmDetail.ShowModal of mrOk : begin .... MachWas; end; mrCancel : begin .... MachNüscht; end; end; finally frmDetail.Free; end; Gruß Matthias <edit> Fehler beseitigt. |
AW: TcxGrid - ERR: hat kein übergeordnetes Fenster
Ich würde übrigens anders vorgehen:
Dein Formular hat zwei Bearbeitungsmodi: 'Scrollen' und 'Bearbeiten'. Das Grid ändert nun sein Verhalten abhängig vom Bearbeitungsmodus und eben nicht direkt durch das Event, das den Moduswechsel durchführt. Weiterhin gibt es -nur als Denkanstoß- noch mindestens drei weitere Möglichkeiten 1. Öffne einen modalen Dialog, um die Änderungen am Record vorzunehmen. Gleichzeitig ist dein Grid eh gesperrt, eben weil der separate Dialog modal ist. 2. Du kannst du Daten auch direkt im Grid ändern. 3. Du musst das Grid nicht sperren, wenn ein Datensatz verändert wird. Du solltest aber geeignet reagieren, wenn der Fokus auf einen anderen Datensatz gesetzt wird. Du könntest z.B. prüfen, ob der Datensatz verändert wurde und per Messagebox fragen, ob die Daten gespeichert, verworfen, oder der Fokuswechsel verworfen werden soll. |
AW: TcxGrid - ERR: hat kein übergeordnetes Fenster
sorry das ich hier erst so spät noch mal rein schaue.
besten dank für eure Lösungsvorschläge. @ Furtbichler: Zitat:
Mein problem war, das ich dachte das sich die ID des zu bearbeitenden Datensatzes ändert, sobald man zwischen mehreren Zeilen wechselt. Allerdings werden die Daten ja direkt in die "DB" geschrieben, sobald man etwas in den dazu gehörigen DBEdits geändert hat. Durch ein Commit der Transaktionskomponente wurde das dann endgültig gespeichert. und da hatte ich einen fehler eingebaut. Im grunde war es die korrekte konfiguration des grids und der dazu gehörigen komponenten. Ich muss dazu sagen, das ich im thema datasets etc. noch relativer neuling bin, und eher via trial and error die neuen dinge mir erschließe. In dem fall wurde mir von nem kollegen geholfen, der da mal drüber geschaut hat. in diesem sinne, noch mal vielen dank an alle |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:59 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-2025 by Thomas Breitkreuz