[..] Double clic selectionner tt la ligne (item) et subitem

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

[..] Double clic selectionner tt la ligne (item) et subitem

#1

Message par Laddy »

Bonjour à tous

selectionner une ligne lorsque que ma listview n'a qu'un champ, j'y arrive mais pour selectionner toutes la ligne je n'y parviens pas.

Mon code ne récupére que le contenu de la colonne 1, j'ai testé selectedall, ça ne fonctionne pas.
En lisant la doc de ControlListView , mais l 'exemple ne fonctionne pas.

Code : Tout sélectionner


....

$lview = GUICtrlCreateListView("", 20, 278, 601, 250);,$LVS_NOCOLUMNHEADER)
_GUICtrlListView_AddColumn($lview, "Id", 30)
_GUICtrlListView_AddColumn($lview, "Nom", 95)
_GUICtrlListView_AddColumn($lview, "Prénom", 95)
_GUICtrlListView_AddColumn($lview, "Mail", 120)
_GUICtrlListView_AddColumn($lview, "Mobile", 100)

.....
Func DoubleClick($hWnd, $iMsg, $iwParam, $ilParam)
    Local $tagNMHDR = "hwnd hWndFrom;uint_ptr IDFrom;INT Code"
    Local $hWndFrom, $iIDFrom, $iCode, $hWndList
    $hWndList = $lview
    If Not IsHWnd($lview) Then $hWndList = GUICtrlGetHandle($lview)
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
        Case $hWndList
            Switch $iCode
                Case $NM_DBLCLK
                    $indexLV = ControlListView($Gui_Contacts, "", $hWndList, "GetSelected") ; récupère l'index de la ligne
                    [color=#BF0000]$itemtxt = ControlListView($Gui_Contacts, "", $hWndList, "GetText", $indexLV,1) ; récupère le texte de la ligne, colonne 1 c'est la que ça bloque[/color]
                    $LigneSelectionne = $itemtxt ; ^^
                    Msgbox(0,"",$LigneSelectionne)
                    
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>DoubleClick
 
Est ce que je me trompe de Control ? si quelqu'un peut m'expliquer ?
Merci
Laddy
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

Re: [..] Double clic selectionner tt la ligne (item) et subi

#2

Message par GaRydelaMer »

Bonjour


moi je fais comme ca, dans mon code j'ai une fonction qui va gérer les événements windows:

Code : Tout sélectionner

GUIRegisterMsg($WM_NOTIFY, "_Events_WM_Notify")

Func _Events_WM_Notify($hWnd, $Msg, $wParam, $lParam)
    #forceref $hWnd, $Msg, $wParam, $lParam
    Local $tInfo, $iCode
    $tInfo = DllStructCreate($tagNMHDR, $lParam)
    $hWnd = HWnd(DllStructGetData($tInfo, "hWndFrom"))
    $iCode = DllStructGetData($tInfo, "Code")
    Switch $hWnd
        Case GUICtrlGetHandle($lview) ; ici les événements sur ta listview
            Switch $iCode
                Case $NM_CLICK; $Click d'un item
                Case $NM_DBLCLK ; le doubleclick dans la listview
                    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
                    Local $iItem = DllStructGetData($tInfo, "Index")
                    Local $iSubItem = DllStructGetData($tInfo, "SubItem")
                    If $iItem > -1 Then LV_OnDblClick($hWnd, $iItem) ; seulement si on double-click sur un item
                    Return True
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>_Events_WM_Notify
 
ensuite j'ai une fonction qui va traiter l'action double click sur 1 item

Code : Tout sélectionner

; ici tu vas pouvoir traiter comme tu veux ta ligne _GUICtrlListView_GetItemText($hWnd, $iItem, $iSubItem)
; $iSubItem c'est le n° de la colonne et il commence à 0 pour la 1ére
Func LV_OnDblClick($hWnd, $iItem) ; en option tu peux rajouter $iSubItem, la référence de la colonne cliquée
    ConsoleWrite(_GUICtrlListView_GetItemText($hWnd, $iItem, 0) & @LF) ; ID
    ConsoleWrite(_GUICtrlListView_GetItemText($hWnd, $iItem, 1) & @LF) ; Nom
    ConsoleWrite(_GUICtrlListView_GetItemText($hWnd, $iItem, 2) & @LF) ; Prénom
    ConsoleWrite(_GUICtrlListView_GetItemText($hWnd, $iItem, 3) & @LF) ; Mail
    ConsoleWrite(_GUICtrlListView_GetItemText($hWnd, $iItem, 4) & @LF) ; Mobile
EndFunc   ;==>LV_OnDblClick

 
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Double clic selectionner tt la ligne (item) et subi

#3

Message par mikell »

Pas testé mais que donnerait l'exstyle $LVS_EX_FULLROWSELECT ?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

Re: [..] Double clic selectionner tt la ligne (item) et subi

#4

Message par GaRydelaMer »

@mikell

c'est juste pour l'affichage ce style, pour que la ligne de sélection la sélection en bleu soit sur tous les subitems.

je m'en sert comme ça la plupart du temps.

Code : Tout sélectionner

    $hLV1 = _GUICtrlListView_Create($GUI, "", 10, 70, 415, 600, _
            BitOR($LVS_REPORT, $LVS_SINGLESEL, $LVS_SHOWSELALWAYS))
    _GUICtrlListView_SetExtendedListViewStyle($hLV1, _
            BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES, $LVS_EX_DOUBLEBUFFER, $WS_EX_CLIENTEDGE))
 
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Double clic selectionner tt la ligne (item) et subi

#5

Message par mikell »

Bon ben y a la manière bourrin alors :mrgreen:
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [..] Double clic selectionner tt la ligne (item) et subi

#6

Message par Laddy »

Merci à tous 2
je vais essayer dès que possible.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Double clic selectionner tt la ligne (item) et subi

#7

Message par mikell »

Hum pour ton code du début, ça devrait le faire

Code : Tout sélectionner

Case $NM_DBLCLK
        $indexLV = ControlListView($Gui_Contacts, "", $hWndList, "GetSelected") ; index de la ligne
        $itemtxt = ""
        $nbcol = ControlListView($Gui_Contacts, "", $hWndList, "GetSubItemCount")   ; nb de colonnes
        For $c = 0 to $nbcol-1
                ; lit tous les subitems de la ligne, avec comme séparateur " | "
          $itemtxt &= ControlListView($Gui_Contacts, "", $hWndList, "GetText", $indexLV, $c) & "|"
        Next
        $LigneSelectionne = StringTrimRight($itemtxt, 1)   ; vire le dernier séparateur
        Msgbox(0,"", $LigneSelectionne)
" 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
TopXm
Niveau 6
Niveau 6
Messages : 260
Enregistré le : mer. 25 mai 2011 16:37
Localisation : Usa
Status : Hors ligne

Re: [..] Double clic selectionner tt la ligne (item) et subi

#8

Message par TopXm »

Hello :)
Sinon quand y'a une gros volume d'informations lignes/colonnes ça peut être aussi pas mal de passer par un array on l'on stocke en colonne 0 l'Handle de l'item [par exemple, pour une recherche ultérieure] et "derrière" les informations nécessaires au traitement, non ?
Je fais ça pour les ListViews et TreeViews. Bon j'avoue être assez fan des arrays et peut-être ai-je tord :chépa:
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [..] Double clic selectionner tt la ligne (item) et subi

#9

Message par Laddy »

Bonjour à tous

attention je ne sais pas si ça sera possible car en fait je travaille avec une base de donnée mysql.
Il faut que j'extrais les informations contenus dans la bdr pour remplir chaque colonne.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Double clic selectionner tt la ligne (item) et subi

#10

Message par mikell »

Ben oui, tu remplis ton array avec les infos extraites, et tu remplis la listview avec l'array
Comme ça si tu dois récupérer des infos, au lieu de lire la listview tu lis directement les données dans l'array
Les méthodes se valent

@TopXm
Je connais bien ta méthode que j'utilise moult dans un certain script de surveillance :mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Répondre