Delphi-PRAXiS
Seite 2 von 3     12 3      

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 DevExpress cxGridView Daten auslesen (https://www.delphipraxis.net/132769-devexpress-cxgridview-daten-auslesen.html)

Alfredo 21. Apr 2009 09:57

Re: DevExpress cxGridView Daten auslesen
 
Hallo alzaimer,

das ganze soll ein Datenerfassungsprogramm werden. Die Automatik soll nur die
Erfassungarbeit vereinfachen und ein indvidueller Text sollte noch möglich sein.

Gruß
Alfred

Thomas Horstmann 21. Apr 2009 10:08

Re: DevExpress cxGridView Daten auslesen
 
Hallo,

das GridView ist mit einem "DataSet" verbunden. Dort gibt es "BeforePost".
An dieser Stelle kann alles mögliche abgefrage/gesetzt werden.
Ggf. kann mit Locate (sehr langsam) oder einem Query (besser) gearbeitet werden
umd Referenzwerte zu holen.

Wichtig ist, dass "ForceRefresh" im DataSet aktiv ist.

Delphi-Quellcode:
procedure TFM_Test_Form.dxMemData1BeforePost(DataSet: TDataSet);
begin
if DataSet.FieldByName('Nummer').AsInteger > 1000 then
  DataSet.FieldByName('Text').AsString := 'OK'
else
  DataSet.FieldByName('Text').AsString := 'Nicht OK' ;
end;
Viele Grüße :-)

dataspider 21. Apr 2009 10:22

Re: DevExpress cxGridView Daten auslesen
 
Hi,

es gibt IMHO verschiedene einfache Wege, an den Wert zu kommen.

Mal eine Möglichkeit
GridView.OnEditValueChanged...

Delphi-Quellcode:
procedure TFilterByCodeDemoMainForm.tvCustomersEditValueChanged(Sender:
    TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
Var
  v: Variant;
begin
  // Sender.Controller.EditingController.Edit liefert aktuellen Editor
  // neuer Wert steht immer in EditingValue
  v := Sender.Controller.EditingController.Edit.EditingValue;
  // v hat eigegebenen Wert.
end;
Das ist nur ein Ansatz. Du musst AItem natürlich noch verifizieren oder halt gleich die Evenst von AItem setzen anstatt von GridView.
Das Setzen der neuen Werte kann z.B. über die Columns (GridView.GetColumnByFieldName('FeldName')) erfolgen.

Vielleich hilft es ja weiter.

Cu, Frank

alzaimar 21. Apr 2009 17:27

Re: DevExpress cxGridView Daten auslesen
 
Zitat:

Zitat von Alfredo
Hallo alzaimer,

das ganze soll ein Datenerfassungsprogramm werden. Die Automatik soll nur die
Erfassungarbeit vereinfachen und ein indvidueller Text sollte noch möglich sein.

Gruß
Alfred

Eben. Dafür sind extra angelegte Lookupfelder im Dataset da. Da Du das QuantumGrid verwendest, kannst Du auch eine TcxGridDBColumn mit TcxLookupProperties anlegen und dort die Lookupverknüpfung anlegen. Das Ganze geht ohne jeglichen Code.

Alfredo 22. Apr 2009 14:14

Re: DevExpress cxGridView Daten auslesen
 
@Frank

So funktioniert das super: :thumb:


Delphi-Quellcode:
procedure TForm1.cxGrid1DBTableView1GKTOPropertiesEditValueChanged(Sender: TObject);
begin
edit3 := cxGrid1DbTableView1.Controller.EditingController.Edit.EditingValue;
if edit3 = 4910 then
  begin
  cxGrid1DBTableView1.GetColumnByFieldName('BUCHTEXT').EditValue := 'Porto';
  cxGrid1DBTableView1.GetColumnByFieldName('GKTO').EditValue := edit3;  
  end
end;
Hinweis: der 2. EditValue ist notwendig, weil wohl durch den ersten Befehl der aufrufende Editor geschlossen wird, ohne dass der eingegebene Wert abgespeichert wird.


@alzaimer
Ich werde mir das mit dem Lookup, wegen der zu erwartenden größeren Anzahl an Abfragen, noch anschauen.

Gruß
Alfred

dataspider 22. Apr 2009 14:48

Re: DevExpress cxGridView Daten auslesen
 
Hi,

man sollte IMHO:
Delphi-Quellcode:
cxGrid1DbTableView1.Controller.EditingController.Edit.PostEditValue;
verwenden (statt der erneuten Zuweisung).

Frank

uligerhardt 22. Apr 2009 15:25

Re: DevExpress cxGridView Daten auslesen
 
Zitat:

Zitat von dataspider
Delphi-Quellcode:
cxGrid1DbTableView1.Controller.EditingController.Edit.PostEditValue;

Mit dem DevEx-Zeug kann man ja tolle Sachen machen, aber diese ganzen Controller gehen mir auf den ****. :mrgreen:
Z.B. Edit-Modus programmatisch abwürgen:
Delphi-Quellcode:
    TableView.BeginUpdate;
    try
      TableView.DataController.Cancel;                       // <= hier einer
      TableView.Controller.EditingController.HideEdit(False); // <= hier noch zwei
    finally
      TableView.EndUpdate;
    end;

Alfredo 22. Apr 2009 19:36

Re: DevExpress cxGridView Daten auslesen
 
@Frank,

it works. :)

Wie kommt man denn an das ganze Wissen über diese Editoren?



@Uli

dann mußt Du halt ********.cancel; machen :mrgreen:


Gruß
Alfred

uligerhardt 23. Apr 2009 08:10

Re: DevExpress cxGridView Daten auslesen
 
Zitat:

Zitat von Alfredo
dann mußt Du halt ********.cancel; machen :mrgreen:

Aua. :lol:

dataspider 23. Apr 2009 08:36

Re: DevExpress cxGridView Daten auslesen
 
Zitat:

Zitat von Alfredo
Wie kommt man denn an das ganze Wissen über diese Editoren?

In der Regel finde ich die Lösung immer hier:
DevExpressSupportCenter

Ich nutze die Kompo' s halt schon ein paar Jahre.

Freut mich, dass ich helfen konnte.

Frank


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 Uhr.
Seite 2 von 3     12 3      

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