PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → problème d'affichage table -> conteneur -> fenêtre interne -> onglets -> champ de saisie
problème d'affichage table -> conteneur -> fenêtre interne -> onglets -> champ de saisie
Iniciado por Frédéric RICHARD, 18,ago. 2020 12:38 - 36 respuestas
Miembro registrado
27 mensajes
Publicado el 18,agosto 2020 - 12:38
Bonjour,

Je rencontre un problème d'affichage dans une configuration très particulière:

J'ai une fenêtre principale dans laquelle il y a un champ Onglet
Dans certains onglets de ce champ, j'ai des champs fenêtre interne
Dans ce champ fenêtre interne, j'affiche une table dans laquelle il y a un conteneur.
Dans ce conteneur, j'affiche une fenêtre interne composée d'un champ onglet dynamique (dans l'onglet dynamique, j'ai un champ de saisie multilingue et des boutons)

Ce qui donne :

Fenêtre -> Onglet[] -> CFI_Fenêtre_Interne -> Fenêtre Interne -> Table -> Colonne[] -> conteneur -> CFI_Fenêtre_Interne -> Fenêtre interne -> Onglet dynamique[] -> champ de saisie

Le problème est le suivant :

Lorsque je clique sur une ligne de la table (sélection d'une ligne), le texte saisi dans le champ de saisie est correctement affiché. Si je sélectionne une autre ligne, alors le texte saisi est invisible.

Je rencontre ce problème sur deux fenêtres différentes dont la construction est identique.

Si quelqu'un a une idée me permettant d'orienter mes recherches pour solutionner ce 'bug' d'affichage.

Merci d'avance
Publicado el 18,agosto 2020 - 14:20
Bonjour Frédéric, Pourquoi utiliser une fenêtre interne avec un onglet dynamique pour le conteneur ?
Plusieurs fenêtre interne ne pourrai pas résoudre ton problème ?

--
Il n'y a pas de mystère en informatique.
Miembro registrado
1.173 mensajes
Publicado el 18,agosto 2020 - 15:47
Bonjour Frédéric,

Les champs sont-il remplis par programmation ou y a-t-il des liaisons vers un fichier de données?

--
Thierry TILLIER
Développeur Windev-Webdev
Formation Windev : https://coursdinfo.teachable.com/
Formation bureautique : https://coursdinfo.net
Miembro registrado
310 mensajes
Publicado el 18,agosto 2020 - 16:22
Hello,
Dans certains cas, j'ai remarqué un comportement bizarre dans la gestion des onglets dynamiques (spécifiquement dans un conteneur de table)
Le changement de ligne dans la table peut s'accompagner d'un changement de l'onglet affiché dans la ligne d'origine....celui-ci prend l'indice de l'onglet de la ligne nouvellement sélectionnée.

Peut-être est-ce ce que vous constatez ?

Bon dev.
Miembro registrado
213 mensajes
Publicado el 18,agosto 2020 - 16:43
Bonjour Frédéric,

Fenêtre
Onglet
Fenêtre Interne
Fenêtre Interne
Table
Colonne
Conteneur
Fenêtre Interne
Fenêtre Interne
Onglet Dynamique
Champ De Saisie

La configuration est en effet très particulière.

Je me questionnerais sur la pertinence / logique d'une telle "pile" d'objets.
Autant d'éléments qui peuvent s'influencer mutuellement.

Comme le suggère Thierry, il faut savoir comment ce champ est chargé.
Puis voir s'il y a conflit avec les autres éléments de la pile d'objets.

Bon dev.

Serge

--
-----
Parfois, la logique est implacable...
Miembro registrado
27 mensajes
Publicado el 18,agosto 2020 - 17:27
Merci pour vos retours.

Le but est de gérer des données complémentaires à notre fiche client; de façon dynamique en utilisant un fichier de ce type :

Code Client
Code Element
Type Element
Libellé Element
Valeur (mémo)


Cela permet d'ajouter à peut prêt tout et n'importe quoi.

Notre fiche client étant déjà très fournie, la présentation générale se fait via des onglets.

Dans le but de pouvoir externaliser la saisie de certaines informations, ces onglets contiennent des fenêtres internes; c'est le cas pour les données complémentaires.

La fenêtre interne contenant la table est remplie par programmation et utilise un tableau d'objets dynamiques (qui sont les éléments complémentaires).

Afin de pouvoir gérer les différents types (entier, réel, date,, texte, multiligne, mais aussi texte multi-langues, combos, liaison avec un autre fichier, etc.) j'ai opté pour une colonne conteneur qui contient une fenêtre interne qui est affectée dynamiquement au moment du remplissage de la table.

Je vous auras bien posté une capture d'écran pour illustrer, mais cela ne fonctionne pas :-(
Publicado el 18,agosto 2020 - 17:56
Frédéric RICHARD a écrit :
Merci pour vos retours.

Le but est de gérer des données complémentaires à notre fiche client; de façon dynamique en utilisant un fichier de ce type :

Code Client
Code Element
Type Element
Libellé Element
Valeur (mémo)


Cela permet d'ajouter à peut prêt tout et n'importe quoi.

Notre fiche client étant déjà très fournie, la présentation générale se fait via des onglets.

Dans le but de pouvoir externaliser la saisie de certaines informations, ces onglets contiennent des fenêtres internes; c'est le cas pour les données complémentaires.

La fenêtre interne contenant la table est remplie par programmation et utilise un tableau d'objets dynamiques (qui sont les éléments complémentaires).

Afin de pouvoir gérer les différents types (entier, réel, date,, texte, multiligne, mais aussi texte multi-langues, combos, liaison avec un autre fichier, etc.) j'ai opté pour une colonne conteneur qui contient une fenêtre interne qui est affectée dynamiquement au moment du remplissage de la table.

Je vous auras bien posté une capture d'écran pour illustrer, mais cela ne fonctionne pas

Ton problème provient peut être de ta colonne conteneur, si tes données saisies sur la colonne conteneur ont une liaison ?

--
Il n'y a pas de mystère en informatique.
Miembro registrado
4.363 mensajes
Publicado el 18,agosto 2020 - 18:15
Bonjour,
Y a-t-il un champ principal déclaré dans le conteneur ?

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
27 mensajes
Publicado el 18,agosto 2020 - 18:43
@Codeur Ninja : Non, il n'y a aucune liaison, je remplis et mets à jour par programmation.

@Voroltinquo : Le conteneur a comme champ principal le champ fenêtre interne (qui est le seul champ du conteneur)
Miembro registrado
1.173 mensajes
Publicado el 18,agosto 2020 - 19:13
Seconde question, la lecture des données se fait-elle par requête ou en lecture directe dans le fichier de données ? Dans le second cas, est-ce qu'un même fichier est utilisé par plusieurs fenêtres internes différentes ?

--
Thierry TILLIER
Développeur Windev-Webdev
Formation Windev : https://coursdinfo.teachable.com/
Formation bureautique : https://coursdinfo.net
Miembro registrado
27 mensajes
Publicado el 18,agosto 2020 - 19:29
@Thierry, tout est chargé en amont dans une classe ( en fait dans un tableau dynamique d'objets correspondant à mes différents types de variables)
Miembro registrado
4.363 mensajes
Publicado el 18,agosto 2020 - 19:56
Frédéric RICHARD a écrit :
@Voroltinquo : Le conteneur a comme champ principal le champ fenêtre interne (qui est le seul champ du conteneur)

Pourquoi ne pas utiliser cette fonctionnalité dans ce cas ? Les conteneurs sont souvent source de problèmes.

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
27 mensajes
Publicado el 18,agosto 2020 - 20:05
@Tous, entre mes tests de cet après midi et ceux de ce soir, j'ai dû toucher à un truc, mais cela fonctionne à présent.

Je ferai d'autres tests demain dans la matinée.

Merci aux contributeurs
Miembro registrado
27 mensajes
Publicado el 18,agosto 2020 - 20:50
Finalement, ça ne fonctionne pas. J'ai eu une fausse joie.
Publicado el 18,agosto 2020 - 21:05
Frédéric RICHARD a écrit :
> Finalement, ça ne fonctionne pas. J'ai eu une fausse joie.
Je pense savoir comment résoudre ton problème j'utilise aussi des tableaux d'objet avec fenêtre interne table conteneur
Touche tu par programmation à la valeur saisie dans le champ de saisie ?

--
Il n'y a pas de mystère en informatique.
Miembro registrado
1.173 mensajes
Publicado el 18,agosto 2020 - 21:17
Je ne voudrais pas m'avancer mais dans le chargement de vos classes vous laissez peut-être une connexion sur vos fichiers de données n'auriez-vous un accès concurrent sur ces fichiers? Avez-vous essayer en utilisant dans votre fenêtre l'option contexte HFSQL indépendant ?
Je pense que s'il y a un "mélange" comme vous semblez le décrire, il faudrait examiner cette piste.

--
Thierry TILLIER
Développeur Windev-Webdev
Formation Windev : https://coursdinfo.teachable.com/
Formation bureautique : https://coursdinfo.net
Miembro registrado
27 mensajes
Publicado el 18,agosto 2020 - 22:24
@Thierry, ce n'est pas un mélange, c'est juste un champ de saisie qui "disparait".

J'essaye de préparer une petite vidéo demain matin qui sera beaucoup plus représentative du problème.
Miembro registrado
27 mensajes
Publicado el 18,agosto 2020 - 22:25
@Codeur Ninja : Oui, j'affecte la valeur du champ de saisie avec le contenu d'un membre de ma classe.
Publicado el 18,agosto 2020 - 22:34
Frédéric RICHARD a écrit :
> @Codeur Ninja : Oui, j'affecte la valeur du champ de saisie avec le contenu d'un membre de ma classe.
La source du problème se trouve peut être dans ton code d'affectation, tu m'as bien dit qu'il n'y a aucune liaison c'est bien ça ? Possible de voir comment tu affecte la valeur sur le champ de saisie et comment tu l'affecte sur le membre de ta classe ?
Ou sinon une autre piste serai que l'interface de ton champ soit rafraîchit par un de champ de sa pile (à la sortie du champ qui revient à dire a la sortie de ton conteur avec la fenêtre interne), Peut être qu'une des options de ta table applique celle-ci ? Vérifie aussi les options de la table (les options d'enregistrement automatique par exemple).

--
Il n'y a pas de mystère en informatique.
Miembro registrado
27 mensajes
Publicado el 19,agosto 2020 - 11:28
Bonjour,

Je cherche depuis ce matin ….

Ce n'est pas le contenu du champ de saisie (le texte) qui disparait.

J'ai utilisé la méthode du coloriage

Le fond de l'onglet dynamique -> Jaune
Le fond de ma fenêtre interne -> rouge
Le fond de mon champ de saisie -> Vert

Je perds le rouge et le vert c'est à dire l'affichage de la fenêtre interne dans l'onglet dynamique.

J'ai vérifié et je n'ai nulle part de liaison champ -> membre de ma classe
Miembro registrado
310 mensajes
Publicado el 19,agosto 2020 - 11:51
Bonjour,
- Est-ce que la table est en saisie en cascade
- Est-ce que le phénomène se produit en cours de saisie de la dernière ligne uniquement ou aussi dans une ligne quelconque ?
- Est-ce que le problème se produit aussi après reaffichage de la table (reprise de saisie) ?

peut-être une petite video du phénomène permettrait d'avoir une idée plus précise...

Bon dev
Miembro registrado
27 mensajes
Publicado el 19,agosto 2020 - 11:56
Si le focus reste sur la colonne valeur, quelle que soir la ligne sélectionnée, j'ai mon affichage ok




Mais si je clique sur une autre colonne (non modifiable), je perds la fenêtre interne




Je n'ai aucun code dans la table ni dans les colonnes ….
Miembro registrado
1.173 mensajes
Publicado el 19,agosto 2020 - 12:01
Si c'est un problème d'affichage, les points qui me viennent à l'esprit c'est de vérifier si les propriétés visibles sont bien paramétrées (vérifier aussi en quand d'utilisation d'un groupe de champ), ou encore si ce n'est pas un problème de plan ou d'ancrage.

Si vous enlevez les couleurs cela donne quoi ?

--
Thierry TILLIER
Développeur Windev-Webdev
Formation Windev : https://coursdinfo.teachable.com/
Formation bureautique : https://coursdinfo.net
Miembro registrado
27 mensajes
Publicado el 19,agosto 2020 - 12:24
Miembro registrado
27 mensajes
Publicado el 19,agosto 2020 - 12:26
@Thierry, pareil.

J'ai vérifié les groupes, j'ai supprimé certains encrages … je sèche :-(
Miembro registrado
953 mensajes
Publicado el 19,agosto 2020 - 12:28
bonjour,

faites un test en désactivant le bandeau de sélection sur votre colonne conteneur, voir si cela améliore les choses
Miembro registrado
310 mensajes
Publicado el 19,agosto 2020 - 12:29
Avec une image c'est déjà plus parlant.
Ok, c'est un bug sur la perte de focus de la colonne conteneur lorsqu'elle contient un FI avec Onglet...

Il n'y a pas de solution magique mais on peut atténuer le phénomène en faisant un Ecranpremier(nomdelacolonneConteneur) dans le code de selection d'une ligne de la table.
Il reste quand même qu'au changement de colonne au sein d'une même ligne, le problème apparaîtra encore.

Bon dev.
Miembro registrado
27 mensajes
Publicado el 19,agosto 2020 - 12:35
@Cristophe, déjà testé dans tous les sens possibles et imaginables

@Samir, je teste
Miembro registrado
27 mensajes
Publicado el 19,agosto 2020 - 12:41
@Samir, super, ça fonctionne.

Je constate des pertes encore en cliquant un peu comme un fou n'import où ( essentiellement sur le double clic)

Je vais persister dans ce sens ….

Merci beaucoup
Publicado el 19,agosto 2020 - 12:41
Frédéric RICHARD a écrit :


A priprio PC Soft ont mal gérer leurs champs. Je te propose d'utiliser 1 fenêtre interne avec un champ fenêtre interne + un sélecteur avec les 5 options, de créer 5 fenêtre interne et en fonction du sélecteur changer la source.
En groupe essaye d'utiliser un autre champ à la place de ton onglet. Je suis sur à 100% et que le bug vient de lui

--
Il n'y a pas de mystère en informatique.
Miembro registrado
27 mensajes
Publicado el 19,agosto 2020 - 12:53
EcranPremier n'a d'effet QUE si il est placé dans le code de sélection de la ligne -> c'est mieux, mais il y a encore des pertes.

Si je rajoute un ecranpremier sur un autre événement, cela ne fonctionne plus
Miembro registrado
27 mensajes
Publicado el 19,agosto 2020 - 12:55
@Codeur Ninja, je testerai ça demain matin.
Publicado el 19,agosto 2020 - 13:19
Frédéric RICHARD a écrit :
> @Codeur Ninja, je testerai ça demain matin.

D'accord j'attends ton retour

--
Il n'y a pas de mystère en informatique.
Miembro registrado
27 mensajes
Publicado el 20,agosto 2020 - 08:20
Effectivement, en programmant mon propre "onglet dynamique", plus de soucis.

j'ai collé une ZR linéaire sous mon champ fenêtre interne pour simuler un onglet et ne pas perdre le coté dynamique de la chose (car la liste des langues est amenée à évoluer et je ne souhaite pas à avoir de code à modifier dans ce cas)
Publicado el 20,agosto 2020 - 11:03
Frédéric RICHARD a écrit :
Effectivement, en programmant mon propre "onglet dynamique", plus de soucis.

j'ai collé une ZR linéaire sous mon champ fenêtre interne pour simuler un onglet et ne pas perdre le coté dynamique de la chose (car la liste des langues est amenée à évoluer et je ne souhaite pas à avoir de code à modifier dans ce cas)


ça revient à ce que je disais PC Soft n'ont pas si bien gérer leurs champs, quand on rentre dans des configurations trop complexe on se retrouve confronter à des comportements bizarres. J'ai eu de belles surprises aussi sur certains champs que j'ai "empilé"

--
Il n'y a pas de mystère en informatique.
Miembro registrado
213 mensajes
Publicado el 20,agosto 2020 - 16:13
Codeur Ninja a écrit :
> ça revient à ce que je disais PC Soft n'ont pas si bien gérer leurs champs, quand on rentre dans des configurations trop complexe on se retrouve confronter à des comportements bizarres. J'ai eu de belles surprises aussi sur certains champs que j'ai "empilé"

Je serais prudent avant de pointer Windev du doigt.

Dans le cas présent, le champ en question est le onzième d'une pile d'objets.
Autant d'occasions pour des influences de codes et de comportement d'interfaces.

Je préfère un design en largeur (Ex: Ajout d'onglets) plutôt qu'en hauteur (Pile d'objets).
Justement pour éviter de telles problématiques.

Si je comprends l'idée de la fiche client décrite par Frédéric, je serais curieux d'en voir l'ensemble.
En communauté, nous pourrions y passer de belles journées à l'optimiser.
:D

Bon Dev.

Serge

--
-----
Parfois, la logique est implacable...
Publicado el 20,agosto 2020 - 16:37
Monsieur Serge a écrit :
Codeur Ninja a écrit :
ça revient à ce que je disais PC Soft n'ont pas si bien gérer leurs champs, quand on rentre dans des configurations trop complexe on se retrouve confronter à des comportements bizarres. J'ai eu de belles surprises aussi sur certains champs que j'ai "empilé"

Je serais prudent avant de pointer Windev du doigt.

Dans le cas présent, le champ en question est le onzième d'une pile d'objets.
Autant d'occasions pour des influences de codes et de comportement d'interfaces.

Je préfère un design en largeur (Ex: Ajout d'onglets) plutôt qu'en hauteur (Pile d'objets).
Justement pour éviter de telles problématiques.

Si je comprends l'idée de la fiche client décrite par Frédéric, je serais curieux d'en voir l'ensemble.
En communauté, nous pourrions y passer de belles journées à l'optimiser.
:D

Bon Dev.

Serge

--
-----
Parfois, la logique est implacable...


Haha je te confirme qu'il y a des petites choses qu'ils ont du rater. J'ai un empilement de champs dans un programme où, si je n'enroule pas toutes les fenêtres internes de détail d'une table avant de fermer mon onglet, bah mon programme s’arrête seul sans la moindre notification d'erreur, je précise je ne désactiver aucun mécanisme haha

--
Il n'y a pas de mystère en informatique.