PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → WD 22 - Fenetre interne dans une ligne de table
WD 22 - Fenetre interne dans une ligne de table
Iniciado por cyriaque.le.palec, 19,dic. 2016 12:44 - 14 respuestas
Publicado el 19,diciembre 2016 - 12:44
Bonjour,

Quelqu'un(e) à-t-il testé les fenêtres interne de table permettant d'afficher un détail d'une ligne.
Typiquement afficher les lignes d'une commande dans la liste des commandes par exemple.

Je ne comprends pas comment faire le lien entre la ligne de la table et la fenêtre interne, pour par exemple lui passer en paramètre l'ID de la commande afin de n'afficher que les lignes de cette commande dans la FI.

Merci.
Miembro registrado
2.682 mensajes
Publicado el 19,diciembre 2016 - 19:23
Bonjour,

Il n'est à priori pas possible de passer de paramètre à cette fenêtre interne (bien dommage). Mais tu peux utiliser dans la fenêtre interne la syntaxe suivante: Fenetre.Table.Col_ID.

Bien sur cela n'est valable que si ta fenêtre interne n'est utilisée que dans une seule table.

--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique
Miembro registrado
120 mensajes
Publicado el 19,diciembre 2016 - 20:03
Bonjour

En cherchant un peu, dans le traitement de déclaration de la fenêtre interne, vous pouvez mettre ce proto :

Procedure MaFenêtre( pTableAppelant est un Champ, nNumeroLigne est un entier )


pTableAppelant sera renseigné avec la table qui a déroulé la Fenetre de détails
nNuméroLigne sera initialisé avec le numéro de la ligne déroulé

Je ne sais pas si c'est le proto officiel mais c'est ce que me retourne mon test :

Procedure MaFenêtre(p1="a", p2="b", p3="c", p4="d")
Trace(TypeVar(p1), p1)
Trace(TypeVar(p2), p2)
Trace(TypeVar(p3), p3)
Trace(TypeVar(p4), p4)


Si je clique sur la ligne 8/25/43, j'ai en retour dans la trace :
138 8 (et 25 et 43)
9 8 (et 25 et 43)
19 c
19 d

138 8 => 138 = type champ 8 correspond donc a la valeur du champ
9 8 => 9 = type entier sur 8 octets donc doit correspondre à l'indice
19 c et 19 d => ce sont les type (chaine) et valeur par défaut que j'ai déclaré donc donc celle-ci ne sont pas renseignée par le déroulé de la ligne

Bon Dev

--
Si vous appréciez ma réponse, levez le pouce.
Miembro registrado
234 mensajes
Publicado el 22,diciembre 2016 - 09:01
Bonjour

J’espère que l'on pourra passer des paramètres via cette nouvelle option

Sinon en lisant le champencours dans la fenêtre interne cela marche

gsTableVar est une chaîne = ChampEnCours() + ".COL_ID"
// La je retrouve bien le nom de ma fenetre et le nom de la table mere

SI ChampExiste(gsTableVar) ALORS
HLitRecherche(Client,IDClient,{ gsTableVar } , hIdentique )
Fin

Cordialement
Olivier
Publicado el 22,diciembre 2016 - 11:28
bonjour,

Merci pour vos réponses, voici celle du ST :

Dans votre cas, vous pouvez simplement filtrer sur le fichier des lignes de commandes dans le code de la fenêtre interne :
HFiltre ( LIGNECDE , NumCommande , COMMANDE . NumCommande )

Par ailleurs, la fenêtre interne reçoit en paramètre le champ Table et l’indice de la ligne.
PROCEDURE FI_ SansNom1 ( gcTable est un Champ , gnLigne est un entier )

...
Miembro registrado
223 mensajes
Publicado el 22,diciembre 2016 - 16:56
Procedure MaFenêtre()

sNomTable est chaîne = fExtraitChemin(MonElémentIHM..NomComplet,fFichier)

monChamp est un Champ <- {sNomTable, indChamp}

//maintenant j'ai accès à toutes les colonnes de la ligne qui a été déroulé
Trace(monChamp.MaColonne1)


Le fExtraitChemin est juste un système D avec ElementA.ElementB.ElementC j'obtiens ElementA.ElementB, je fais croire que .ElementC c'est l'extension
Miembro registrado
4 mensajes
Publicado el 10,enero 2017 - 10:32
Au top mon pote ;)
Miembro registrado
4 mensajes
Publicado el 10,enero 2017 - 10:33
Salut à tous,

Dans la continuité de ce sujet, comment redimensionner automatiquement la FI au nombre de lignes contenues dans cette fenêtre ?

Merci ;)
Mensaje modificado, 10,enero 2017 - 10:34
Miembro registrado
2 mensajes
Publicado el 08,febrero 2017 - 12:10
Lionel GOTTRAU a écrit :
Salut à tous,

Dans la continuité de ce sujet, comment redimensionner automatiquement la FI au nombre de lignes contenues dans cette fenêtre ?

Merci>
Message modifié, 10 janvier 2017 - 10:34


Salut à tous,

Je suis à la recherche de la même information que Lionel.

Merci

JP

--
Jean-Philippe
Publicado el 04,octubre 2017 - 17:31
Avez vous trouvé une solution pour redimensionner automatiquement la FI au nombre de lignes contenues dans cette fenêtre ?
Publicado el 25,octubre 2017 - 17:12
Bonjour

J'ai le même soucis, j'ai associé une fenêtre interne, contenant elle même un tableau avec un nombre de ligne variable, au détail des ligne d'un tableau.
J'ai réussi à redimensionner la fenêtre interne en elle même, mais je n'ai pas réussi à redimensionner le champ qui contient la fenêtre interne dans la fenêtre principale. J'ai vu qu'on pouvait utiliser la fonction FenTailleUtile, mais pour cela il faut le nom du champ de la fenêtre interne, et comme j'ai juste associé la fenêtre interne au détail d'une ligne de mon tableau dans l'ihm de celui ci, je ne sais pas comment récupérer le nom du champ qui contient la fenêtre interne.

Si quelqu'un à une idée, je suis preneur.
Merci d'avance.
Publicado el 26,octubre 2017 - 08:38
Dans le code d'initialisation de la fenêtre interne, ParentObjet(MoiMême)+"."+MoiMême..Nom devrait te retourner le nom du champ ?
Publicado el 27,octubre 2017 - 15:46
Bonjour
Merci pour ta réponse, mais ça me retourne NomDeMonTableau.NomDeLaFenetreInterne

Je ne peux donc rien faire de plus.
Publicado el 31,marzo 2018 - 21:16
Si jamais des personnes cherchent encore comment afficher une hauteur différente pour la fenêtre interne d'une table, j''utilise une méthode qui semble fonctionner assez bien (s'il y a d'autres méthodes, je suis preneur).

Pour ma part, je change la hauteur initiale de la fenêtre interne puis je fais un table affiche de la table parente avec la constante taCourantBandeau.
Ex de code :
// Définition de la hauteur initiale de la ligne
Fi_MaFenetreInterne..HauteurInitiale = 150

// On réaffiche la table sur le bandeau courant
TableAffiche(gTableParente,taCourantBandeau)


En espérant que ça puisse aider.
Publicado el 08,septiembre 2020 - 10:10
Pour la hauteur de la fenêtre interne, je calcul en fonction du nombre de ligne de ma ZR

//Une hauteur de ligne de ma ZR fait 27 donc on multiplie par le nombre de ligne
Hauteur est un entier = ZR_LigneCo..Occurrence * 27
FI_LigneCde..HauteurInitiale = Hauteur