Encapsulation de la commande CONFIRMER (pour localisation, autovalidation)

Thomas Schlumberger

- Titre : Encapsulation de la commande CONFIRMER (pour localisation, autovalidation)

- Auteur : Thomas Schlumberger

- Parution : 22 juin 2006

- Mise à jour : 12 septembre 2006

- Licence : 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.

Sommaire

- I. Présentation ♪

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

` 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

` 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

` ----- 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