Hallo
wie kann ich auslesen ob ListViewItem angeklickt wurde oder nicht?
GuiCTRLread bringt nichts es zeigt einfach nur was drinne steht.
ListViewItem auslesen
-
- [ offen ]
-
Freaky -
22. Dezember 2009 um 11:49 -
Geschlossen -
Erledigt
-
-
Hi,
schau mal in der Hilfe die Funktionen _GUICtrlListBox zurch die gibt es irgend wo ne Funktion _GUICtrlListBox_GetSelMfG
Der_Doc -
Spoiler anzeigen
[autoit]#include <GUIListBox.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GuiConstantsEx.au3>Opt('MustDeclareVars', 1)
[/autoit] [autoit][/autoit] [autoit]$Debug_LB = False ; Prüft den Klassennamen (ClassName), der an die ListBox-Funktion übergeben wird. Setze dies versuchsweise auf True und verwende dann ein Handle zu einem anderen Steuerelement, um die Funktionsweise zu verstehen.
[/autoit] [autoit][/autoit] [autoit]_Main()
[/autoit] [autoit][/autoit] [autoit]Func _Main()
[/autoit] [autoit][/autoit] [autoit]
Local $hListBox; Erstellt eine GUI
[/autoit] [autoit][/autoit] [autoit]
GUICreate("ListBox: Ermittelt, ob ein Item markiert ist", 400, 296)
$hListBox = GUICtrlCreateList("", 2, 2, 396, 296, BitOR($LBS_STANDARD, $LBS_EXTENDEDSEL))
GUISetState(); Fügt Strings hinzu
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListBox_BeginUpdate($hListBox)
For $iI = 1 To 9
_GUICtrlListBox_AddString($hListBox, StringFormat("%03d : Zufallstring", Random(1, 100, 1)))
Next
_GUICtrlListBox_EndUpdate($hListBox); Wählt ein paar Items aus
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListBox_SetSel($hListBox, 3)
_GUICtrlListBox_SetSel($hListBox, 4)
_GUICtrlListBox_SetSel($hListBox, 5); Ermittelt den "markier-Status" eines Items
[/autoit]
MsgBox(8156, "Information", "Item 5 ausgewählt: " & _GUICtrlListBox_GetSel($hListBox, 4))
; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst
Do
MsgBox(8156, "Information", "Item 5 ausgewählt: " & _GUICtrlListBox_GetSel($hListBox, 4))
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUIDelete()
EndFunc ;==>_MainDas ist das beispiel aus der Hilfe
Aber es geht bei mir nicht.
Egal auf welches ich klicke es komt keine msg
-
Spoiler anzeigen
[autoit]#include <GuiListView.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
#include <EditConstants.au3>
Global $ListViewSel = -1
$hGUI = GUICreate("")
$Listview = GUICtrlCreateListView("Col1|Col2",20,20,360,300,BitOR($ES_AUTOVSCROLL,$ES_READONLY,$WS_VSCROLL))
GUICtrlCreateListViewItem("Row1_1|Row1_2",$Listview)
GUICtrlCreateListViewItem("Row2_1|Row2_2",$Listview)
GUICtrlCreateListViewItem("Row3_1|Row3_2",$Listview)
$Lable = GUICtrlCreateLabel("",20,340,360,40,BitOR(0x01,0x0200))
$ListViewHwnd = GUICtrlGetHandle($Listview)
GUISetState()While 1
[/autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
EndSwitch
If _GUICtrlListView_GetSelectionMark($ListViewHwnd) <> $ListViewSel Then
$ListViewSel = _GUICtrlListView_GetSelectionMark($ListViewHwnd)
GUICtrlSetData($Lable,_GUICtrlListView_GetItemText($ListViewHwnd,$ListViewSel))
EndIf
WEndMit GUIRegisterMsg geht das wesentlich einfacher, aber ich verlege das Beispiel imm

//EDIT:
Dein Beispiel ist auch für eine ListBox, keine ListView -
Danke geht supper

-
- Offizieller Beitrag
Ich denke, das ist noch einfacher:
[autoit]Opt('GUIOnEventMode', 1)
[/autoit][autoit][/autoit][autoit]$gui = GUICreate('Test')
[/autoit][autoit][/autoit][autoit]
GUISetOnEvent(-3, '_ende')
$ID_LV = GUICtrlCreateListView('Bla|Blub', 10, 10, 300, 200)
For $i = 0 To 19
GUICtrlCreateListViewItem(Random(100, 999, 1) & '|' & Random(100, 999, 1), $ID_LV)
GUICtrlSetOnEvent(-1, '_ItemClick')
Next
GUISetState()While 1
[/autoit][autoit][/autoit][autoit]
Sleep(100)
WEndFunc _ende()
[/autoit][autoit][/autoit][autoit]
Exit
EndFuncFunc _ItemClick()
[/autoit]
Local $txt = GUICtrlRead(@GUI_CtrlId)
MsgBox(0, '', 'ListviewItem geklickt: ' & $txt)
EndFunc -
ich brauche grade das wieder und ich finde das erste beispiel am besten
nur es zeigt mir nur das erste an nicht das zweite oder dritte
wie geht das ? -
willst die ein ListView- Item oder ein ListBox- Item auslesen ?
Das erste beispiel war für eine List Box
Das zweite und dritte für ein ListView
vielleicht liegs ja daran
Greez
-
list view
-
[autoit]
; https://autoit.de/index.php?page=Thread&threadID=16536
[/autoit][autoit][/autoit][autoit]#include <GuiListView.au3>
[/autoit][autoit][/autoit][autoit]
#include <WindowsConstants.au3>
#include <EditConstants.au3>
Global $ListViewSel = -1
$hGUI = GUICreate("")
$Listview = GUICtrlCreateListView("Col1|Col2|Col3|Col4",20,20,360,300,BitOR($ES_AUTOVSCROLL,$ES_READONLY,$WS_VSCROLL))
GUICtrlCreateListViewItem("Row1_1|Row1_2|Row1_3|Row1_4",$Listview)
GUICtrlCreateListViewItem("Row2_1|Row2_2|Row2_3|Row2_4",$Listview)
GUICtrlCreateListViewItem("Row3_1|Row3_2|Row3_3|Row3_4",$Listview)
GUICtrlCreateListViewItem("Row4_1|Row4_2|Row4_3|Row4_4",$Listview)
$Lable = GUICtrlCreateLabel("",20,340,360,40,BitOR(0x01,0x0200))
$ListViewHwnd = GUICtrlGetHandle($Listview)
GUISetState()While 1
[/autoit][autoit][/autoit][autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
EndSwitch
If _GUICtrlListView_GetSelectionMark($ListViewHwnd) <> $ListViewSel Then
$ListViewSel = _GUICtrlListView_GetSelectionMark($ListViewHwnd)
GUICtrlSetData($Lable,_GUICtrlListView_GetItemText($ListViewHwnd,$ListViewSel))
For $i = 1 to _GUICtrlListView_GetColumnCount($ListViewHwnd)-1
GUICtrlSetData($Lable,GUICtrlRead($Lable)&@TAB&_GUICtrlListView_GetItemText($ListViewHwnd,$ListViewSel,$i))
Next
EndIfWEnd
[/autoit] -
Danke klapt supper
