OVH Cloud OVH Cloud

WD 7.5 205q Problème avec EnumereChamps

3 réponses
Avatar
Marcel.berman
Bonjour !
J'ai tenté d'utiliser le composant MiseEnEvidence livré avec la LST 53 ...
Malheureusement les camps des onglets ne sont pas pris en compte.
J'utilise la fonction EnumèreChamps() pour rechercher les champs de
l'onglet, mais je ne parviens pas à l'utliser correctement.
Dans l'aide, (je copie) :
---------------------------------
<Objet "parent"> : Chaîne de caractères
Nom de l'objet "parent" (contenant le champ).
Ce paramètre correspond au nom d'une fenêtre, d'un groupe, d'un onglet ou
d'un super-champ.
Si l'objet "parent" est un onglet, la notation suivante doit être utilisée :

<Nom de l'onglet>[<Numéro du volet>]. Par exemple : Onlet1[2]
---------------------------------
Dans mon programme :
--------------------------
Je stocke dans un tableau tout les champs de ma fenêtre.
Dans une boucle, je teste s'il y a des champs de type "typOnglet".
Dans ce cas, je désire énumérer les champs de l'onglets.
Je détermine d'abord le nombre de volets dans mon onglet avec :
{tChamps[nChamps]}..Occurrence
Puis, je boucle pour chaque volet de mon onglet :
EnumèreChamp(tChamps[nChamps]+"["+NumériqueVersChaine(nOnglet)+"]", i)
La valeur de tChamps[nChamps]+"["+NumériqueVersChaine(nOnglet)+"]", dans le
débogueur est bien : "Onglet1[1]"
Mais ...

Erreur à la ligne 31 du traitement Initialisation de FicheMagasin.
Vous avez appelé la fonction EnumèreChamp.
Le passage du paramètre 1 a provoqué une erreur.
Le champ Onglet1[1] est inconnu.

Quelqu'un réussit-il à lister les champs d'un onglet ?

Serait-ce la raison qui fait que le composant fait l'impasse sur les champs
contenus dans un onglet ?

Merci et bien à vous !


--
Marcel Berman
c/o Managing Business SPRL
Allée du Petit Paris, 11
B - 1410 - Waterloo
Tel : +32 2 351.60.64
Fax : +32 2 351.45.78
Gsm : +32 475.799.477

3 réponses

Avatar
Marcel.berman
Salut !

On 30-Jul-2003, "JCF1" wrote:

i est entier
sNomChamp est une chaîne

i = 0; sNomChamp = ""
POUR i = 1 A 5
sNomChamp = EnumèreChamp(Onglet1[1],i)
Trace(sNomChamp)
FIN



La différence entre ton code et le mien, c'est que tu codes en dur le nom de
l'onglet ...
Moi j'utilise les indirections ...
C'est peut-être là où se situe le problème ...
En fait mon but était de faire une routine générique qui me permettait de
lister tous les contrôles éditables d'une fenêtre ( champs, combo, listes,
etc ...) quelle que soit le fenêtre et où ils se trouvent ( plan ou onglet
)...
Je suis donc bien obligé de passer par les indirections ...
J'imagine que le ST doit être au courant, car son composant MiseEnValeur
marche très bien, sauf sur les champs liés à un onglet !
En tout cas dès que j'aurai le temps j'enverrai une petite bafouille au ST
... on ne sait jamais !

Merci en tout cas pour ta réponse !

Bien à toi
--
Marcel Berman
c/o Managing Business SPRL
Allée du Petit Paris, 11
B - 1410 - Waterloo
Tel : +32 2 351.60.64
Fax : +32 2 351.45.78
Gsm : +32 475.799.477
Avatar
JCF1
a écrit dans le message de
news:bg7td7$ifi1c$
Salut !

On 30-Jul-2003, "JCF1" wrote:

> i est entier
> sNomChamp est une chaîne
>
> i = 0; sNomChamp = ""
> POUR i = 1 A 5
> sNomChamp = EnumèreChamp(Onglet1[1],i)
> Trace(sNomChamp)
> FIN

La différence entre ton code et le mien, c'est que tu codes en dur le nom


de
l'onglet ...
Moi j'utilise les indirections ...
C'est peut-être là où se situe le problème ...
En fait mon but était de faire une routine générique qui me permettait de
lister tous les contrôles éditables d'une fenêtre ( champs, combo, listes,
etc ...) quelle que soit le fenêtre et où ils se trouvent ( plan ou onglet
)...
Je suis donc bien obligé de passer par les indirections ...
J'imagine que le ST doit être au courant, car son composant MiseEnValeur
marche très bien, sauf sur les champs liés à un onglet !
En tout cas dès que j'aurai le temps j'enverrai une petite bafouille au ST
... on ne sait jamais !

Merci en tout cas pour ta réponse !

Bien à toi



Bonjour,

J'avais bien compris que vous utilisiez les indirection pour faire un code
généreique, je pratique souvent de la même manière, mais la, par manque de
temps, je voulais tester rapidement EnumèreChamp sur un onglet.
Quand j'aurais 10 minutes je vais voir ce que ça donne en indirection, il y
a toutefois un point qui ma surpris dans votre code (en regardant très vite)
c'est :
EnumèreChamp(tChamps[nChamps]+"["+NumériqueVersChaine(nOnglet)+"]", i)
le [nChamps] entre [ ], normalement la syntaxe est la suivante :
EnumèreChamp(Onglet1[x],i) et dans votre cas il me semble que cela doit
donner comme résultat EnumèreChamp(Onglet[1][x],i) je n'ai pas verifié, mais
il est possible que le problème vienne de la.

Sincères salutations
--
Jean-Claude FLAJOULOT
Sécurité, Conseil & Biométrie


Avatar
Marcel.berman
Salut !

On 30-Jul-2003, "JCF1" wrote:

EnumèreChamp(tChamps[nChamps]+"["+NumériqueVersChaine(nOnglet)+"]", i)
le [nChamps] entre [ ], normalement la syntaxe est la suivante :
EnumèreChamp(Onglet1[x],i) et dans votre cas il me semble que cela doit
donner comme résultat EnumèreChamp(Onglet[1][x],i) je n'ai pas verifié,
mais
il est possible que le problème vienne de la.



En fait je n'ai mis dans mon mail qu'un extrait de mon code ...
En gros, dans mon programme, je fait une première boucle qui énumère les
champs de la fenêtre que je stocke dans le tableau dynamique tChamps.
Une fois tous les champs énuméré ( et là, je n'ai aucun problème ... ) je
parcours mon tableau et je teste le type du champ stocké dans le tableau.
Si c'est un typOnglet, alors je tente d'énumérer les champs de cet onglet.
Dans une boucle, nOnglet me permet de lister le nombre de volet de Onglet1
(voir propriété Occurrence des onglets ) et donc

EnumèreChamp(tChamps[nChamps]+"["+NumériqueVersChaine(nOnglet)+"]", i)
devrait donc être équivalent à EnumereChamps("onglet1[1]",i)

et ... en vous écrivant, je me rends compte qu'il n'y a pas d'indirection là
dedans !
Et donc que je devrais peut être écrire :

EnumèreChamp({tChamps[nChamps]+"["+NumériqueVersChaine(nOnglet)+"]"}, i)

Je n'aurais malheureusement pas le temps de tester cela
aEnumèreChamp(tChamps[nChamps]+"["+NumériqueVersChaine(nOnglet)+"]", i)
avant la semaine prochaine ...

Je vous tiendrai au courant ...

Bien à vous !

Merci encore

--
Marcel Berman
c/o Managing Business SPRL
Allée du Petit Paris, 11
B - 1410 - Waterloo
Tel : +32 2 351.60.64
Fax : +32 2 351.45.78
Gsm : +32 475.799.477