Quantcast
Channel: AutoIt v3 - General Help and Support
Viewing all articles
Browse latest Browse all 12506

How to Click and Edit single listview cell?

$
0
0
I'm wondering if it's possible to click and edit single cell inside my listview. I've done the sample script, in which the full row is selected, but I want single cell to be selected, but even with full row, if I enter the editing mode, I can only edit the first item text. How can I edit the other subitems as well?

[ autoit ]         
#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <GuiListView.au3> #include <GuiMenu.au3> Global $Form1 = GUICreate("Form1", 420, 230) Global $List1 = GUICtrlCreateListView('#|Column1|Column2|Column3|Column4|Column5', 0, 0, 440, 230, BitOR($LVS_EDITLABELS, $LVS_REPORT)) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM) GUICtrlSendMsg($List1, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES) For $i = 1 to 10     GUICtrlCreateListViewItem($i & '|Item' & $i & '|Item' & $i & '|' & Random(0, 1, 1) & '|' & Random(200, 220, 1) & '|ItemX', $List1) Next GUISetState(@SW_SHOW) GUIRegisterMsg($WM_SYSCOMMAND, "WM_SYSCOMMAND") GUIRegisterMsg($WM_NOTIFY, "_WM_NOTIFY") While 1     Sleep(10) WEnd Func WM_SYSCOMMAND($hWnd, $iMsg, $wParam, $lParam)     Switch $wParam         Case $SC_CLOSE             Exit     EndSwitch     Return $GUI_RUNDEFMSG EndFunc Func _WM_NOTIFY($hWndGUI, $MsgID, $wParam, $lParam)     #forceref $hWndGUI, $MsgID, $wParam     Local $tNMHDR, $hwndFrom, $code, $tInfo, $tBuffer, $iIDFrom     $tNMHDR = DllStructCreate($tagNMHDR, $lParam)     $hwndFrom = DllStructGetData($tNMHDR, "hWndFrom")     $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")     $code = DllStructGetData($tNMHDR, "Code")     Local $hWndListView = $List1     If Not IsHWnd($List1) Then $hWndListView = GUICtrlGetHandle($List1)     Switch $hwndFrom         Case $hWndListView             Switch $code                 Case $LVN_ENDLABELEDITA, $LVN_ENDLABELEDITW                     $tInfo = DllStructCreate($tagNMLVDISPINFO, $lParam)                     If $code = $LVN_ENDLABELEDITW then                         $tBuffer = DllStructCreate("wchar Text[" & DllStructGetData($tInfo, "TextMax") & "]", DllStructGetData($tInfo, "Text"))                     Else                         $tBuffer = DllStructCreate("char Text[" & DllStructGetData($tInfo, "TextMax") & "]", DllStructGetData($tInfo, "Text"))                     EndIf                     Local $getText = DllStructGetData($tBuffer, "Text")                     If $getText <> '' Then                         Return True                     Else                         Return False                     EndIf             EndSwitch     EndSwitch     Return $GUI_RUNDEFMSG EndFunc

Also, is it possible to enter the editing mode via double click? Or other function?

Viewing all articles
Browse latest Browse all 12506

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>