grasshopper3 Posted September 7, 2010 Share Posted September 7, 2010 Can someone help give me a kick start with a listview option? I have a list of drives in a listview and I would like to be able to open the drive when I double click on the listview item/drive. I think that it will have something to do with onevent() or something thing like that but I am not familiar with that. Thanks! Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted September 7, 2010 Moderators Share Posted September 7, 2010 grasshopper3, This thread will show how to detect and action a Doublclick in a ListView. Is that enough of a kick? M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
grasshopper3 Posted September 8, 2010 Author Share Posted September 8, 2010 This was helpful, but I am not sure that I am following very well. I also pasted in my listview into the example(attached) in the post and it doesn't work the same. Are there certain styles that it won't work with. For example I am using select entire item $hListView = GUICtrlCreateListView ("Drive|Device|Status|Share Path|Free Space|Total Space",15,45,560,320,BitOR($LVS_SINGLESEL,$LVS_SHOWSELALWAYS),BitOR($LVS_EX_GRIDLINES,$LVS_EX_CHECKBOXES,$LVS_EX_FULLROWSELECT)); I would like it to be able to open the item/drive when I double click on it. ; If an item was double clicked If $fDblClk Then $fDblClk = False MsgBox(0,'',_GUICtrlListView_GetItemText($hListView ,$aLV_Click_Info[0],2)) ;~ Run("Explorer " & _GUICtrlListView_GetItemText($hListView ,$aLV_Click_Info[0],2)) EndIf I am not sure how to modify this to make it work for me Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam) ; If a combo exists, return immediately If $hTmp_Combo <> 0 Then Return $GUI_RUNDEFMSG Local $tNMHDR = DllStructCreate($tagNMHDR, $ilParam) If HWnd(DllStructGetData($tNMHDR, "hWndFrom")) = $hListView And DllStructGetData($tNMHDR, "Code") = $NM_DBLCLK Then $aLV_Click_Info = _GUICtrlListView_SubItemHitTest($hListView) ; As long as the click was on an item or subitem If $aLV_Click_Info[0] <> -1 Then $fDblClk = True EndIf Return $GUI_RUNDEFMSG EndFuncnew 2.au3 Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted September 8, 2010 Moderators Share Posted September 8, 2010 grasshopper3,Message handlers are complicated things when you first start out! For the script to work, you need to use the _GUICtrlListView UDF to create the ListView, not the built-in GUICtrlCreateListView. However, I cannot get all the styles to work, even though there is no error.This gives you the text of the first column when you click on it - which is where you have your drive letter:expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <GuiListView.au3> #include <Misc.au3> Opt("TrayIconDebug", 1) ; Set flag to indicate double click in ListView Global $fDblClk = False ; Declare global variables Global $aLV_Click_Info ; Open DLL for _IsPressed $dll = DllOpen("user32.dll") ; Create GUI $hGUI = GUICreate("Test", 400, 250) $hListView = _GUICtrlListView_Create($hGUI, "Col 0|Col 1|Col 2", 10, 10, 242, 200) _GUICtrlListView_AddItem($hListView, "Item 00",0) _GUICtrlListView_AddSubItem($hListView, 0, "Item 01", 1) _GUICtrlListView_AddSubItem($hListView, 0, "Item 02", 2) _GUICtrlListView_AddItem($hListView, "Item 10",1) _GUICtrlListView_AddSubItem($hListView, 1, "Item 11", 1) _GUICtrlListView_AddSubItem($hListView, 1, "Item 12", 2) _GUICtrlListView_AddItem($hListView, "Item 20",2) _GUICtrlListView_AddSubItem($hListView, 2, "Item 21", 1) _GUICtrlListView_AddSubItem($hListView, 2, "Item 22", 2) _GUICtrlListView_AddItem($hListView, "Item 30",3) _GUICtrlListView_AddSubItem($hListView, 3, "Item 31", 1) _GUICtrlListView_AddSubItem($hListView, 3, "Item 32", 2) GUISetState() ; Look for double clicks GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE DllClose($dll) Exit EndSwitch ; If the ListView was double clicked If $fDblClk Then $fDblClk = False Switch $aLV_Click_Info[1] Case 0 ; On Item $sText = _GUICtrlListView_GetItemText($hListView, $aLV_Click_Info[0]) MsgBox(0, "", $sText) EndSwitch EndIf WEnd Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam) Local $tNMHDR = DllStructCreate($tagNMHDR, $ilParam) If HWnd(DllStructGetData($tNMHDR, "hWndFrom")) = $hListView And DllStructGetData($tNMHDR, "Code") = $NM_DBLCLK Then $aLV_Click_Info = _GUICtrlListView_SubItemHitTest($hListView) ; As long as the click was on an item or subitem If $aLV_Click_Info[0] <> -1 Then $fDblClk = True EndIf Return $GUI_RUNDEFMSG EndFuncBut as you can see, you do not get checkboxes or gridlines. I will see if I can find anything to solve that. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
grasshopper3 Posted September 8, 2010 Author Share Posted September 8, 2010 (edited) I really appreciate the help! I didn't use the ListView UDF to create my listview because I wanted the listview to be in a tab display. When I used the UDF it didn't work properly with the tabs plus I couldn't get the styles that I needed. $Tabs = GUICtrlCreateTab(10,10,575,440) $ListViewTab = GUICtrlCreateTabItem("ListView") $listview = GUICtrlCreateListView ("Drive|Device|Status|Share Path|Free Space|Total Space",15,40,560,310,BitOR($LVS_SINGLESEL,$LVS_SHOWSELALWAYS),BitOR($LVS_EX_FULLROWSELECT,$LVS_EX_GRIDLINES,$LVS_EX_CHECKBOXES)) If you know how to fix that please let me know. Edited September 8, 2010 by grasshopper3 Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted September 8, 2010 Moderators Share Posted September 8, 2010 grasshopper3, Sometimes you just have to accept that certain things are incompatible and go with what you can get! But I will look into the ListView styles problem and see what I can do - no promises, mind. As to the tab problem, post the code that is posing the problem and we will see what we can do. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now