Dimmak
Знающий
- Сообщения
- 185
- Репутация
- 9
Help, please! :IL_AutoIt_1: ;) 8) :whistle: :beer: :IL_AutoIt_1:
В данном скрипте при помощи F2 редактируется выбранный элемент колонки 'Name'.
Что нужно изменить в коде, чтоб редактировать элементы колонки 'Pid'?
В данном скрипте при помощи F2 редактируется выбранный элемент колонки 'Name'.
Что нужно изменить в коде, чтоб редактировать элементы колонки 'Pid'?
Код:
#include <GUIConstantsEx.au3>
;#Include <CoProc.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#Include <WinAPIex.au3>
#include <Constants.au3>
;#include <Process.au3>
#include <Misc.au3>
; #Include <HotKey.au3>
; #Include <vkConstants.au3>
;#Include <_my.au3>
#include-once
#NoTrayIcon
#include <EditConstants.au3>
#include <GuiButton.au3>
_singleton(@ScriptName)
Global $hListView
Global $Gui
Global $hEdit
Dim $arr[4]
$arr[1] = 'val_1'
$arr[2] = 'val_2'
$arr[3] = 'val_3'
$Gui = GUICreate("Prs_Mngr",225 ,260 ,-1,-1)
$ListView = GUICtrlCreateListView("Name|PiD",5,5,215,215,$LVS_EDITLABELS)
$hListView = GUICtrlGetHandle($ListView)
_GUICtrlListView_SetColumnWidth($ListView , 0, 150)
_GUICtrlListView_SetColumnWidth($ListView , 1, 60)
For $i = 1 to 3
_GUICtrlListView_AddItem($ListView, $arr[$i] , $i,_GUICtrlListView_GetItemCount($ListView) + 9999)
_GUICtrlListView_AddSubItem($ListView, $i-1, $i, 1)
Next
WinMove($Gui, "", 1050, 685)
GUISetState(@SW_SHOW, $Gui)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
;#Include 'WM_NOTIFY.au3'
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
GUIDelete($Gui)
Exit
EndSwitch
WEnd
;====================================================================================
;====================================================================================
Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
#forceref $hWnd, $iMsg, $wParam
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $tInfo
$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $hWndFrom
Case $hListView
Switch $iCode
Case $LVN_COLUMNCLICK
_GUICtrlListView_SortItems($ListView, GUICtrlGetState($ListView))
Case $NM_DBLCLK ; левый двойной клик мышкой по пункту
Case $NM_CLICK ; левый клик мышкой по пункту
Case $LVN_KEYDOWN ; нажатие любой клавиши
Local $tInfo = DllStructCreate($tagNMLVKEYDOWN, $lParam)
Local $Key = DllStructGetData($tInfo, "VKey")
Switch DllStructGetData($tInfo, "VKey")
;==> F2
Case 113
$Tmp = _GUICtrlListView_GetSelectedIndices($hListView, True)
If $Tmp[0]>0 Then
_GUICtrlListView_EditLabel( $hListView, $Tmp[1] )
Return False
EndIf
EndSwitch
;==> F2
Case $LVN_ENDLABELEDITA, $LVN_ENDLABELEDITW ; конец редактирования пункта
;$tInfo = DllStructCreate($tagNMLVDISPINFO, $lParam)
Local $tBuffer = DllStructCreate("char Text[" & DllStructGetData($tInfo, "TextMax") & "]", DllStructGetData($tInfo, "Text"))
If StringLen(DllStructGetData($tBuffer, "Text")) Then Return True
Case $NM_RCLICK ; правый клик мышкой по пункту
Case $NM_RDBLCLK ; правый двойной клик мышкой по пункту
EndSwitch
Case Else
; Обработка события кнопок
Local Const $BCN_HOTITEMCHANGE = -1249
Local $tNMBHOTITEM = DllStructCreate("hwnd hWndFrom;int IDFrom;int Code;dword dwFlags", $lParam)
Local $nNotifyCode = DllStructGetData($tNMBHOTITEM, "Code"), _
$nID = DllStructGetData($tNMBHOTITEM, "IDFrom"), _
$hCtrl = DllStructGetData($tNMBHOTITEM, "hWndFrom"), _
$dwFlags = DllStructGetData($tNMBHOTITEM, "dwFlags"), _
$sText = ""
Switch $nNotifyCode
Case $BCN_HOTITEMCHANGE ; Win XP и выше
If BitAND($dwFlags, 0x10) = 0x10 Then
$sText = "наведена"
ElseIf BitAND($dwFlags, 0x20) = 0x20 Then
$sText = "оставлена"
EndIf
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc
;====================================================================================
;====================================================================================
While 1
sleep(100)
WEnd