Page 1 sur 1

[..] Conditions + Double click

Posté : ven. 10 juin 2011 14:30
par Ekow
Bonjour à tous
C'est encore moi pour de nouvelle questions... Vous allez finir par ne plus m'aimer :oops: xD
Bon plus sérieusement. Je souhaiterais réaliser une conditions qui dit :
Lorsqu'un double click gauche est détecter dans la liste box il ouvre une fenêtre.

J'ai regarder avec la commande "mouseclick" et j'ai effectuer mon propre test.
Voici le code que j'ai réaliser :

Code : Tout sélectionner

If MouseClick("left", 209, 799, 2) Then
               GuiCreate(blablabla)
        Endif
 
Je n'est pas tout détaillez c'est le début qui compte :)
Je précise que j'ai fait l'erreur d'exécuter cette condition dans une boucle :oops: j'ai eu beaucoup de mal à fermer mon application par le suite xD Bref.

Après ce test je me suis rendu compte qu'il déplace mon curseur vers le coordonnées indiquer et effectuer un double click mais ce n'est pas le résultat que je rechercher.
Je ne voie aucune autre commande qui pourrait réaliser ce que je souhaite. J'ai penser à "HotKeySet" mais je ne connait pas le nom qui effectue un clique.

Donc voila j'espère avoir était précis.
Merci d'avance les amis !

Re: [..] Conditions + Double click

Posté : ven. 10 juin 2011 15:26
par Jerome
Coucou,


J'avais utiliser quelque chose de la sorte il y a quelques temps.

Adapte le selon tes besoins.


► Afficher le texte


Cordialement,
Jérôme

Re: [..] Conditions + Double click

Posté : ven. 10 juin 2011 15:36
par jchd
Je te laisse mariner sur ton sujet, mais une remarque générale au passage :
On ne crée sous auncun prétexte une interface ou un de ses éléments dans une boucle !
On se crée ça gentiment avant mais sans la rendre active. Le moment venu, on l'active ou la désactive dans la boucle.

Maintenant pour intercepter ton double-clic, voir l'aide de _GUICtrlListView_HitTest. Dans la fonction WM_NOTIFY le cas qui t'intéresse est "Case $NM_DBLCLK".

Re: [..] Conditions + Double click

Posté : ven. 10 juin 2011 15:59
par Ekow
Tout d'abord merci pour avoir répondu rapidement.
Ensuite j'ai essayer d'adapter le code au mien.
J'ai recopier le code de la fonction :

Code : Tout sélectionner

Func WM_ListView_DoubleClick($hWnd, $iMsg, $wParam, $lParam)

    #forceref $hWnd, $iMsg, $wParam
    Local $tNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return
    If DllStructGetData($tNMHDR, 1) = $Lst_Handle Then
        If DllStructGetData($tNMHDR, 3) = $NM_DBLCLK Then $fDblClk = True
    EndIf
    $tNMHDR = 0
    Return $GUI_RUNDEFMSG
EndFunc
J'ai ensuite placer ma condition dans ma boucle. Voici la conditions :

Code : Tout sélectionner

    If $fDblClk = True Then
        $fDblClk = False
        _Test()
    EndIf
Lorsque je lance le programme. Il s'exécute mais se ferme automatiquement et m'affiche cette erreur dans la console :

Code : Tout sélectionner

If $fDblClk = True Then
If ^ ERROR
Ah et voici ma fonction "test" qui lui affiche l'interface que je souhaite :

Code : Tout sélectionner

Func _test()
#Region ### START Koda GUI section ### Form=
Global $Form2 = GUICreate("Test", 503, 530, 810, 277)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
  Case $GUI_EVENT_CLOSE
   Exit

 EndSwitch
WEnd

EndFunc
 
J'aimerais savoir où est mon erreur ?
Je précise également que dans ton code il affiche la liste après avoir cliquer sur le bouton "lister" , mon programme lui affiche la liste dès qu'il est exécuter vu qu'il récupère les données sur un petit fichier.

Re: [..] Conditions + Double click

Posté : ven. 10 juin 2011 16:15
par Jerome
Coucou,


Attention à bien mettre :

Code : Tout sélectionner

GUIRegisterMsg($WM_NOTIFY, "WM_ListView_DoubleClick")
ainsi que :

Code : Tout sélectionner

Global $fDblClk = False
Ensuite, tient compte de ce que Jchd ta dit, et ne met pas un "Global $Form2 = GUICreate("Test", 503, 530, 810, 277)" dans une fonction, mais plutôt au tout début de ton code.


Sinon, pourrait-ont avoir ton code au complet?

Edit : Bon aller j'ai eu 2 minutes, je t'ai bricoler un truc rapido :)
► Afficher le texte


Jérôme

Re: [..] Conditions + Double click

Posté : ven. 10 juin 2011 22:35
par Ekow
Bon j'ai exactement tous remit à la bonne place et suivit vos conseils.
Maintenant mon programme se lance mais ce n'est pas pour autant que mon double clique fonctionne sur ma liste.

Deux petites questions :
- J'ai vu que tu utiliser les commandes : _GUICtrlListView_AddColumn($List1, "Servcies Name", 200)
_GUICtrlListView_AddItem($List1, "Row 1: Col 1: lol", 0)
Moi je n'utilise pas ceux la mais plutôt celui la : Global $List1 = GUICtrlCreateList("", 0, 0, 209, 799)
Mes données sont envoyer grâce à la commande : GUICtrlSetData($List1, $pseudo)
Et il faut prendre en compte également que à chaque lancement du programme il va chercher les données dans une petite base de donnée sous forme de fichier texte.

Est ce que cela pose problème ? Où aurait d'autre chose à rajouter dans mon code ?
Car la le programme se lance bien mais mon double click toujours pas.

Je n'est absolument rien oublier dans mon code j'ai vérifier et revérifier plus de 5 fois ;)

Re: [..] Conditions + Double click

Posté : ven. 10 juin 2011 22:42
par Jerome
Jerome a écrit :
Sinon, pourrait-ont avoir ton code au complet?

:roll:

Re: [..] Conditions + Double click

Posté : ven. 10 juin 2011 22:46
par Ekow
Non j'aimerais pouvoir me débrouiller seul au niveau de mon code si tu n'y voie pas d'inconvénient. =)