Hallo an alle AutoIt-Fanatiker und liebe Grüße aus Chile-
Seit kurzem beschäftige ich mich mit AutoIt und bin - natürlich - dabei auch auf Eure Seite gelangt. Das Thema Doppelklick wurde mehrfach angesprochen und doch, irgendwie, nie so richtig gelöst. Beim Spielen mit AutoIt ist mir aber aufgefallen, dass die List- / ListView aus selektieren und fokusieren besteht, also 2 Klicks.....
O.K. lange Rede kurzer Sinn, ich hab mal eine Spiel-Gui gebaut, bei der der Doppelklick funktioniert. Jetzt weiß ich aber nicht ob das eine Eigenart bei ME (Muy Extraño - ich weiß
) ist, oder ob das bei Xp usw. auch funktioniert...
Hier kommt mal der Code:
Spoiler anzeigen
<GUIConstants.au3>
#Include <GuiListView.au3>
#include <GuiList.au3>
;~ /======== Doppelklick-Spiel-GUI ========\
;~ /======== AutoIt-Vers.: v3.2.0.1 ========\
;~ /======== Hinweis: die Anwendung läuft ohne Checkbox/TreeView ========\
;~ /======== dazu mÇussten mehr Abfragen eingebaut werden ========\
;~ /======== Saludos de Chile / Willie ========\
Opt ('MustDeclareVars', 1)
Dim $msg,$Liste,$ListView, $Ausgang,$BTN1,$BTN2,$CurPos
GUICreate("Doppelklick die Lösung ?", 400, 230, -1, -1)
$Liste = GUICtrlCreateList("", 25, 40, 100, 120,$LBS_MULTIPLESEL)
GUICtrlCreateLabel("List",55,20,40,20)
GUICtrlSetFont(-1,11)
GUICtrlSetData($Liste, "Listeintrag 1|Listeintrag 2|Listeintrag 3|º(·¿·)º|";)
$ListView = GUICtrlCreateListView("List-View| ...", 140, 19, 200, 130)
_GUICtrlListViewSetColumnWidth ($ListView, 0, 150)
GUICtrlCreateListViewItem("List-View-Eintrag 1|(·¿·)", $ListView)
GUICtrlCreateListViewItem("List-View-Eintrag 2|(·¡-)", $ListView)
GUICtrlCreateListViewItem("List-View-Eintrag 3|(º.º)", $ListView)
GUICtrlCreateListViewItem("List-View-Eintrag 4|(_º_)", $ListView)
$Ausgang = GUICtrlCreateButton("E X I T", 360, 22, 20, 130,-1,$WS_EX_DLGMODALFRAME )
GUICtrlSetStyle($Ausgang,$SS_Center+$BS_MULTILINE )
$BTN1 = GUICtrlCreateButton("Liste Sel.", 25, 160, 100, 25)
$BTN2 = GUICtrlCreateButton("ListView Sel.", 240, 160, 100, 25)
GUISetState()
While 1
$msg = GUIGetMsg(1)
Select
Case $msg[0] = $GUI_EVENT_CLOSE Or $msg[0] =$Ausgang
ExitLoop
Case $msg[0] = $GUI_EVENT_PRIMARYUP
;~ ==== Doppelklick (linke Maustaste) abprüfen ===
;~ ==== ACHTUNG: das funktioniert nicht mit CHeckbox/Trees ===
$CurPos=GUIGetCursorInfo()
Select
Case $CurPos[4] = $Liste
_GetListe()
Case $CurPos[4] = $ListView
_GetListView()
EndSelect
Case $msg[0] = $BTN1
$CurPos=GUIGetCursorInfo()
_GetListe()
Case $msg[0] = $BTN2
$CurPos=GUIGetCursorInfo()
_GetListView()
EndSelect
WEnd
Func _GetListe()
Local $AnzSelect,$AnzTotal,$text,$cnt,$cntT
;~ == Liste muss MultiSel sein (ob das sinnvoll ist bei Doppelklick?) ===
$AnzSelect=_GUICtrlListGetSelCount($Liste) ; === ausgewählte ===
$AnzTotal =_GUICtrlListCount($Liste) ; === Gesamteintrsg Liste ===
$Text ="ausgewählte Einträge = "&$AnzSelect&" von Total = "&$AnzTotal&@cr
$cnt = _GUICtrlListGetSelItems($Liste) ; === Num ausgewählte ===
$cntT = _GUICtrlListGetSelItemsText($Liste) ; === Text ausgewählte ===
If Not IsArray($cnt) Then ; Liste meldet immer Array
msgbox(16,"Liste-Auswahl","keine Daten selektiert";)
Return
EndIf
If $CurPos[4] = $BTN1 Then ; Info aus GUIGetCursorInfo()
$text=$text&"*** manuelle Auswahl ***"&@cr&@cr
Else
$text=$text&"*** Doppelklick ***"&@cr&"------------------------"&@cr
EndIf
For $i = 1 To $cnt[0]
$text=$text&$cnt[$i]&". "&$cntT[$i]&@cr
Next
MsgBox(0, "Liste-Auswahl: ",$text)
EndFunc
Func _GetListView()
Local $SatzSelect,$AnzTotal,$text
;~ ListView, wegen Doppelklick kein Status: MultiSel ! ===
$SatzSelect=_GUICtrlListViewGetCurSel($ListView) ; === ausgewählter Satz ===
If $SatzSelect = $LV_Err Then
msgbox(16,"List-View-Auswahl","keine Daten selektiert";)
Return
EndIf
$AnzTotal =_GUICtrlListViewGetItemCount($ListView) ; === Gesamteinträge ListView ===
$Text ="ausgewählter Eintrag = "&$SatzSelect&" von Total = "&$AnzTotal&@cr
If $CurPos[4] = $BTN2 Then
$text=$text&"*** manuelle Auswahl ***"&@cr&@cr
Else
$text=$text&"*** Doppelklick ***"&@cr&"------------------------"&@cr
EndIf
$text=$text&$SatzSelect&". "&_GUICtrlListViewGetItemText($ListView,$SatzSelect)
MsgBox(0, "List-View-Auswahl: ",$text)
EndFunc
Auch hier der Hinweis: Die List/ListView arbeitet ohne Checkbox/TreeView. Sollte dies gewünscht werden müssen weitere Abfragen eingebaut werden, da diese Anweisungen den Klick sofort erkennen.
Freu mich auf Eure Antworten, hoffentlich positiv
Saludos de Chile
Willie
(3x editiert unde jetzt klappts auch mit dem Spoiler/Autoit)