Sign in to follow this  
Followers 0
Cyri

Listview subitem select

6 posts in this topic

I'm working with a listview with report view style on. I'm wondering if there's a way to select sub-items? No matter how I configure it I can either select the entire row or only the main items. Hoping someone may know of a way to do this.

Share this post


Link to post
Share on other sites



I'm working with a listview with report view style on. I'm wondering if there's a way to select sub-items? No matter how I configure it I can either select the entire row or only the main items. Hoping someone may know of a way to do this.

Add this line after creating your listview

GUIRegisterMsg($WM_NOTIFY, "WM_Notify_Events")

and add this function

Func WM_Notify_Events($hWndGUI, $MsgID, $wParam, $lParam)
        #forceref $hWndGUI, $MsgID, $wParam
        Local $tagNMHDR, $event,$selrow,$selcol
        $tagNMHDR = DllStructCreate("int;int;int", $lParam);NMHDR (hwndFrom, idFrom, code)
        If @error Then Return
        $event = DllStructGetData($tagNMHDR, 3)
        Select
            Case $wParam = $ListView1;<----------change to be the variable for your listview

                Select
                    Case $event = $NM_CLICK;<--------assuming you want to know the column when you left click
                        Local $tagNMITEMACTIVATE = DllStructCreate("int;int;int;int;int;int;int;int;int", $lParam)
                        $selrow = DllStructGetData($tagNMITEMACTIVATE, 4)
                        $selcol = DllStructGetData($tagNMITEMACTIVATE, 5)

                        ConsoleWrite("col selected = " & $selcol & @CRLF);<-------replace with your own code           
                    
                EndSelect
        EndSelect

        Return $GUI_RUNDEFMSG
EndFunc  ;==>WM_Notify_Events

Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script.

Share this post


Link to post
Share on other sites

sorry to dig up this old topic but when I was searching for the same concept, I found this interesting page.

So please just help with my question, instead of single click to view the sub item, how to change it to double click?

Single click is cool but if I make the event to let people open a website when click on the column, that would be mess! The better way that I could think of is change it to double mouse click.

Thanks!

Share this post


Link to post
Share on other sites

You need to detect double clicks manually, using guigetmsg, timers, and counters.

So you detect clicks on the control, and then check which is selected.


ongoing projects:-firestorm: Largescale P2P Social NetworkCompleted Autoit Programs/Scripts: Variable Pickler | Networked Streaming Audio (in pure autoIT) | firenet p2p web messenger | Proxy Checker | Dynamic Execute() Code Generator | P2P UDF | Graph Theory Proof of Concept - Breadth First search

Share this post


Link to post
Share on other sites

hyperzap,

You need to detect double clicks manually, using guigetmsg, timers, and counters

Sorry to be blunt, but that is complete rubbish. :)

You just need to look for the $NM_DBLCLK message and enlarge the struct to give you the column value as well. :D

npploveyou,

Here is an example showing how to do it - look for the <<<<<<<<<<< lines: ;)

#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <GuiListView.au3>

$hGui = GUICreate("Test", 250, 250)

$hListView = GUICtrlCreateListView("Column 1|Column 2|Column 3", 10, 10, 230, 160)
For $i = 1 To 6
    GUICtrlCreateListViewItem("Item " & $i & "1|Item " & $i & "2|Item " & $i & "3", $hListView)
Next

GUISetState()

GUIRegisterMsg($WM_NOTIFY, "_WM_NOTIFY")

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd


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

    #forceref $hWnd, $iMsg, $wParam

    Local $tStruct = DllStructCreate("hwnd;uint_ptr;int_ptr;int;int", $lParam) ; Increase the struct size to get the column <<<<<<<<<<<<<<<<
    If @error Then Return
    Switch DllStructGetData($tStruct, 3)
        Case $NM_DBLCLK ; Look for the double click <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
            ConsoleWrite("Row: " & DllStructGetData($tStruct, 4) + 1 & " - Col: " &DllStructGetData($tStruct, 5) + 1 & @CRLF)
    EndSwitch

EndFunc   ;==>On_WM_NOTIFY

All clear? ;)

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

that was perfectly clear for me.

Thanks a lot!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0