PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Empêcher le traitement de "clic colonne" sur une Table en AffichageSeulement
Empêcher le traitement de "clic colonne" sur une Table en AffichageSeulement
Débuté par William, 08 nov. 2018 10:02 - 3 réponses
Membre enregistré
18 messages
Popularité : +0 (2 votes)
Posté le 08 novembre 2018 - 10:02
Bonjour,

Je suis en Windev 23.

Suite à une action précise (un clic bouton par exemple), je souhaiterais rendre impossible tout traitement (clic, saisie, survol...) sur une fenêtre Fen1 depuis sa fenêtre sœur Fen2.
Pour cela j'utilise la fonction FenEtat(Fen1,AffichageSeulement).
Tout fonctionne alors comme je le souhaite, à savoir, impossible de cliquer sur les boutons, de saisir dans un champ de saisie, de modifier une option ou un sélecteur... sauf que... les traitements des colonnes des tables sont toujours actifs.
Par exemple le traitement "Clic sur les colonnes" est toujours actif ! (il suffit de placer un [trace("clic")] dans le traitement correspondant pour s'en rendre compte)

J'ai essayé de contourner le problème en mettant la Table en AffichageSeulement, mais le problème reste le même : le traitement "Clic sur les colonnes" est toujours actif.

Quelqu'un aurait-il déjà été confronté à ce besoin ? aurait-il trouvé une solution ?

De mon point de vue, il n'est pas normal de pouvoir exécuter des traitements par clic souris sur une fenêtre sensée être en "AffichageSeulement" !

Merci de vos retours.

--
William LAGRIFFOUL
Membre enregistré
18 messages
Popularité : +0 (2 votes)
Posté le 12 novembre 2018 - 17:28
Up

--
William LAGRIFFOUL
Posté le 13 novembre 2018 - 16:37
Bonjour,
je n'ai pas rencontré exactement le même problème, mais je pense que tu peux essayer d'intercepter l’événement clic souris pour le remplacer par le traitement que tu souhaites...

ex :
SELON ZoneRépétéeInfoXY(ZR_PropositionCommerciale,ziNomChamp,SourisPosX(),SourisPosY())
CAS "IMG_IPID" //TRAITEMENT DU BOUTON IPID////////////////////
//On a cliqué sur le bouton IPID : on récupère la ligne ZR
...
SI NumLigneZR > 0 ALORS
// on va traiter l'IPID correspondant au produit.(Niveau necessaire pour prev'actifs)
SELON gclMonPanier.tbDevis[NumLigneZR].m_sCODE_PRODUIT
CAS "ID" // ...
...
CAS "B","C","H" // ...
...
AUTRE CAS
...
FIN
FIN
AUTRE CAS //SELECTION OU DESELECTION DU PRODUIT DANS LE PANIER////////////////////////
SI ATT_Selection[ZoneRépétéeSelect(MoiMême)]= 1 ALORS
ATT_Selection[ZoneRépétéeSelect(MoiMême)]= 0
SINON
ATT_Selection[ZoneRépétéeSelect(MoiMême)]= 1
FIN
ATT_SELECT[ZoneRépétéeSelect(MoiMême)] = ATT_Selection[ZoneRépétéeSelect(MoiMême)]
gclMonPanier.tbDevis[ZoneRépétéeSelect(MoiMême)].m_bDEVIS_SELECTIONNE = ATT_Selection[ZoneRépétéeSelect(MoiMême)]
ActualiseRécapProposition()
FIN


ici un exemple pour intercepter le code de sélection d'une ligne de ZR pour le remplacer par d'autres traitements...

Cdlt,

Laurent
Membre enregistré
18 messages
Popularité : +0 (2 votes)
Posté le 20 novembre 2018 - 16:54
Bonjour,

Merci pour ta réponse Laurent. Seulement, il faut bien avouer que c'est de la bidouille...

Je vais donné des cas précis pour expliquer la complexité de mon problème.

Lorsqu'une fenêtre est en état "AffichageSeulement", le traitement "Bouton gauche enfoncé" est exécuté lorsque l'on vient cliquer avec la souris sur le champ correspondant (dans mon cas un champ Onglet).

Autre cas, lorsqu'une fenêtre est en état "Grisé", le traitement "Bouton gauche enfoncé" est exécuté lorsque l'on vient cliquer avec la souris sur un champ de type bouton (mais pas le traitement de clic).

J'ai du mal à imaginer le code à générer pour protéger tout mes champs "au cas où" je soit confronté, à un moment donné, à devoir rendre telle ou telle fenêtre inactive ("AffichageSeulement" ou "Grisé").

Dans mon cas, j'ai environ une dizaine de fenêtres à rendre inactive pendant un traitement précis.
Du coup, alors que toutes les fenêtres sont en "Affichage Seulement", sur certaines fenêtres, les tables sont cliquables, sur d'autres ce sont les onglets, sur d'autres ce sont des boutons !!!

Actuellement j'ai trouvé un moyen de contournement (une autre bidouille) via une image que je génère devant toutes les fenêtres (par le code), mais le problème, c'est que cela provoque des clignotements dans tous les sens !!!
Pour l'utilisateur final c'est vraiment pas satisfaisant !

Quelqu'un aurait une vrai solution ?

Un technicien PCSOFT pourrait-il m'expliquer comment se fait-il que l'on puisse exécuter ces événements avec la souris sur une fenêtre sensée être inactive ?

Merci à ceux qui prendront le temps de me lire.

--
William LAGRIFFOUL