Mise à jour de l'ensemble de données
De RAD Studio (Français)
Remonter à Contrôles orientés données - Index
A ce point, une modification dans le contrôle orienté données a changé les valeurs dans la classe du lien de données sur un champ. La dernière étape de la création d'un contrôle permettant la modification des données consiste à mettre à jour l'ensemble de données avec la nouvelle valeur. Cela doit se produire après que la personne ayant changé la valeur du contrôle orienté données quitte le contrôle en cliquant à l'extérieur de celui-ci ou en appuyant sur la touche Tab.
Remarque : Les applications VCL définissent des ID de message pour les opérations sur les contrôles. Par exemple, le message CM_EXIT est envoyé au contrôle lorsque l'utilisateur quitte celui-ci. Vous pouvez écrire des gestionnaires de messages qui répondent au message. Et ensuite, lorsque l'utilisateur quitte le contrôle, la méthode CMExit, gestionnaire du message CM_EXIT, répondra en mettant à jour l'enregistrement dans l'ensemble de données avec les valeurs modifiées dans la classe lien de données sur un champ. Pour plus d'informations sur les gestionnaires de messages, voir Gestion des messages et des notifications système.
Pour mettre à jour l'ensemble de données depuis un gestionnaire de message, suivez ces instructions :
- Ajoutez le gestionnaire de message au composant TDBCalendar :
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 };
- Implémentez la méthode CMExit afin qu'elle ressemble à ceci :
procedure TDBCalendar.CMExit(var Message: TWMNoParams); begin try FDataLink.UpdateRecord; { indiquer à la liaison de données de mettre à jour la base de données } except on Exception do SetFocus; { si échec, ne pas perdre la focalisation } end; inherited; end;
void __fastcall TDBCalendar::CMExit(TWMNoParams &Message) { try { FDataLink.UpdateRecord(); // Indiquer au lien de données d'actualiser la base de données } catch(...) { SetFocus(); // si échec, ne pas perdre la focalisation throw; } }
Pour mettre à jour l'ensemble de données quand l'utilisateur quitte le contrôle, suivez les étapes ci-après :
- Ajoutez un override à la méthode DoExit du composant TDBCalendar :
type TDBCalendar = class(TSampleCalendar); private procedure DoExit; override; . . . end;
class PACKAGE TDBCalendar : public TSampleCalendar { private: DYNAMIC void __fastcall DoExit(void); . . . };
- Implémentez la méthode DoExit afin qu'elle ressemble à ceci :
procedure TDBCalendar.CMExit(var Message: TWMNoParams); begin try FDataLink.UpdateRecord; { indiquer à la liaison de données de mettre à jour la base de données } except on Exception do SetFocus; { si échec, ne pas perdre la focalisation } end; inherited; { laisser la méthode héritée générer un événement OnExit } end;
void __fastcall TDBCalendar::DoExit(void) { try { FDataLink.UpdateRecord(); // Indiquer au lien de données d'actualiser la base de données } catch(...) { SetFocus(); // si échec, ne pas perdre la focalisation throw; } TCustomGrid::DoExit(); // laisser la méthode héritée générer un événement OnExit }