[R] connaitre le handle du control actif

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
Avatar du membre
jl56
Niveau 7
Niveau 7
Messages : 374
Enregistré le : mer. 24 oct. 2007 22:42
Localisation : 56000
Status : Hors ligne

[R] connaitre le handle du control actif

#1

Message par jl56 »

Bonjour à tous,

je désire connaitre le handle d'un controle actif ( ou la ou se trouve le curseur) au moment ou je valide

#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 615, 437, 192, 124)
Global $Input1 = GUICtrlCreateInput("Input1", 50, 58, 121, 21)
Global $Input2 = GUICtrlCreateInput("Input2", 48, 121, 121, 21)
Global $quitter = GUICtrlCreateButton("Quitter", 48, 150, 121, 21)
Global $List1 = GUICtrlCreateList("", 250, 56, 178, 84)
GUICtrlSetData(-1, "liste 1|liste 2|liste 3|liste4")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###


Global $dummy = GUICtrlCreateDummy()
Dim $AccelKeys[1][2] = [["{ENTER}", $dummy]]
GUISetAccelerators($AccelKeys)

While 1
   $msg = GUIGetMsg()


   if $msg=$dummy Then
   $curseur=   GUIGetCursorInfo ()
;~    $curseur=ControlGetFocus($Form1)
   MsgBox(0,"contenue du controle actif est",GUICtrlRead($curseur[4]))
   EndIf
   if $msg = $quitter Then Exit

 Sleep(100)
WEnd

j'ai mis un guisetaccelerators pour avoir une action lors de la validation par la touche entrée
avec l'exemple de mon script ça fonctionne bien mais c'est associé avec la position de la souris
J'aimerais que ça fonctionne de la même façon mais seulement avec le controle actif , indépendamment de la souris
Là ou se trouve le curseur dans un input ou la ligne active dans la combo, je ne trouve pas de commande équivalente a GUIGetCursorInfo ()

Avez-vous SVP une suggestion

Merci

Portez vous bien , protégez vous et vos proches

JL56
Modifié en dernier par jl56 le lun. 13 avr. 2020 11:33, modifié 1 fois.

Avatar du membre
mikell
Modérateur
Modérateur
Messages : 5973
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [.] connaitre le handle du control actif

#2

Message par mikell »

Je vois que tu avais essayé ControlGetFocus, pourquoi tu n'as pas continué sur cette voie ?

$curseur = ControlGetFocus($Form1)
; MsgBox(0,"", $curseur & @crlf & ControlGetHandle($Form1, "", $curseur))
If StringInStr($curseur, "ListBox") Then
   $txt = ControlCommand($Form1, "", $curseur, "GetCurrentSelection")
Else
   $txt = ControlGetText($Form1, "", $curseur)
EndIf
MsgBox(0,"contenu du controle actif est", $txt)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )

Avatar du membre
jl56
Niveau 7
Niveau 7
Messages : 374
Enregistré le : mer. 24 oct. 2007 22:42
Localisation : 56000
Status : Hors ligne

Re: [.] connaitre le handle du control actif

#3

Message par jl56 »

Bonjour à tous,

Merci Mikell pour ce retour

Ho j'avais testé pas mal de chose également du coté du controlcommande mais je n'avais pas trouvé une commande qui faisait le taff sur les 2 types de control. Chose que tu dissocies par la lecture du type de control, je ne savais pas qu'on pouvait le faire , je n'y avais pas pensé.

Merci pour l'idée, je passe en résolu

A+

JL56

Répondre