Die Datenverknüpfungsklasse des Feldes aktualisieren

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Datensensitive Steuerelemente definieren - Index

Es gibt zwei Arten von Datenänderungen:

  • Eine Änderung im Feldwert, die im datensensitiven Steuerelement sichtbar werden muss.
  • Eine Änderung im datensensitiven Steuerelement, die im Feldwert der Datenbank berücksichtigt werden muss.

Die Komponente TDBCalendar verfügt bereits über die Methode DataChange, die eine Änderung des Feldwertes in der Datenmenge bearbeitet, indem sie diesen Wert der Eigenschaft CalendarDate zuweist. Die Methode DataChange ist die Behandlungsroutine für das Ereignis OnDataChange. Folglich kann die Kalenderkomponente die erste Art der Datenänderung bearbeiten.

Parallel dazu verfügt die Datenverknüpfungsklasse des Feldes über ein Ereignis OnUpdateData. Dieses Ereignis tritt ein, wenn der Benutzer den Inhalt des datensensitiven Steuerelements ändert. Der Kalender besitzt die Methode UpdateData, die zur Behandlungsroutine für das Ereignis OnUpdateData wird. UpdateData weist dem Feld der Datenverknüpfung den geänderten Wert des datensensitiven Steuerelements zu.

Um die Änderung des Wertes im Kalender im Feldwert anzuzeigen:

  1. Fügen Sie eine UpdateData-Methode in den private-Abschnitt der Kalenderkomponente ein:
 type
   TDBCalendar = class(TSampleCalendar);
   private
     procedure UpdateData(Sender: TObject);
    .
    .
    .
   end;
 class PACKAGE TDBCalendar : public TSampleCalendar
 {
 private:
     void __fastcall UpdateData(TObject *Sender);
 };
  1. Implementieren Sie die Methode UpdateData:
 procedure UpdateData(Sender: TObject);
 begin
   FDataLink.Field.AsDateTime := CalendarDate;         { Feldverknüpfung zum Kalenderdatum }
 end;
 void __fastcall TDBCalendar::UpdateData( TObject* Sender)
 {
     FDataLink->Field->AsDateTime = CalendarDate;     // Feldverknüpfung zum Kalenderdatum
 }
  1. Verknüpfen Sie im Konstruktor für TDBCalendar die Methode UpdateData mit dem Ereignis OnUpdateData:
 constructor TDBCalendar.Create(AOwner: TComponent);
 begin
   inherited Create(AOwner);
   FReadOnly := True;
   FDataLink := TFieldDataLink.Create;
   FDataLink.OnDataChange := DataChange;
   FDataLink.OnUpdateData := UpdateData;
 end;
 __fastcall TDBCalendar::TDBCalendar(TComponent* Owner)
   : TSampleCalendar(Owner)
 {
   FDataLink = new TFieldDataLink();       // Das war schon da
   FDataLink->OnDataChange = DataChange;   // Das war auch schon da
   FDataLink->OnUpdateData = UpdateData;   // UpdateData mit OnUpdateData verknüpfen
 }