Ich habe eine UDF erstellt, mit der ListviewSubitems bearbeitet werden können. Dabei wird Das SubItem "selbst editierbar" (also nur auf der Fläche des Subitems).
Die Bedienung ist recht einfach. Ich hab mal ein Beispiel erstellt:
Spoiler anzeigen
AutoIt
#include "ListViewEditInput.au3"
Opt("GuiOnEventMode",1)
$hGui=GUICreate("ListviewEditExample",420,340,-1,-1)
$hListView=GUICtrlCreateListView("Spalte 1|Spalte 2|Spalte 3",10,10,200,280)
$hListView2=GUICtrlCreateListView("Spalte 1|Spalte 2|Spalte 3",215,10,200,280)
$hLabel=GUICtrlCreateLabel("Noch ist nichts passiert",10,300,300,25)
for $i=0 to 10 step 1
GUICtrlCreateListViewItem($i&":0"&"|"&$i&":1"&"|"&$i&":2",$hListView)
GUICtrlCreateListViewItem($i&":0"&"|"&$i&":1"&"|"&$i&":2",$hListView2)
next
;Starten des Editierens (Label erstellen und die MessageFunktionen aktivieren
__ListViewEditInput_StartUp($hGui)
;Listview hinzufügen (Nur Spalte 1 und 2 darf bearbeitet werden) (doubleclick)
__ListViewEditInput_AddListview($hGui,$hListView,"1,2")
;2. Listview hinzufügen (Nur Zeile 4 darf bearbeitet werden) (singleClick)
__ListViewEditInput_AddListview($hGui,$hListView2,"All","4","E")
;ESC zum abbrechen und ENTER zum abschicken initialisieren
__ListViewEditInput_InitializeKeys($hGui)
;registriere Funktion, die aufgerufen wird, wenn ein Feld bearbeitet wurde
__ListViewEditInput_RegisterFunction($hListView,"_edited","Changed")
;registriere Funktion, die aufgerufen wird, wenn ein Feld nicht bearbeitet wurde
__ListViewEditInput_RegisterFunction($hListView,"_canceled","Canceled")
;listview ist nicht mehr bearbeitbar;
__ListViewEditInput_DeleteListview($hListView2)
GUISetOnEvent($GUI_EVENT_CLOSE,"_close")
GUISetState(@SW_SHOW)
while 1
WEnd
Func _close()
exit
EndFunc
Func _edited($ctrl,$index,$subIndex)
GUICtrlSetData($hLabel,"Changed: "&$ctrl&": "&$index&":"&$subIndex)
EndFunc
Func _canceled($ctrl,$index,$subIndex)
GUICtrlSetData($hLabel,"Canceled: "&$ctrl&": "&$index&":"&$subIndex)
EndFunc
Alles anzeigen
Bisher geht es nur mit einer Gui. Ich muss also noch hinzufügen, dass auf mehreren Guis gearbeitet werden kann.
Ich freue mich schon auf eure Rückmeldung
Changelog:
Code
v1.1.0:
- Release
v2.0.0:
- Add the ability to switch to the next editable cell with tab
- Rework to AutoIt v3.3.16.1 (partly) using maps
v3.0.0:
- Fully reworked to use maps instead of structs (more flexibility/performance)
- Uses maps to save editable rows/cols to make ..._isCellEditable faster (No string parsing every time)
- Bugfixes
v3.0.1:
- Fixes Bug with the registered keys working systemwide
v3.0.2:
- Fixes Bug where the key input gui wide
- The last edited item is now selected
- The selection moves with the editable cell, when using ..__updateNextCellIndex (Using the tab key)
Alles anzeigen