Mise à jour de l'ensemble de données

De RAD Studio
Aller à : navigation, rechercher

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 Utilisation de la solution de messagerie de l'API Windows.

Pour mettre à jour l'ensemble de données depuis un gestionnaire de message, suivez ces instructions :

  1. 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
 };
  1. 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 :

  1. 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);
    .
    .
    .
 };
  1. 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
 }