Sign in to follow this  
Followers 0
Nithyanandam

How to Call a function when ListView Row is clicked

5 posts in this topic

Hi I have two List views H1 and H2.

When I make a selection in H1 the results in H2 should be automaticaly updated. i.e WE should be able to call a fucntion when H1 is clicked. Then that function will update the H2.

How Can we call a function when listview item is clicked?

Thanks

Sasikumar Nithyanandam

Share this post


Link to post
Share on other sites



Nithyanandam,

Use GUIRegisterMsg with the WM_NOTIFY message to capture a click in the H1 ListView - something like this:

Func MY_WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $wParam
    Local $tNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return
    If DllStructGetData($tNMHDR, 3) = $NM_DBLCLICK Then $fClick = True
    $tNMHDR = 0
    Return $GUI_RUNDEFMSG
EndFunc

Then when the $fClick flag is set, you can run your function to update the H2 ListView. Do not forget to reset the $fClick flag though. >_<

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

#3 ·  Posted (edited)

Nithyanandam,

Use GUIRegisterMsg with the WM_NOTIFY message to capture a click in the H1 ListView - something like this:

Func MY_WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $wParam
    Local $tNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return
    If DllStructGetData($tNMHDR, 3) = $NM_DBLCLICK Then $fClick = True
    $tNMHDR = 0
    Return $GUI_RUNDEFMSG
EndFunc

Then when the $fClick flag is set, you can run your function to update the H2 ListView. Do not forget to reset the $fClick flag though. >_<

M23

Hi, almost but there's a couple of problems with your MY_WM_NOTIFY() function..

Your not trapping the msg to which control is double clicked..

DllStructGetData($tNMHDR, 1) = handle to control

For example if I had a Tab control with a ListView control on my Gui then $NM_DBLCLICK would fire on either control as your not checking which control is double clicked.

The "If @error Then Return" is not really needed

$tNMHDR = 0 isn't really needed even though it's good practice to clear a struct, but in this case the struct will be reset/cleared when entering/leaving the function

The tagNMHDR would be "hwnd;int_ptr;int" to make it compatible with 64bit and 32bit os

(I only discovered that recently while perusing the bugtrac)

Myself I would point the op to AutoIt help file -> User Defined Functions -> GuiListView Management -> _GUICtrlListView_Create() example to get an understanding of the WM_NOTIFY() function and how it works.

Edit: If the op had posted some brief partly working code I probably would have modded his code to show WM_NOTIFY()in action.

Cheers

Edited by smashly

Share this post


Link to post
Share on other sites

smashly,

Thank you for those clarifications. Always happy to learn. >_<

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

Thanks guys... all you suggestions helped me a lot... thanks...

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