Heyho,
ich hab eine GUI mit 3 ListViews (wegen der Übersicht).
Irgendwo hab ich mal eine Funktion gefunden, die mir die Doppelklicks dafür bereitstellt (unglückliche Formulierung, ich weiss
)
Testscript
#include <GuiListView.au3>
[/autoit] [autoit][/autoit] [autoit]Global $hInput, $hListview_1, $hListview_2, $hListview_3
[/autoit] [autoit][/autoit] [autoit]GUICreate("TestGUI", 240, 300)
$hListview_1 = GUICtrlCreateListView("View 1|Spalte 2|Spalte 3", 8, 10, 225, 70)
GUICtrlCreateListViewItem("Zeile 1a|Test 1a|Text 1a", $hListview_1)
GUICtrlCreateListViewItem("Zeile 1b|Test 1b|Text 1b", $hListview_1)
$hListview_2 = GUICtrlCreateListView("View 2|Spalte 1|Spalte 2", 8, 90, 225, 70)
GUICtrlCreateListViewItem("Zeile 2a|Test 2a|Text 2a", $hListview_2)
GUICtrlCreateListViewItem("Zeile 2b|Test 2b|Text 2b", $hListview_2)
$hListview_3 = GUICtrlCreateListView("View 3|Spalte 1|Spalte 2", 8, 170, 225, 70)
GUICtrlCreateListViewItem("Zeile 3a|Test 3a|Text 3a", $hListview_3)
GUICtrlCreateListViewItem("Zeile 3b|Test 3b|Text 3b", $hListview_3)
$hInput = GUICtrlCreateInput("", 8, 260, 225, 20, 0x0800)
[/autoit] [autoit][/autoit] [autoit]GUIRegisterMsg(0x004E, "WM_NOTIFY")
GUISetState()
Do
Sleep(50)
Until GUIGetMsg() = -3
Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView
Local $hListview = $hListview_1 ;==> eingefügt, dammit ein ListView erkannt wird
$hWndListView = $hListview
If Not IsHWnd($hListview) Then $hWndListView = GUICtrlGetHandle($hListview)
$tNMHDR = DllStructCreate("hwnd hWndFrom;uint_ptr IDFrom;INT Code", $lParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
If $hWndFrom = $hWndListView Then
If $iCode = -3 Then
$tInfo = DllStructCreate("hwnd hWndFrom;uint_ptr IDFrom;INT Code;int Item;int SubItem;" & _
"uint NewState;uint OldState;uint Changed;long ActionX;long ActionY;lparam Param", $lParam)
$iIndex = DllStructGetData($tInfo, "Item")
GUICtrlSetData($hInput, _GUICtrlListView_GetItemText($hWndListView, $iIndex))
EndIf
EndIf
Return 'GUI_RUNDEFMSG'
EndFunc ;==>WM_NOTIFY
Ich will, dass bei Doppelklick auf eines der 3 ListViews die erste Spalte ausgelesen wird, damit ich die erhaltene Info weiter verarbeiten kann.
Leider klappt das mal wieder nicht wie gewünscht. Ich versuchte erst, in Zeile 29 des Testscripts diesen Code:
Local $hListview = $hListview_1 And $hListview_2 And $hListview_3
[/autoit]danach
[autoit]Local $hListview = $hListview_1 Or $hListview_2 Or $hListview_3
[/autoit]... beides erfolglos... danach versuchte ich, die Funktion WM_NOTIFY 3 mal einzubauen, natürlich mit 3 verschiedenen Namen und
hab die auch registriert und bei jedem der 3 Notifies jeweils ein anderes ListView eingebaut, aber auch das war erfolglos... ![]()
Wie muss diese Funktion umgeschrieben werden, damit, egal in welchem ListView ich grad geklickt habe, ich den Inhalt der 1. Spalte zum Weiterverarbeiten bekomme?
Grüße vom Lottich