PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Windev 23 : Enumérer les onglets dynamiques sur un plan de fenêtre
Windev 23 : Enumérer les onglets dynamiques sur un plan de fenêtre
Iniciado por THEWORLDASGARP, 04,ene. 2019 16:54 - 1 respuesta
Miembro registrado
91 mensajes
Publicado el 04,enero 2019 - 16:54
Bonjour,

Tout d'abord recevez tous mes vœux pour cette nouvelle année 2019.

Je bataille sur la mise au point d'un code pour énumérer les onglets dynamiques d'un plan de fenêtre .

J'utilise les indirections, et je pense que c'est là dessus que j'ai un problème : est-il possible d'énumérer un plan via cette solution ?

Je transmet à cette méthode deux paramètres : le nom de la fenêtre, et le plan.

C'est dans la suite que ça se gâte : je me demande si le compilateur prend en compte l'instruction "_NomFenetre,indChamp}..Plan = _NumPlan". J'imagine que oui, car pas de plantage.

Là ou je bloque, c'est comment coder l'énumération de champ d'un plan de fenêtre basé sur une indirection. Ma ligne de code en question est :
QUAND EXCEPTION DANS
ChnNomChamp = EnumèreChamp({_NomFenetre,indChamp}..Plan, i)
FAIRE
RENVOYER Faux
FIN


L'idée générale est de détecter la présence d'un onglet dynamique, et si c'est le cas, en récupérer les alias.


Voici le code ma méthode ( en phase de mise au point, donc pas forcément juste ) :

Procedure PRIVÉ Enumere_OngDyn(_NomFenetre,_NumPlan)

// > Voir aide Pcsoft : <
// > https://doc.pcsoft.fr/fr-FR/?2510131 <

{_NomFenetre,indChamp}..Plan = _NumPlan

ChnAlias est une chaîne

// > Enumerer Champs du plan de la fenêtre <
i est un entier = 1
ChnNomChamp est une chaîne

// > Si plan ou fenêtre PAS en mémoire => on dégage <
QUAND EXCEPTIONEXCEPTION DANS
ChnNomChamp = EnumèreChamp({_NomFenetre,indChamp}..Plan, i)
FAIRE
RENVOYER Faux
FIN

TANTQUE ChnNomChamp <> ""

SI {ChnNomChamp,indChamp}..Type = 16

ChnAlias = EnumèreChamp( ChnNomChamp, i)
TANTQUE ChnAlias <> ""

TabOngletAlias[ChnNomChamp+1]=ChnAlias

FIN

// > On a enumérer les onglets : on sort <
SORTIR

FIN
FIN

// > Aucun alis d'onglet dynamique trouvé <
SI TabOngletAlias[ChnNomChamp+1] = "" ALORS
RENVOYER Faux
FIN

// > Onglet dynamique trouvé <
RENVOYER Vrai



Merci pour vos conseils.


Cdt
Miembro registrado
4.362 mensajes
Publicado el 07,abril 2019 - 11:17
Bonjour,
Le compilateur prend bien en compte l'indirection, toutefois, il recherche "_NomFenêtre" dans les champs (indChamp) et non dans les fenêtres. Pour ce faire, il faut utiliser la constante indFenêtre.
https://doc.pcsoft.fr/fr-FR/?1512005&name=Operateur_indirection_champ_et_rubrique

--
Il y a peut être plus simple, mais, ça tourne