Die Datenmenge aktualisieren

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Datensensitive Steuerelemente definieren - Index

Bis jetzt wurden durch eine Änderung im datensensitiven Steuerelement die Werte in der Datenverknüpfungsklasse des Feldes geändert. Im letzten Arbeitsschritt muss die Datenmenge mit dem neuen Wert aktualisiert werden. Die Aktualisierung muss erfolgen, nachdem der Benutzer den Wert im datensensitiven Steuerelement geändert hat und das Steuerelement verlässt, und zwar entweder durch Klicken außerhalb des Steuerelements oder durch Drücken der Taste Tab.

Anmerkung:  In VCL-Anwendungen sind Botschafts-IDs für Operationen mit Steuerelementen vordefiniert. So wird z.B. die Botschaft CM_EXIT an das Steuerelement gesendet, wenn der Benutzer das Steuerelement verlässt. Sie können einen Behandlungsroutine schreiben, um auf die Botschaft zu antworten. In diesem Fall antwortet die Methode CMExit (die Botschaftsbehandlungsroutine für CM_EXIT, indem sie den Datensatz in der Datenmenge mit den geänderten Werten in der Datenverknüpfungsklasse des Feldes aktualisiert. Informationen über die Behandlung von Botschaften finden Sie unter Verwenden der Windows-API-Botschaftslösung.

Zur Aktualisierung der Datenmenge in einer Botschaftsbehandlungsroutine führen Sie folgende Arbeitsschritte aus:

  1. Fügen Sie der Komponente TDBCalendar die Botschaftsbehandlungsroutine hinzu:
 type
   TDBCalendar = class(TSampleCalendar);
   private
     procedure CMExit(var Message: TWMNoParams); message CM_EXIT;
    .
    .
    .
   end;
 class PACKAGE TDBCalendar : public TSampleCalendar
 {
 private:
     void __fastcall CMExit(TWMNoParams Message);
 BEGIN_MESSAGE_MAP
   MESSAGE_HANDLER(CM_EXIT, TWMNoParams, CMExit)
 END_MESSAGE_MAP
 };
  1. Implementieren Sie die Methode CMExit, sodass sie in etwa folgendermaßen aussieht:
 procedure TDBCalendar.CMExit(var Message: TWMNoParams);
 begin
   try
     FDataLink.UpdateRecord; { Verknüpfung zur Aktualisierung der Datenbank auffordern }
   except
     on Exception do SetFocus;                    { Bei Fehlschlag den Fokus nicht weitergeben }
  end;
   inherited;
 end;
 void __fastcall TDBCalendar::CMExit(TWMNoParams &Message)
 {
   try
   {
     FDataLink.UpdateRecord();          // Datenverknüpfung zur Aktualisierung der Datenbank veranlassen
   }
   catch (...)
   {
     SetFocus();                        // Im Fehlerfall Fokus nicht abgeben
     throw;
   }
 }


Um die Datenmenge zu aktualisieren, wenn der Benutzer das Steuerelement schließt, führen Sie folgende Arbeitsschritte aus:

  1. Überschreiben Sie in der Komponente TDBCalendar die Methode DoExit:
 type
   TDBCalendar = class(TSampleCalendar);
   private
     procedure DoExit; override;
    .
    .
    .
   end;
 class PACKAGE TDBCalendar : public TSampleCalendar
 {
 private:
     DYNAMIC void __fastcall DoExit(void);
    .
    .
    .
 };
  1. Implementieren Sie die Methode DoExit, sodass sie in etwa folgendermaßen aussieht:
 procedure TDBCalendar.CMExit(var Message: TWMNoParams);
 begin
   try
     FDataLink.UpdateRecord; { Verknüpfung zur Aktualisierung der Datenbank auffordern }
   except
     on Exception do SetFocus;                    { Bei Fehlschlag den Fokus nicht weitergeben }
  end;
   inherited;            { OnExit-Ereignis durch die geerbte Methode generieren lassen}
 end;
 void __fastcall TDBCalendar::DoExit(void)
 {
   try
   {
     FDataLink.UpdateRecord();          // Datenverknüpfung zur Aktualisierung der Datenbank veranlassen
   }
   catch (...)
   {
     SetFocus();                        // Im Fehlerfall Fokus nicht abgeben
     throw;
   }
   TCustomGrid::DoExit(); // OnExit-Ereignis durch die geerbte Methode generieren lassen
 }