Un meilleur job mieux payé ?

Deviens chef de projet, développeur, ingénieur, informaticien

Mets à jour ton profil pro

ça m'intéresse

Developpez.com - 4D
X

Choisissez d'abord la catégorieensuite la rubrique :


Encapsulation de la commande CONFIRMER (pour localisation, auto-validation)

Date de publication : 22/06/2006 , Date de mise à jour : 12/09/2006

Par Thomas Schlumberger (Responsable Intl Tech Support)
 



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 auto-valider le dialogue au bout de N Ticks si on le désire.


La méthode principale appellée : o_Confirmer

Méthode : o_Confirmer
  ` 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 auto-validation.
  ` ----------------------------------------------------
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 auto-validation 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  ` auto-confirmation 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
   ` Paramètres passés :
   ` $1 (Entier Long) = Numéro du process appelant cette méthode
   ` $2 (Entier Long) = (optionnel) Nombre de Ticks avant une auto-validation.
   ` ----------------------------------------------------

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
   ` ----- Exemple 1 ----------------
   ` avec auto-validation 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'auto-validation.")
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


Valid XHTML 1.1!Valid CSS!

Copyright © 2006 4D s.a.. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.

Contacter le responsable de la rubrique 4D