die frage des tages...
Habe ich denn iregdnwie die möglichkeit auch einen doppelklick in einem listview zu benutzen?
wenn ja, wie?
Ich sehe es nicht ein immer eine zeile zu markieren und dann extra auf einen button zu drücken
danke
die frage des tages...
Habe ich denn iregdnwie die möglichkeit auch einen doppelklick in einem listview zu benutzen?
wenn ja, wie?
Ich sehe es nicht ein immer eine zeile zu markieren und dann extra auf einen button zu drücken
danke
Hallo!
Jup, geht. Wenn auch nicht 100% perfekt.
Ist in Galenda umgesetzt von GtaSpider.
peethebee
ohje.. dann werd ich mich da mal durchwurschteln
Kann ich auch ein Rechtsklick in der ListView machen. Beim Rechtsklick soll ein Kontextmenü erscheinen
hm.. leute...
ich find das nicht...
so ein einfacher klick wie im galender würde mir auch reichen.. aber ich find den einfach nicht
Hallo!
Die Funktion lautet so:
Func _DoubleClickOnListView(ByRef $lvctrl)
Dim $MousePos = GUIGetCursorInfo()
If ($MousePos[4] == $lvctrl And GUICtrlRead($lvctrl) > 0 And _GUICtrlListViewGetHotItem($lvctrl) = _GUICtrlListViewGetCurSel($lvctrl)) Then
$timerdiff = TimerDiff($TIMER)
If $timerdiff <= $THRESHOLD Then
MsgBox(0,"",GUICtrlRead(GUICtrlRead($List))); Das was er tun soll wenn doppelt gecklickt wurde
EndIf
$TIMER = TimerInit()
EndIf
EndFunc ;==>_DoubleClickOnListView
Am anfang des Skriptes musst du diese variablen "Globaln"
Und in der MainWhile musst du das setzen:
Du kannst dir auch nocheinmal mein PingAll angucken, da ist es auch drin
hier nochmal ein kleines bspskript:
#include <GuiConstants.au3>
Global Const $THRESHOLD = Number(RegRead("HKEY_CURRENT_USER\Control Panel\Mouse", "DoubleClickSpeed"))
Global $TIMER = TimerInit()
$gui = GUICreate("LVS Test", 161, 169, 193, 115)
$ListView1 = GUICtrlCreateListView("BlaBla|BluBlu", 16, 8, 122, 150)
$ListView1_0 = GUICtrlCreateListViewItem("BlaBla|TEST", $ListView1)
$ListView1_1 = GUICtrlCreateListViewItem("7x7=|Feiner sand", $ListView1)
GUISetState(@SW_SHOW)
While 1
;~ $nMsg = GUIGetMsg()
;~ Switch $nMsg
;~ Case $GUI_EVENT_CLOSE
;~ Exit
;~ EndSwitch
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
Exit
Case $msg = $GUI_EVENT_PRIMARYDOWN
_DoubleClickOnListView($ListView1)
EndSelect
WEnd
Func _DoubleClickOnListView(ByRef $lvctrl)
Dim $MousePos = GUIGetCursorInfo()
If ($MousePos[4] == $lvctrl And GUICtrlRead($lvctrl) > 0 And _GUICtrlListViewGetHotItem($lvctrl) = _GUICtrlListViewGetCurSel($lvctrl)) Then
$timerdiff = TimerDiff($TIMER)
If $timerdiff <= $THRESHOLD Then
$LVSRead = StringSplit(GUICtrlRead(GUICtrlRead($lvctrl)), "|")
MsgBox(0,"BlaBla",$LVSRead[1])
MsgBox(0,"BluBlu",$LVSRead[2])
EndIf
$TIMER = TimerInit()
EndIf
EndFunc ;==>_DoubleClickOnListView
Func _GUICtrlListViewGetHotItem($h_listview)
If IsHWnd($h_listview) Then
Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_GETHOTITEM, "int", 0, "int", 0)
Return $a_ret[0]
Else
Return GUICtrlSendMsg($h_listview, $LVM_GETHOTITEM, 0, 0)
EndIf
EndFunc ;==>_GUICtrlListViewGetHotItem
Func _GUICtrlListViewGetCurSel($h_listview, $s_WindowTitle = "", $s_WindowText = "")
If (StringLen($s_WindowTitle) == 0) Then
$s_WindowTitle = WinGetTitle("")
EndIf
If (StringLen(ControlListView($s_WindowTitle, $s_WindowText, $h_listview, "GetSelected")) > 0) Then
Return Int(ControlListView($s_WindowTitle, $s_WindowText, $h_listview, "GetSelected", 0))
Else
Return $LV_ERR
EndIf
EndFunc ;==>_GUICtrlListViewGetCurSel
Alles anzeigen
Mfg Spider
Hallo!
Der bessere Weg ist über ene Message-Funktion, da gibt es im engl. Forum ein Bsp!
http://www.autoitscript.com/forum/index.php?s=&showtopic=30920&view=findpost&p=221372