Hallo,
vieleicht kann mir jemand bei meinem Problem helfen.
Mir ist aufgefallen, dass ein Eintrag (item) auf zwei verschiedene Arten in meinem Beispiel
markiert sein kann.
Einmal ist wenn ich direkt mit der Maus draufklick der Eintrag "blau" markiert und alle Funktionen aus den
Contextmenü funktionieren. Wenn ich den Mauszeiger danach ins leere Listview stelle ist der Eintrag nicht "blau"
sondern hat ein gestrichelten Rand. Wenn ich nun das Contextmenü aufrufe dann kann dieser "gestrichelte"
markierte Eintrag sogar kopiert aber nicht gelöscht werden.
Ich würde es gerne so haben das nur wenn der Eintrag "blau" markiert ist auch das Contextmenü seinen Dienst tut.
Hier mal das was ich meine in zwei Screenshots:
Screen 1: Blau markiert
Screen 2: gestrichelt markiert
Hier mal das Beispiel:
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <MsgBoxConstants.au3>
Global $idListview
GUICreate("ListView", 400, 300)
$idListview = GUICtrlCreateListView("", 2, 2, 394, 268)
Global $CM = GUICtrlCreateContextMenu($idListview)
Global $CMDelete = GUICtrlCreateMenuItem("Eintrag löschen", $CM)
Global $CMCopy = GUICtrlCreateMenuItem("Eintrag speichern", $CM)
GUISetState(@SW_SHOW)
_GUICtrlListView_AddColumn($idListview, "Items", 100)
_GUICtrlListView_AddItem($idListview, "Item 1")
_GUICtrlListView_AddItem($idListview, "Item 2")
_GUICtrlListView_AddItem($idListview, "Item 3")
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $CMDelete
_GUICtrlListView_DeleteItemsSelected($idListview)
Case $CMCopy
_kopiere()
EndSwitch
WEnd
Func _kopiere()
Local $lesen = _GUICtrlListView_GetSelectionMark($idListview)
Local $item = _GUICtrlListView_GetItemTextString($idListview, $lesen)
If $lesen = -1 Then
MsgBox(0, "Fehler", "Kein Eintrag markiert!")
Else
FileWriteLine("speichern.txt", $item)
MsgBox(0, "", "Eintrag gespeichert")
EndIf
EndFunc ;==>_kopiere
Alles anzeigen