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:
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;
Ich rufe die Methode also selbst in einem Event des Grids auf.
Gibt es einen eleganteren Weg?