Die Datenmenge aktualisieren
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:
- 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
};
- 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:
- Ü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);
.
.
.
};
- 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
}