Hallo Leute,
es tut mir ehrlich Leid, euch schonwieder mit diesem leidigen Thema "ListViews" belästigen zu müssen.
Leider stehe ich gerade mal wieder so richtig am Schlauch und komme nicht weiter.
Bei diesem Projekt soll in einem ListView - Control eine bearbeitbare Übersicht über einen Dienstplan entstehen.
Um die Priorität der einzelnen noch zu füllenden Löcher festzulegen würde ich gerne ein Context - Menü beim Klicken auf das jeweilige ListViewItem aufrufen.
So weit, so gut. Die Frage ist eigentlich nur, wie schaffe ich es jetzt bei der Auswahl eines Menüpunktes die gewünschte Aktion abzurufen?..
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <WindowsConstants.au3>
#include <GuiImageList.au3>
#include <Date.au3>
#include <GuiListView.au3>
#include <StructureConstants.au3>
#Region ### GRAPHICAL USER INTERFACE ###
$GUI = GUICreate("Dienstsuche OST - GMUNDEN", 900, 600)
$MenuItem1 = GUICtrlCreateMenu("Aktion")
$SubItem1_1 = GUICtrlCreateMenuItem("Dienstsuche starten", $MenuItem1)
$SubItem1_2 = GUICtrlCreateMenuItem("Sperren", $MenuItem1)
$SubItem1_3 = GUICtrlCreateMenuItem("Beenden", $MenuItem1)
$MenuItem2 = GUICtrlCreateMenu("Liste")
$SubItem2_1 = GUICtrlCreateMenuItem("Anzeigen", $MenuItem2)
$SubItem2_2 = GUICtrlCreateMenuItem("Bearbeiten", $MenuItem2)
$SubItem2_3 = GUICtrlCreateMenuItem("Exportieren", $MenuItem2)
$List1 = GUICtrlCreateListView("", 5, 5, 890, 335)
GUISetState(@SW_SHOW)
#EndRegion ### GRAPHICAL USER INTERFACE ###
GUIRegisterMsg($WM_NOTIFY, "WM_Notify_Events")
Global $iLastIndex = -1
$hImage = _GUIImageList_Create()
_GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($List1, 0xFF0000, 16, 16))
_GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($List1, 0x999999, 16, 16))
_GUICtrlListView_SetImageList($List1, $hImage, 1)
#Region ### Initiate StartUp ###
For $i = 0 To 7 Step 1
$D_Tag = _DateTimeFormat(_DateAdd("d", $i, _NowCalcDate()), 1) & " - Tagdienst"
$D_Nacht = _DateTimeFormat(_DateAdd("d", $i, _NowCalcDate()), 1) & " - Nachtdienst"
_GUICtrlListView_AddItem($List1,$D_Tag,1)
_GUICtrlListView_AddItem($List1,$D_Nacht,1)
;~ ConsoleWrite($D_Tag&@CRLF)
;~ ConsoleWrite($D_Nacht&@CRLF)
Next
_GUICtrlListView_InsertColumn($List1, 0, "Datum")
_GUICtrlListView_SetColumnWidth ($List1, 0, $LVSCW_AUTOSIZE)
#EndRegion ### End StartUp ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $SubItem1_1
Case $SubItem1_2
Case $SubItem1_3
Exit
Case $SubItem2_1
Case $SubItem2_2
Case $SubItem2_3
EndSwitch
$iLastIndex = _GUICtrlListView_GetSelectionMark($List1)
WEnd
Func WM_Notify_Events($hWndGUI, $MsgID, $wParam, $lParam)
#forceref $hWndGUI, $MsgID, $wParam
Local $tagNMHDR, $event, $hwndFrom, $code
$tagNMHDR = DllStructCreate("int;int;int", $lParam)
If @error Then Return
$event = DllStructGetData($tagNMHDR, 3)
Select
Case $wParam = $List1
Select
Case $event = $NM_RCLICK
$contextmenu = GUICtrlCreateContextMenu($List1)
$textitem = GUICtrlCreateMenuItem("Sofort", $contextmenu)
$textitem = GUICtrlCreateMenuItem("Dringend", $contextmenu)
$textitem = GUICtrlCreateMenuItem("Normal", $contextmenu)
$textitem = GUICtrlCreateMenuItem("Erledigt", $contextmenu)
EndSelect
EndSelect
$tagNMHDR = 0
$event = 0
$lParam = 0
EndFunc ;==>WM_Notify_Events
Alles anzeigen
- Wo soll die Schleife zur Abfrage des Menüs hin?
Nach einem "Click" auf z.B.: "Dringend" wird über _GuictrlListView_ItemSetImage das Bild des aktiven ($iLastIndex) Items auf z.B.: rot geändert...
Nur funzt das gar nicht so wie ich es will und ich denke mal es ist eher ein kleiner Denkfehler...
Vielleicht fällt wem was auf/ein.
Liebe Grüße,
Stoani