[R] Choix de l'item surligné à l'ouverture d'une ListView

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
aulus
Niveau 7
Niveau 7
Messages : 424
Enregistré le : lun. 25 mars 2013 19:38
Status : Hors ligne

[R] Choix de l'item surligné à l'ouverture d'une ListView

#1

Message par aulus »

Bonjour,
je cherche à utiliser l'une ou l'autre des fonctions suivantes :

Code : Tout sélectionner

ControlListView ( "", "", $myListView, "Select",1,1)
ControlListView ( "", "", $myListView, "SelectClear")
_GUICtrlListView_SetItemFocused($myListView, 0)
_GUICtrlListView_SetItemSelected($myListView, 0, True, True)
Utilisées sans faire appel à la fonction Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam), comme dans les exemples fournies dans l'aide, tout se passe bien. Mais mon code faisant appel à cette fonction, les fonctions intervenant sur la sélection de l'item souhaité dans la listView sont ignorées.

Avez-vous une idée pour faire en sorte que toutes ces fonctions se supportent ?

Je vous remercie.
Modifié en dernier par aulus le mar. 03 déc. 2013 07:58, modifié 1 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] choix de l'item surligné à l'ouverture d'une ListVi

#2

Message par mikell »

C'est pô très clair, on comprend pas bien ce qui ne marche pas et comment tu voudrais que ça marche
Tu n'aurais pas un petit script-exemple à tester pour mettre ça en évidence ?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
aulus
Niveau 7
Niveau 7
Messages : 424
Enregistré le : lun. 25 mars 2013 19:38
Status : Hors ligne

Re: [..] choix de l'item surligné à l'ouverture d'une ListVi

#3

Message par aulus »

Bonjour Mikell,

Ma listView affiche les lignes d'une base SQLite, et à son ouverture, par je ne sais quel mystère, c'est toujours la ligne 12 qui est surlignée. Ce n'est pas grave pour le fonctionnement du programme, mais c'est agaçant et déroutant pour l'utilisateur. J'essaie depuis des heures à faire en sorte que la ligne sélectionnée à l'ouverture soit la première ligne en utilisant la fonction :

Code : Tout sélectionner

ControlListView ( "", "", $myListView, "Select",0,0)
 
ou :

Code : Tout sélectionner

_GUICtrlListView_SetItemFocused($myListView, 0)
 
ou encore :

Code : Tout sélectionner

_GUICtrlListView_SetItemSelected($myListView, 0, True, True)
Quelle que soit la fonction utilisée, elle est toujours ignorée alors que toutes fonctionnent parfaitement dans les exemples de l'aide d'AutoIt.
J'en ai conclu que c'est l'appel à la fonction Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam) qui me met le bazar.

Code : Tout sélectionner

;affichage de la listview

For $i = 1 to UBound($array)-1
       GUICtrlCreateListViewItem($array[$i][0], $myListView)
Next
_GUICtrlListView_SetItemSelected($myListView, 0, True, True) ;[color=#FF0000] CETTE LIGNE EST IGNOREE PAR LE PROGRAMME[/color]
GUICtrlSetState($myListView, $GUI_ENABLE)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

...
EndFunc


Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
#forceref $hWnd, $iMsg, $iwParam ; pour éviter les warning
    Local $tNMHDR, $hWndFrom, $iCode, $iDeleteItem
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = DllStructGetData($tNMHDR, "hWndFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
   Local $hListView = GuiCtrlGetHandle($myListView)

    Switch $hWndFrom
        Case $hListView
            Switch $iCode
              Case $LVN_COLUMNCLICK
                   Local $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
                   Local $colonne = DllStructGetData($tInfo, "SubItem")
                   If $colonne = $lastclicked Then
                        $var = not $var
                   Else
                        $var = 0
                   EndIf
                   $lastclicked = $colonne
                   _LVSort($colonne, $var)

                Case $LVN_KEYDOWN
                    $tInfo = DllStructCreate($tagNMLVKEYDOWN, $ilParam)
                    Local $vkey = DllStructGetData($tInfo, "VKey")
                   Switch $vkey
                             Case 0x2e
                                    Suppression()
                Case 0x2D
                                   Ajout()
               Case 0x08
                                   Modification()
               Case 0x20
                                   Affichage()
                    EndSwitch

           EndSwitch
       EndSwitch
    Return $GUI_RUNDEFMSG

EndFunc
 
J'ai tenté de placer mes fonctions en début ou en fin de la fonction WM_NOTIFY. Les fonctions ne sont pas ignorées mais me plantent le programme.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] choix de l'item surligné à l'ouverture d'une ListVi

#4

Message par mikell »

Quand la gui s'affiche ou s'update le WM_NOTIFY est automatiquement appelé
Faudrait essayer

Code : Tout sélectionner

ControlListView ($gui, "", $myListView, "SelectClear")
après la fin de son affichage ou après le GuiSetState()
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
aulus
Niveau 7
Niveau 7
Messages : 424
Enregistré le : lun. 25 mars 2013 19:38
Status : Hors ligne

Re: [..] choix de l'item surligné à l'ouverture d'une ListVi

#5

Message par aulus »

De cette manière, la fonction est prise en compte (aucun item n'est surligné) , mais il ne devient plus possible de sélectionner une ligne.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] choix de l'item surligné à l'ouverture d'une ListVi

#6

Message par mikell »

L'instruction tu l'as pas mise dans le WM_NOTIFY ou dans une boucle ?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
aulus
Niveau 7
Niveau 7
Messages : 424
Enregistré le : lun. 25 mars 2013 19:38
Status : Hors ligne

Re: [..] Choix de l'item surligné à l'ouverture d'une ListVi

#7

Message par aulus »

Et ben... si ! :(
J'avais mal compris, ça ne fait pas l'ombre d'un doute ! Je l'avais placée à la fin de WM_NOTIFY !
Je viens de la placer à la fin de la fonction affichant la listView, et là ça fonctionne...
Encore merci Mikell pour votre temps et votre patience !
Répondre