Setzt den Cursor so, dass ein festgelegter Item Text geändert werden kann
#include <GuiListView.au3>
_GUICtrlListView_EditLabel ( $hWnd, $iIndex )
$hWnd | Control-ID / Handle des Controls |
$iIndex | 0-basierender Index des zu ändernden Items |
Erfolg: | das Handle Änderungscontrol, welches benutzt wird, um das Item zu ändern |
Fehler: | 0 |
Wenn der Benutzer mit dem Ändern fertig ist oder es abbricht, wird das Änderungscontrol zerstört und das Handle ist nicht mehr länger gültig.
- - - - - - - - Erklärung der Controls - - - - - - - -
_GUICtrlListView_CancelEditLabel
#include <Extras\WM_NOTIFY.au3>
#include <GUIConstantsEx.au3>
#include <GuiImageList.au3>
#include <GuiListView.au3>
#include <WindowsConstants.au3>
Global $g_hListView, $g_idMemo
Example()
Func Example()
Local $hGui = GUICreate("ListView: Ändert die Beschreibung von Items (v" & @AutoItVersion & ")", 400, 300, Default, Default, Default, $WS_EX_CLIENTEDGE)
$g_hListView = _GUICtrlListView_Create($hGui, "", 2, 2, 394, 118, BitOR($LVS_EDITLABELS, $LVS_REPORT))
$g_idMemo = GUICtrlCreateEdit("", 2, 124, 396, 174, 0)
GUISetState(@SW_SHOW)
; Setzt das ANSI Format
;~ _GUICtrlListView_SetUnicodeFormat($hListView, False)
; Lädt die Bilder
Local $hImage = _GUIImageList_Create()
_GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($g_hListView, 0xFF0000, 16, 16))
_GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($g_hListView, 0x00FF00, 16, 16))
_GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($g_hListView, 0x0000FF, 16, 16))
_GUICtrlListView_SetImageList($g_hListView, $hImage, 1)
; Fügt die Spalten hinzu
_GUICtrlListView_InsertColumn($g_hListView, 0, "Spalte 1", 120)
_GUICtrlListView_InsertColumn($g_hListView, 1, "Spalte 2", 120)
_GUICtrlListView_InsertColumn($g_hListView, 2, "Spalte 3", 120)
; Fügt die Items hinzu
_GUICtrlListView_AddItem($g_hListView, "Zeile 1: Spalte 1", 0)
_GUICtrlListView_AddSubItem($g_hListView, 0, "Zeile 1: Spalte 2", 1)
_GUICtrlListView_AddSubItem($g_hListView, 0, "Zeile 1: Spalte 3", 2)
_GUICtrlListView_AddItem($g_hListView, "Zeile 2: Spalte 1", 1)
_GUICtrlListView_AddSubItem($g_hListView, 1, "Zeile 2: Spalte 2", 1)
_GUICtrlListView_AddItem($g_hListView, "Zeile 3: Spalte 1", 2)
_WM_NOTIFY_Register($g_idMemo)
; Erlaubt das Ändern der Beschreibung von Item 0
Local $hEditLabel = _GUICtrlListView_EditLabel($g_hListView, 0)
MemoWrite("Edit Label Handle = 0x" & Hex($hEditLabel) & " IsPtr = " & IsPtr($hEditLabel) & " IsHWnd = " & IsHWnd($hEditLabel))
; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst.
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUIDelete()
EndFunc ;==>Example
Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
#forceref $hWnd, $iMsg, $wParam
Local $hWndListView = $g_hListView
If Not IsHWnd($g_hListView) Then $hWndListView = GUICtrlGetHandle($g_hListView)
Local $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
Local $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
Local $iCode = DllStructGetData($tNMHDR, "Code")
Switch $hWndFrom
Case $hWndListView
Switch $iCode
Case $LVN_BEGINLABELEDITA, $LVN_BEGINLABELEDITW ; Beginn der Änderung der Bezeichnung eines Items
_WM_NOTIFY_DebugEvent("$LVN_BEGINLABELEDIT", $tagNMLVDISPINFO, $lParam, "IDFrom,,Mask,Item,SubItem,State,StateMask,Image,Param,Indent,,GroupID,Columns,pColumns")
Return False ; Erlaubt dem Benutzer, die Bezeichnung zu ändern
;Return True ; Verbietet dem Benutzer, die Bezeichnung zu ändern
Case $LVN_COLUMNCLICK ; Es wurde auf eine Spalte geklickt
_WM_NOTIFY_DebugEvent("$LVN_COLUMNCLICK", $tagNMLISTVIEW, $lParam, "IDFrom,,Item,SubItem,NewState,OldState,Changed,ActionX,ActionY,Param")
; Kein Rückgabewert
Case $LVN_DELETEITEM ; Ein Item soll gelöscht werden
_WM_NOTIFY_DebugEvent("$LVN_DELETEITEM", $tagNMLISTVIEW, $lParam, "IDFrom,,Item,SubItem,NewState,OldState,Changed,ActionX,ActionY,Param")
; Kein Rückgabewert
Case $LVN_ENDLABELEDITA, $LVN_ENDLABELEDITW ; Ende der Änderung der Bezeichnung eines Items
Local $tInfo = DllStructCreate($tagNMLVDISPINFO, $lParam)
Local $pText = DllStructGetData($tInfo, "Text")
If $pText <> 0 Then
_WM_NOTIFY_DebugEvent("$LVN_ENDLABELEDIT", $tagNMLVDISPINFO, $lParam, "IDFrom,,Mask,Item,SubItem,State,StateMask,Image,Param,Indent,,GroupID,Columns,pColumns,,TextMax,*Text")
Return True ; Wenn Text leer ist, wird der Rückgabewert ignoriert.
EndIf
; Wenn das Input-Control nicht leer ist, führt der Rückgabewert True zum Übernehmen des Textes als Itembezeichnung, False verwirft den eingegebenen Text.
; Wenn das Input-Control leer ist, wird der Rückgabewert ignoriert
Case $NM_CLICK ; Wird vom ListView gesendet, wenn der Benutzer ein Item mit der linken Maustaste anklickt
_WM_NOTIFY_DebugEvent("$NM_CLICK", $tagNMITEMACTIVATE, $lParam, "IDFrom,,Index,SubItem,NewState,OldState,Changed,ActionX,ActionY,lParam,KeyFlags")
; Kein Rückgabewert
Case $NM_DBLCLK ; Wird vom ListView gesendet, wenn der Benutzer ein Item mit der linken Maustaste doppelklickt
_WM_NOTIFY_DebugEvent("$NM_DBLCLK", $tagNMITEMACTIVATE, $lParam, "IDFrom,,Index,SubItem,NewState,OldState,Changed,ActionX,ActionY,lParam,KeyFlags")
; Kein Rückgabewert
Case $NM_KILLFOCUS ; Das Control hat den Eingabefokus verloren
_WM_NOTIFY_DebugEvent("$NM_KILLFOCUS", $tagNMHDR, $lParam, "hWndFrom,IDFrom")
; Kein Rückgabewert
Case $NM_RCLICK ; Wird vom ListView gesendet, wenn der Benutzer ein Item mit der rechten Maustaste anklickt
_WM_NOTIFY_DebugEvent("$NM_RCLICK", $tagNMITEMACTIVATE, $lParam, "IDFrom,,Index,SubItem,NewState,OldState,Changed,ActionX,ActionY,lParam,KeyFlags")
;Return 1 ; Verhindert die weitere Standard-Nachrichtenbehandlung
Return 0 ; Erlaubt die weitere Standard-Nachrichtenbehandlung
Case $NM_RDBLCLK ; Wird vom ListView gesendet, wenn der Benutzer ein Item mit der rechten Maustaste doppelklickt
_WM_NOTIFY_DebugEvent("$NM_RDBLCLK", $tagNMITEMACTIVATE, $lParam, "IDFrom,,Index,SubItem,NewState,OldState,Changed,ActionX,ActionY,lParam,KeyFlags")
; Kein Rückgabewert
Case $NM_RETURN ; Das Control hat den Eingabefokus und der Benutzer hat die ENTER-Taste gedrückt
_WM_NOTIFY_DebugEvent("$NM_RETURN", $tagNMHDR, $lParam, "hWndFrom,IDFrom")
; Kein Rückgabewert
Case $NM_SETFOCUS ; Das Control hat den Eingabefokus erhalten
_WM_NOTIFY_DebugEvent("$NM_SETFOCUS", $tagNMHDR, $lParam, "hWndFrom,IDFrom")
; Kein Rückgabewert
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY
; Schreibt eine Zeile in das Memo Control
Func MemoWrite($sMessage)
GUICtrlSetData($g_idMemo, $sMessage & @CRLF, 1)
EndFunc ;==>MemoWrite