Auf von der Datenquelle übermittelte Änderungen reagieren

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Datensensitive Steuerelemente einer Datenmenge zuordnen


Da die Datenquelle das Bindeglied zwischen dem datensensitiven Steuerelement und dessen Datenmenge darstellt, übermittelt sie auch die gesamte Kommunikation zwischen Steuerelement und Datenmenge. Für gewöhnlich reagieren datensensitive Steuerelemente automatisch auf Änderungen in der Datenmenge. Falls Sie in der Benutzeroberfläche jedoch Steuerelemente verwendet haben, die nicht datensensitiv sind, dann können Sie mithilfe der Ereignisse einer Datenquellenkomponente für diese Steuerelemente von Hand Reaktionen programmieren.

Das Ereignis OnDataChange wird ausgelöst, wenn sich die Daten in einem Datensatz geändert haben, z.B. wenn einzelne Felder bearbeitet werden, und wenn der Cursor in einen anderen Datensatz bewegt wird. Unter Verwendung dieses Ereignisses lässt sich gewährleisten, dass das Steuerelement die aktuellen Feldwerte der Datenmenge widerspiegelt, da es bei jeglicher Art von Änderung ausgelöst wird. Für gewöhnlich aktualisiert eine OnDataChange-Ereignisbehandlungsroutine den Wert eines nicht-datensensitiven Steuerelements, das Felddaten anzeigt.

Das Ereignis OnUpdateData wird ausgelöst, wenn die Daten im aktuellen Datensatz aktualisiert werden. Beispielsweise wird ein OnUpdateData-Ereignis in dem Zeitraum zwischen dem Aufruf von Post und vor der Übergabe der Daten an den zugrundeliegenden Datenbankserver oder den lokalen Zwischenspeicher.

Das Ereignis OnStateChange wird bei jeder Statusänderung der Datenmenge ausgelöst. Sie können mit der Eigenschaft State der Datenmenge deren aktuellen State ermitteln.

Die folgende Ereignisbehandlungsroutine für OnStateChange aktiviert bzw. deaktiviert z.B. Schaltflächen und Menübefehle abhängig vom aktuellen Status:

 procedure Form1.DataSource1.StateChange(Sender: TObject);
 begin
   CustTableEditBtn.Enabled := (CustTable.State = dsBrowse);
   CustTableCancelBtn.Enabled := CustTable.State in [dsInsert, dsEdit, dsSetKey];
   CustTableActivateBtn.Enabled := CustTable.State in [dsInactive];
   { ... }
 end;

Anmerkung: Weitere Information zum Status von Datenmengen finden Sie unter Status von Datenmengen bestimmen.

Siehe auch