PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV (versiones precedentes) → Remplacer le clic sur un bouton
Remplacer le clic sur un bouton
Iniciado por MANDIN Claude, 19,ago. 2019 09:32 - 6 respuestas
Publicado el 19,agosto 2019 - 09:32
Bonjour,
Je souhaite remplacer l'action du clic sur un bouton par l'action bouton enfoncé.
Dans le code du bouton j'ai bien sélectionné l'ajout de traitement "Bouton gauche enfoncé" , mais rien ne se produit car l'action 'Clic' reste prioritaire.

Y a t il une solution pour Inhiber le clic et permettre l'interception du bouton enfoncé.
Par avance je vous remercie.
Miembro registrado
3.844 mensajes
Popularité : +227 (347 votes)
Publicado el 19,agosto 2019 - 10:25
Bonjour,
Tu peux éventuellement utiliser l'option "bouton poussoir" https://doc.pcsoft.fr/fr-FR/?1013073&name=bouton_poussoir_onoff_dans_une_fenetre

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
21 mensajes
Popularité : +5 (5 votes)
Publicado el 22,agosto 2019 - 07:03
Bonjour, et déjà merci de t être penché sur ma question.
J'ai déjà essayé ce que propose, mais j'ai toujours le même résultat. Car l'action ne se poursuit que lorsque l'on relâche le bouton.
Moi je cherche a ce qu'une incrémentation se poursuive tant que le bouton est enfoncé.
Je recherche a peu près le même fonctionnement qu'un potentiomètre. Mais avec un pas en Reel "0,1" . Et d'un borne Min à -20 et une borne MAX à 50.
Miembro registrado
3.844 mensajes
Popularité : +227 (347 votes)
Publicado el 22,agosto 2019 - 07:49
Tu peux essayer de voir du côté du champ spin, ou du champ prédéfini "Valeur numérique" (Champ prédéfini/Superchamp)

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
72 mensajes
Popularité : +10 (10 votes)
Publicado el 22,agosto 2019 - 17:40
Je sais pas s'il y a d'autre manière, mais de celle-ci ca semble fonctionner.

Tu doit inclure la bibliothèque au démarrage de ton projet
EXTERNE "KeyConst.wl"

Procédure de la fenêtre

Evénement(_DemarreSpin, BTN_SansNom1..NomComplet, WM_LBUTTONDOWN)
Evénement(_ArreteSpin, "*.*", WM_LBUTTONUP)


Procedure _DemarreSpin()
n est un entier = LIB_SansNom1
n++
LIB_SansNom1 = n

TimerSys(_Spin, 100ms, 25)


Procedure _Spin()

n est un entier = LIB_SansNom1
n++
LIB_SansNom1 = n



Procedure _ArreteSpin()

FinTimerSys(25)
Mensaje modificado, 22,agosto 2019 - 17:43
Miembro registrado
21 mensajes
Popularité : +5 (5 votes)
Publicado el 22,agosto 2019 - 18:32
Je vous remercie, je vais essayer ce code.

Encore merci a tous les deux, de vous être penché sur mon humble personne.
Miembro registrado
21 mensajes
Popularité : +5 (5 votes)
Publicado el 23,agosto 2019 - 15:12
Un grand merci, j'ai pu solutionner mon problème. Je vous joins le code que j'ai saisi afin d'avoir ce que je souhaitais.
Bien sur, il n'est pas parfait et je vais continuer à l'adapter. Cela m'a enlever une petite épine du pied.
Pour le bouton SPIN, J'ai créé deux boutons que j'ai regroupé, et j'y ai mis la détection d’événements dans l'initialisation des boutons respectifs.
Je dois maintenant ajouter les Bornes Minimales et maximales

Procedure MaFenêtre()
// Le pas d'incrémentation ou de décrémentation
grPasSpin est un réel = 0.1

// Permet de savoir si on augmente ou si on diminue
gnBtn_Spin est un entier

// mettre fin aux événements
Evénement(_ArreteSpin, "*.*", WM_LBUTTONUP)

[FIN D'INITIALISATION de LA FENETRE]
Affichage() // mise a jour du Libellé Température (Mise en forme)

[CHAMP de Saisie SAI_TempExt]
// Paramétre de Sai_TempExt
// Type = Format Numérique/ Masque de saisie = +99,9
// Dans détail cocher : mémoriser la valeur.


[BOUTON MOINS]
// Dans la Procédure Clic_Moins : GnBtn_Spin = 1 //
Evénement(Clic_Moins, MoiMême..NomComplet, WM_LBUTTONDOWN)
Evénement(_ArreteSpin, "*.*", WM_LBUTTONUP)

[BOUTON PLUS]
// Dans la Procédure Clic_Plus : GnBtn_Spin = 2//
Evénement(Clic_Plus, MoiMême..NomComplet, WM_LBUTTONDOWN)

[PROCEDURES LOCALES]

Procedure _ArreteSpin()
FinTimerSys(25)

Procedure _DemarreSpin()
SELON gnBtn_Spin
CAS 1 // Moins
TimerSys(_SpinMoins, 100 ms, 25)
CAS 2 // Plus
TimerSys(_SpinPlus, 100 ms, 25)
AUTRES CAS
_ArreteSpin()
FIN

Procedure _SpinMoins()
n est un réel= Val(SAI_TempExt) // Pour le cas ou le format de saisie n'aurait pas été défini
n-=grPasSpin

SAI_TempExt = NumériqueVersChaîne(n)
Affichage()

Procedure _SpinPlus()
n est un réel = Val(SAI_TempExt) // Pour le cas ou le format n'aurait pas été défini correctement
n+=grPasSpin

SAI_TempExt= NumériqueVersChaîne(n)
Affichage()

Procedure Affichage()

SI SAI_TempExt<0 ALORS
LIB_TempExt..Couleur=iRougeClair
SINON
LIB_TempExt..Couleur=iNoir
FIN

LIB_TempExt=NumériqueVersChaîne(SAI_TempExt,"-10.1f" )
// Mise en forme pour l'affichage / La valeur réelle sera cachée à l'utilisateur

SI Val(ExtraitChaîne(SAI_TempExt,2,"."))>0 ALORS
LIB_TempExt=SansEspace(Remplace(LIB_TempExt,".","°"))
SINON
LIB_TempExt=SansEspace(ExtraitChaîne(SAI_TempExt,1,".")+"°")
FIN


Procedure Clic_Moins()
gnBtn_Spin = 1
_DemarreSpin()


Procedure Clic_Plus()
gnBtn_Spin = 2
_DemarreSpin()




Mensaje modificado, 23,agosto 2019 - 15:14