PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV (earlier versions) → Remplacer le clic sur un bouton
Remplacer le clic sur un bouton
Started by MANDIN Claude, Aug., 19 2019 9:32 AM - 6 replies
Posted on August, 19 2019 - 9:32 AM
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.
Registered member
3,889 messages
Popularité : +227 (347 votes)
Posted on August, 19 2019 - 10:25 AM
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
Registered member
21 messages
Popularité : +5 (5 votes)
Posted on August, 22 2019 - 7:03 AM
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.
Registered member
3,889 messages
Popularité : +227 (347 votes)
Posted on August, 22 2019 - 7:49 AM
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
Registered member
72 messages
Popularité : +10 (10 votes)
Posted on August, 22 2019 - 5:40 PM
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)
Message modified, August, 22 2019 - 5:43 PM
Registered member
21 messages
Popularité : +5 (5 votes)
Posted on August, 22 2019 - 6:32 PM
Je vous remercie, je vais essayer ce code.

Encore merci a tous les deux, de vous être penché sur mon humble personne.
Registered member
21 messages
Popularité : +5 (5 votes)
Posted on August, 23 2019 - 3:12 PM
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()




Message modified, August, 23 2019 - 3:14 PM