Einzelnen Beitrag anzeigen

Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#1

OnCalcFields bei Spaltenwechsel im TDBGrid

  Alt 18. Jun 2013, 14:32
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?
  Mit Zitat antworten Zitat