PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Table et Fenêtre Interne
Table et Fenêtre Interne
Débuté par Cyril, 23 mai 2018 09:36 - 1 réponse
Posté le 23 mai 2018 - 09:36
Bonjour à tous,

Je cherche, en vain, à faire en sorte que dans une table avec fenêtre interne de détail d'une ligne, si pour un enregistrement "parent" je n'ai pas de "fils" alors la fenêtre interne, lorsque je clique sur le [+], ne s'affiche pas.

Si l'un d'entre vous à une solution je suis preneur.

D'avance merci, ....
Membre enregistré
136 messages
Popularité : +12 (14 votes)
Posté le 24 mai 2018 - 10:06
Bonjour Cyril,
J'ai peut être une solution à ton problème :

Il faut définir la fenêtre interne de détail ligne non pas en dur, mais par programmation

Dans mon cas de test, j'ai une table mémoire remplie par une variable tableau d'objets :

Ma classe :
MaClasseHierarchique est une Classe
m_sTexte est une chaîne
Items est un tableau de MaClasseHierarchique
FIN


Code d'initialisation de la fenêtre principale :

Procedure MaFenêtre()

gclMaClasseHierarchique est un MaClasseHierarchique dynamique
gclObj est un MaClasseHierarchique dynamique
gclObj2 est un MaClasseHierarchique dynamique

gtabObjets est un tableau de MaClasseHierarchique

POUR j = 1 À 3
gclMaClasseHierarchique = allouer un MaClasseHierarchique
gclMaClasseHierarchique.m_sTexte = "Objet" + NumériqueVersChaîne(j)
SI j <> 2 ALORS
POUR i = 1 À 5
gclObj = allouer un MaClasseHierarchique
gclObj.m_sTexte = gclMaClasseHierarchique.m_sTexte + " Item" + NumériqueVersChaîne(i)
SI i <> 3 ALORS
POUR k = 1 À 4
gclObj2 = allouer un MaClasseHierarchique
gclObj2.m_sTexte = gclObj.m_sTexte + " Sous-Item" + NumériqueVersChaîne(k)
gclObj.Items.Ajoute(gclObj2)
FIN
FIN
gclMaClasseHierarchique.Items.Ajoute(gclObj)
FIN
FIN
gtabObjets.Ajoute(gclMaClasseHierarchique)
FIN

InitHasard()


Le test d'opportunité d'afficher la fenetre interne se fait dans l'évènement "affichage d'une ligne" de la Table :

clObj est un MaClasseHierarchique = TABLE_GtabObjets
nIndex est un entier = IndiceEnCours()

SI clObj.Items..Vide ALORS
TABLE_GtabObjets[nIndex]..FenêtreDétailLigne = ""
SINON
TABLE_GtabObjets[nIndex]..FenêtreDétailLigne = "FI_TestListe"
FIN


Le résultat : Le "+" permettant l'accès à le fenetre détail n'apparait que sur les lignes liées à un objet contenant des Items :






Voilà, j'espère que cela t'aidera

PS : comme je travaille en ce moment sur les fenetres interne détail de ligne de table, je vais poster dans l'heure sur le forum pour un problème que je n'arrive à résoudre : comment, depuis le fenêtre principale accéder aux champs et procédures de chaque fenêtre interne des ligne déroulées

si tu peux y jeter un oeil...

Chris