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
` 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
#
4
D 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
` 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 :
` ----- 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