Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[WD8] Reprise saisie ++ (avis aux experts)

1 réponse
Avatar
alexeyk
Bonjour,

J'aimerais simplifier le contrôle des saisies dans les fiches.
Et j'ai besoin de donner le focus à des champs de saisie
qui peuvent se trouver dans les onglets ou super – champs imbriqués.
Comment faire?

Ce que j'aimerais réaliser :
- Chaque fichier comporte une liste de rubriques obligatoires
(rubriques_obligatoires_fichier=rubrique1+tab+rubrique2...) paramétrée
à l'init du programme
- L'utilisateur valide la saisie (bouton "enregistrer") d'une fenetre
fiche
- Le programme analyse tous les champs de saisie de la fenêtre
(énumération par programmation)
- Si un champ a une liaison fichier, je dois voir si la rubrique est
obligatoire (cf. la liste),
puis vérifier si l'utilisateur a saisi une valeur correcte ou non
(fenetre.champ dans liste_valeurs_interdites (0, null, ‘', …))
- Si la rubrique est obligatoire et l'utilisateur n'a rien saisi alors
il faut :
. colorier le libellé du champ en rouge
. ajouter le libellé champ dans une chaîne de compte rendu d'erreur
- A la fin du test sur tous les champs de la fenêtre il faut :
. afficher un message d'erreur (liste de tous les champs en erreur)
. donner le focus (reprisesaisie / ecranpremier ??? -> c'est la que je
cherche une solution) au premier champ en erreur

1) Comment énumérer tous les champs d'une fenêtre qui ont une liaison
fichier
2) Code générique pour donner le focus à un champ quelconque
3) Contraintes :
- Un champ peut être dans un onglet / super - champ
- Les onglets onglet / super - champs peuvent être imbriqués sur
plusieurs niveaux
- Il faut que le code fonctionne sur n'importe quelle fenêtre
dont on ne connaît pas le contenu à l'avance
- La plupart des champs concerné sont des champs de saisie simples
(monétaire, numérique, date, texte …) ou des combos. On ne contrôle
pas la saisie dans les tables et autres champs complexes.

Le but c'est de positionner automatiquement l'utilisateur sur les
champs en erreur
quand il valide la fiche. L'utilisateur corrige la saisie, valide, et
le programme le positionne sur le champ en erreur suivant, jusqu'à
validation de la fiche (tous les champs obligatoires sont renseignés).

A vous les experts :)

Cordialement,
Alexey K.

1 réponse

Avatar
Pierre BOUSQUET
j'avais fait un bout de code pour lister tous ou (presque tous) les objet s
d'une fenetre, test voir si ca marche

PROCEDURE SeekObjets(ParentþnEnCours(),RecherchePrincipale=Vrai)
// Liste des objets d'une fenêtre
b est entier
c est entier
NbLignes est entier
Char est chaîne
ListeObjets est chaîne

SI PAS MemExiste("ZMObjets") ALORS
MemCrée("ZMObjets")
FIN

BOUCLE
b++
Char=EnumèreChamp(Parent,b)
SI Char="" ALORS SORTIR
NbLignes=MemOccurrence("ZMObjets")+1
MemAjoute("ZMObjets",NbLignes,Char)
SELON {Char}..Type
CAS typOnglet
POUR c=1 A {Char}..Occurrence
SeekObjets({Char}[c],Faux)
FIN
CAS typSuperChamp//,typBarreOutils
SeekObjets(Char,Faux)
FIN
FIN

SI RecherchePrincipale ALORS
MemTrie("ZMObjets")
POUR b=1 A MemOccurrence("ZMObjets")
SI ListeObjets<>"" ALORS
ListeObjets=ListeObjets+TAB
FIN
ListeObjets=ListeObjets+MemPositionne("ZMObjets",b)
FIN
MemSupprimeTout("ZMObjets")
RENVOYER ListeObjets
FIN


"Alexey K." a écrit dans le message de
news:
Bonjour,

J'aimerais simplifier le contrôle des saisies dans les fiches.
Et j'ai besoin de donner le focus à des champs de saisie
qui peuvent se trouver dans les onglets ou super - champs imbriqués.
Comment faire?

Ce que j'aimerais réaliser :
- Chaque fichier comporte une liste de rubriques obligatoires
(rubriques_obligatoires_fichier=rubrique1+tab+rubrique2...) paramétrée
à l'init du programme
- L'utilisateur valide la saisie (bouton "enregistrer") d'une fenetre
fiche
- Le programme analyse tous les champs de saisie de la fenêtre
(énumération par programmation)
- Si un champ a une liaison fichier, je dois voir si la rubrique est
obligatoire (cf. la liste),
puis vérifier si l'utilisateur a saisi une valeur correcte ou non
(fenetre.champ dans liste_valeurs_interdites (0, null, '', .))
- Si la rubrique est obligatoire et l'utilisateur n'a rien saisi alors
il faut :
. colorier le libellé du champ en rouge
. ajouter le libellé champ dans une chaîne de compte rendu d'erreur
- A la fin du test sur tous les champs de la fenêtre il faut :
. afficher un message d'erreur (liste de tous les champs en erreur)
. donner le focus (reprisesaisie / ecranpremier ??? -> c'est la que je
cherche une solution) au premier champ en erreur

1) Comment énumérer tous les champs d'une fenêtre qui ont une liaison
fichier
2) Code générique pour donner le focus à un champ quelconque
3) Contraintes :
- Un champ peut être dans un onglet / super - champ
- Les onglets onglet / super - champs peuvent être imbriqués sur
plusieurs niveaux
- Il faut que le code fonctionne sur n'importe quelle fenêtre
dont on ne connaît pas le contenu à l'avance
- La plupart des champs concerné sont des champs de saisie simples
(monétaire, numérique, date, texte .) ou des combos. On ne contrôle
pas la saisie dans les tables et autres champs complexes.

Le but c'est de positionner automatiquement l'utilisateur sur les
champs en erreur
quand il valide la fiche. L'utilisateur corrige la saisie, valide, et
le programme le positionne sur le champ en erreur suivant, jusqu'à
validation de la fiche (tous les champs obligatoires sont renseignés).

A vous les experts :)

Cordialement,
Alexey K.