![]() |
OnCalcFields bei Spaltenwechsel im TDBGrid
Ich habe ein TADQuery (FireDAC) mit diversen calculated Fields an eine TDBGrid-Komponente gehängt und möchte in dem Grid bestimmte Berechnungen durchführen...
Die Query-Komponente führt OnCalcFields allerdings immer erst nach einem Update aus (z.B. wenn ich zum nächsten Datensatz wechsele), was auch logisch ist, da die Query-Komponente von einem Spaltenwechsel gar nichts mitkriegt. Wie kann ich die berechneten Felder bereits neu berechnen lassen, wenn ich im Grid die Spalte wechsele? Angenommen ich habe folgende Spalten: X (Persistent), Y (Persistent), Z (Berechnet) Wenn ich jetzt X oder Y im Grid bearbeite, soll Z sofort neu berechnet werden, sobald ich in eine andere Spalte, bzw. aus dem Editmodus springe. Im Moment gehe ich folgenden Weg:
Delphi-Quellcode:
Ich rufe die Methode also selbst in einem Event des Grids auf.
procedure TDummyForm.DBGrid1ColEnter(Sender: TObject);
begin if (self.Query1.State = dsEdit) then self.Query1CalcFields(Query1); end; procedure TDummyForm.Query1CalcFields(DataSet: TDataSet); begin // Hier werden die Spalten neu berechnet end; Gibt es einen eleganteren Weg? |
AW: OnCalcFields bei Spaltenwechsel im TDBGrid
Du könntest OnDataChange von der Datasource dafür verwenden.
|
AW: OnCalcFields bei Spaltenwechsel im TDBGrid
Das Problem ist, dass OnDataChange auch bei InternalCalc-Feldern aufgerufen wird. Ich habe so also eine Endlosschleife...
|
AW: OnCalcFields bei Spaltenwechsel im TDBGrid
Ah ok, reicht da die Abfrage auf State und Field nicht um das abzufangen?
|
AW: OnCalcFields bei Spaltenwechsel im TDBGrid
Eigentlich werden die CalcFields automatisch bei jeder Änderung eines Datenfeldwertes neu berechnet. Irgendetwas stimmt da bei dir nicht.
|
AW: OnCalcFields bei Spaltenwechsel im TDBGrid
Zitat:
|
AW: OnCalcFields bei Spaltenwechsel im TDBGrid
Ist bei mir aber True, trotzdem wird nur nach jedem Datensatzwechsel neu berechnet... ich wühle mich mal durch die Quellen
|
AW: OnCalcFields bei Spaltenwechsel im TDBGrid
Zitat:
|
AW: OnCalcFields bei Spaltenwechsel im TDBGrid
Zitat:
|
AW: OnCalcFields bei Spaltenwechsel im TDBGrid
Okay... Also sobald man mindestens ein InternalCalcField im DataSet hat, wird OnCalcFields nicht mehr automatisch aufgerufen...
Ist das jetzt ein Bug, oder by Design?! =/ Ich habe XE3 mit FireDAC 3119 (7.0.1) Kann das mal bitte jemand mit einer neueren Version checken? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:05 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