Delphi-PRAXiS
Seite 1 von 2  1 2      

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 DBCtrlGrid-ähnliche Darstellung mit DevExpress cxGrid (https://www.delphipraxis.net/130556-dbctrlgrid-aehnliche-darstellung-mit-devexpress-cxgrid.html)

Windwalker 10. Mär 2009 14:32


DBCtrlGrid-ähnliche Darstellung mit DevExpress cxGrid
 
Hallo,

wie Ihr schon mitbekommen habt, bin ich sehr neu in der Entwicklung mit der Quantum Grid Suite.

Ich möchte nun, ähnlich wie mit dem herkömmlichen TDBCtrlGrid eine eigenes Format der Darstellung erzeugen.

Könnt Ihr mir eine kleine Berschreibung geben, wie ich das mit der Quantum Grud Suite mache?
Kann ich daszu das cxGrid oder brauche ich ein anderes Grid?

Im Voraus danke für die Hilfe!

dfried 10. Mär 2009 14:52

Re: DBCtrlGrid-ähnliche Darstellung mit DevExpress cxGrid
 
Zitat:

Zitat von Windwalker
Ich möchte nun, ähnlich wie mit dem herkömmlichen TDBCtrlGrid eine eigenes Format der Darstellung erzeugen.

Definiere mal "eine eigenes Format" bitte etwas genauer...

Windwalker 10. Mär 2009 15:10

Re: DBCtrlGrid-ähnliche Darstellung mit DevExpress cxGrid
 
Ich möchte Attribute der Datensätze auslesen und neben den Datensätzen Checkboxen plazieren.
Jede Checkbox steht für eine bestimmte Operation oder Veränderung, die auf die Datensätze angewendet werden kann.
So möchte ich auswählen können, welche Opartion auf welche Datensätze angewendet werden soll, wenn ich schließlich auf den "Ausführen" Button klicke.

Also im Großen und Ganzen sollen je Datensatz bestimmte Attribute (z.B. Bezeichnung, Herkunft, etc.) angezeigt werden und bei jedem Datensatz möchte ich z.B. 2 Checkboxen plazieren, um ihn für eine bestimmte Operation auszuwählen.

dfried 10. Mär 2009 15:22

Re: DBCtrlGrid-ähnliche Darstellung mit DevExpress cxGrid
 
Zitat:

Zitat von Windwalker
Also im Großen und Ganzen sollen je Datensatz bestimmte Attribute (z.B. Bezeichnung, Herkunft, etc.) angezeigt werden und bei jedem Datensatz möchte ich z.B. 2 Checkboxen plazieren, um ihn für eine bestimmte Operation auszuwählen.

Sollen die Attribute/Checkboxen in einer Zeile stehen oder wie im DBCtrlGrid frei anordenbar sein?
Wenn ersteres, dann schau dir mal das Property "Properties" des DBTableViews an, dort kannst du eine Spalte z.B. in eine CheckBox, ComboBox, DateEdit, etc. "verwandeln".
Wenn zweiteres, dann ist wohl eher das Stichwort "CardView" was für dich.

Windwalker 10. Mär 2009 15:32

Re: DBCtrlGrid-ähnliche Darstellung mit DevExpress cxGrid
 
Okay, dann waren meine Vermutungen und ersten Versuche ganz gut.
Ich bleibe erstmal beim (DB)TableView.

Wenn ich nun DBTableView verwende, haben meine Checkboxen ja ein DBItemDataBinding.
Jetzt bin ich nicht ganz sicher, ob dies richtig ist, da meine Checkboxen ja keine Werte meiner Datenbank-Relation repräsentieren, sondern eher der Programmsteuerung (bzw. der Verarbeitung der angezeigten Datensätze) dienen. Also sind sie nicht an Attribute der Datensätze gebunden.
Jedoch brauche ich an sich ja das DataBinding des DBTableView, um meine Daten aus der Datenbank zu lesen.

Auch suche ich bei den Checkboxen die Möglichkeit (unter Properties sehe ich es nicht), sie per Default auf Unchecked zu setzen.
Beim Programm-Start sind sie für jeden Datensatz gecheckt.

mjustin 10. Mär 2009 16:28

Re: DBCtrlGrid-ähnliche Darstellung mit DevExpress cxGrid
 
Zitat:

Zitat von Windwalker
Wenn ich nun DBTableView verwende, haben meine Checkboxen ja ein DBItemDataBinding.
Jetzt bin ich nicht ganz sicher, ob dies richtig ist, da meine Checkboxen ja keine Werte meiner Datenbank-Relation repräsentieren, sondern eher der Programmsteuerung (bzw. der Verarbeitung der angezeigten Datensätze) dienen. Also sind sie nicht an Attribute der Datensätze gebunden.
Jedoch brauche ich an sich ja das DataBinding des DBTableView, um meine Daten aus der Datenbank zu lesen.

Nicht die Datenbank, das DataSet ist entscheidend: in z.b. einem ClientDataSet kann man eigene Felder definieren, die nicht an Felder der Datenbank gebunden sind. Diese kann man natürlich nicht in der Datenbank speichern. Aber sie sind im Grid editierbar. Also braucht man nur noch eine Logik, die alle Sätze durchgeht und die selbstdefinierten Felder auswertet - am besten bevor man das ClientDataSet schliesst ;)

Windwalker 11. Mär 2009 08:39

Re: DBCtrlGrid-ähnliche Darstellung mit DevExpress cxGrid
 
Hat das was mit berechneten Feldern zu tun?

Wenn ja, ich lese in diesem Zusammenhang auch immer "persistente Felder".
Was sind das für welche?


Ich bin jetzt mal dabei, in meiner Query die Felder zu definieren.
Die die ich aus der DB auslese als Data-Fields und meine Checkboxen als Calculated.
Mal schauen, ob ich so weiterkomme....

mkinzler 11. Mär 2009 08:42

Re: DBCtrlGrid-ähnliche Darstellung mit DevExpress cxGrid
 
Zitat:

Wenn ja, ich lese in diesem Zusammenhang auch immer "persistente Felder".
Was sind das für welche?
Das sind Zugriffsobjekte auf die Felder (im Feldeditor angelegt)

Union 11. Mär 2009 08:55

Re: DBCtrlGrid-ähnliche Darstellung mit DevExpress cxGrid
 
Um in einem TcxGridView Felder anzulegen, die nicht in der Datenmenge enthalten sind, musst Du nur eine neue Spalte anlegen und unter DataBinding.ValueType den gewünschten Datentyp sowie unter Properties den entsprechenden dazugehörigen Editortyp festlegen. Der Zugriff auf das 'virtuelle' Feld geschieht dann ganz normal über die Values des DataController-Objekts wie sonst auch:
Delphi-Quellcode:
with cxGridBkzDBTableViewBkz.DataController do
begin
   for i := 0 to RecordCount-1 do
   begin
      if Values[i, 0] then ...
   end;
end;

Windwalker 11. Mär 2009 10:00

Re: DBCtrlGrid-ähnliche Darstellung mit DevExpress cxGrid
 
Super, danke, jetzt komme ich zurecht!

Noch eine Frage:
Kann ich den Checkboxes auch Default-Werte zuweisen?
Ansonsten muss ich beim Erzeugen des Views alle Einträge durchgehen und manuell auf False setzen:

Delphi-Quellcode:
with cxGrid_DBTableView1.DataController do
    begin
      for i := 0 to RecordCount - 1 do
      begin
        values[i,2] := false;  // erste Checkbox
        values[i,3] := false;  // zweite Checkbox
      end;
    end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:48 Uhr.
Seite 1 von 2  1 2      

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