IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Encapsulation de la commande CONFIRMER (pour localisation, autovalidation)

L'auteur

Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Présentation ♪

Produit : 4D 2003, 4D 2004  ·  Plateforme : Mac & Win

Voici deux méthodes de type utilitaire pour mieux gérer une confirmation, en lieu et place de l'utilisation directe de la commande CONFIRMER, suivies de quelques exemples d'utilisation.

L'utilisation de la méthode principale permet :

  • de confirmer automatiquement si exécuté sur 4D Server (pour éviter le dialogue) ;
  • de localiser par défaut les deux boutons selon un réglage de langue d'interface ;
  • de pouvoir autovalider le dialogue au bout de N Ticks si on le désire.

La méthode principale appelée : o_Confirmer

Méthode : o_Confirmer
Sélectionnez
  ` Paramètres à passer :
  ` $1 (Texte) = Texte de la confirmation demandée
  ` $2 (Texte) = (optionnel) Texte du bouton OK
  ` $3 (Texte) = (optionnel) Texte du bouton Annuler
  ` $4 (Entier Long) = (optionnel) Nombre de Ticks avant une autovalidation.
  ` ----------------------------------------------------
C_ENTIER LONG(<>Lang_Interface)  ` ou déclaration dans une méthode COMPILER
C_BOOLEEN(vb_FinSaisie)  ` ou déclaration dans une méthode COMPILER

C_TEXTE($1;$2;$3)
C_ENTIER LONG($4)

C_TEXTE($vt_Message_Confirm;$tsh_vt_oui;$tsh_vt_non)
C_ENTIER LONG($vl_ProcessNum)

vb_FinSaisie:=Faux
Si ((Nombre de parametres=0) | ($1=""))
   Si (<>Lang_Interface=0)  `Français (par défaut)
      $vt_Message_Confirm:="(pas de texte)"
   Sinon   ` par défaut en anglais, pour ne pas multiplier les cas.
      $vt_Message_Confirm:="(no text...)"
   Fin de si 
Fin de si 

$vt_Message_Confirm:=$1
   ` -----------------------------
Si (Type application#4D Server )  ` on peut donc afficher un dialogue.
    
   Si (<>Lang_Interface=0)  `Français
      $tsh_vt_oui:="Oui"
      $tsh_vt_non:="Non"
   Sinon   ` par défaut en anglais, pour ne pas multiplier les cas.
      $tsh_vt_oui:="OK"
      $tsh_vt_non:="No"
   Fin de si 
    
   Si (Nombre de parametres>1) ` texte du bouton de validation
      $tsh_vt_oui:=$2
      Si (Nombre de parametres>2)  ` texte du bouton d'annulation.
         $tsh_vt_non:=$3
      Fin de si 
   Fin de si 
    
   Si (Nombre de parametres>3)  ` pour gérer une autovalidation au bout de N ticks
      $vl_ProcessNum:=Nouveau process("o_Validation";16000;"$Confirmer";
                      Numero du process courant;$4)
   Fin de si 
    
   CONFIRMER($vt_Message_Confirm;$tsh_vt_oui;$tsh_vt_non)
   vb_FinSaisie:=Vrai

Sinon ` (exécuté sur 4D Server)
   OK:=1  ` autoconfirmation forcée sur 4D Server (évite le dialogue).

Fin de si

La méthode qui gèrera la validation si $4 est passé à o_Confirmer : o_Validation

Méthode : o_Validation
Sélectionnez
   ` Paramètres passés :
   ` $1 (Entier Long) = Numéro du process appelant cette méthode
   ` $2 (Entier Long) = (optionnel) Nombre de Ticks avant une autovalidation.
   ` ----------------------------------------------------

C_BOOLEEN(vb_FinSaisie)  ` ou déclaration dans une méthode COMPILER

C_ENTIER LONG($1;$2)
C_ENTIER LONG($vl_ProcessDest;$vl_NbTicks)
C_ENTIER LONG($vl_ticks)
C_BOOLEEN($vb_FinProcess)

   ` ----- affectation parametres ----------------
Si (Nombre de parametres>0)
    
    $vl_ProcessDest:=$1  ` process destinataire de la validation
    
   Si (Nombre de parametres>1)
      $vl_NbTicks:=$2
   Sinon 
      $vl_NbTicks:=600  ` après environ 10 secondes d'affichage.
   Fin de si 
    
      ` ----- debut tests ----------------
   $vb_FinProcess:=Faux
   $vl_ticks:=Nombre de ticks
   Repeter 
      ENDORMIR PROCESS(Numero du process courant;10)
      Si (Statut du process($vl_ProcessDest)>=En execution )
         Si (Nombre de ticks<($vl_ticks+$vl_NbTicks))
            ` Est-ce que la confirmation a déjà été faite ?
            LIRE VARIABLE PROCESS($vl_ProcessDest;vb_FinSaisie;$vb_FinProcess)
         Sinon 
            $vb_FinProcess:=Vrai
         Fin de si 
      Sinon
         $vb_FinProcess:=Vrai
      Fin de si 
   Jusque ($vb_FinProcess)

   Si (Statut du process($vl_ProcessDest)>=En exécution )
      LIRE VARIABLE PROCESS($vl_ProcessDest;vb_FinSaisie;$vb_FinProcess)
      Si ($vb_FinProcess=Faux)   ` le dialogue est encore affiché
         GENERER FRAPPE CLAVIER(Retour chariot ;0;$vl_ProcessDest)
         $vb_FinProcess:=Vrai
      Fin de si 
   Fin de si

Fin de si

Exemples d'appels de la méthode o_Confirmer :

Exemples
Sélectionnez
   ` ----- Exemple 1 ----------------
   ` avec autovalidation au bout de 240 ticks ( = 4 secondes) :
C_TEXTE($vt_A_Confirmer)

vt_A_Confirmer:="Cette confirmation sera automatique au bout de 240 ticks."
o_Confirmer (vt_A_Confirmer;"Merci";"Non merci";240)

vt_A_Confirmer:="I will be confirmed automatically after 240 ticks unless you cancel."
o_Confirmer (vt_A_Confirmer;"Please";"Cancel";240)

   ` ----- Exemple 2 ----------------
C_ENTIER LONG(<>Lang_Interface)  ` =0 pour français, =1 pour anglais

Si (<>Lang_Interface=0)
   o_Confirmer ("Vous devez me valider, car pas d'autovalidation.")
Sinon 
   o_Confirmer ("You must validate manually this confirmation.")
Fin de si

   ` la variable process OK sera renseignée comme si CONFIRMER était utilisé directement

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Copyright © 2006 4D s.a.. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.