GuiCtrlCreateList - mehrere Strings auslesen

  • Guten Morgen

    Ich habe folgendes Anliegen, bei dem ich auf eure Hilfe hoffe:

    In meiner GUI möchte ich mit GUICtrlCreateList mehrere Strings anbieten, die man durch anklicken auswählen kann.
    Es soll möglich sein, auch mehrere Strings anzuklicken.
    Soweit ich schon mitbekommen hab, kann ich dies durch den Style LBS_MultipleSel erreichen.

    Wenn ich nun den Wert dieses Ctrl mit GuiCtrlRead auslese und testweise in einer MsgBox ausgebe, erhalte ich jedoch nur den zuletzt angeklickten String.

    Hat jemand eine Idee, wid ich mein Ziel, mehrere Strings auszuwählen und die gewählten Strings auszulesen, umsetzen kann ?

    Einmal editiert, zuletzt von SmilingStar (10. August 2012 um 14:03)

  • Hallo SmilingStar,

    wrum immst du icht eine ListView mit nur eier Spalte, sieht optisch etws besser aus und dein Vorhaben lässt sich problemlos lösen. Wen du aber bei einer ListBox bleibe willst slltest du dir i der Hilfe

    [autoit]

    _GUICtrlListBox_GetSelItems

    [/autoit]

    inkl. dem Besipiel anschauen,

    mfg autoBert

  • Hallo SmilingStar,

    wrum immst du icht eine ListView mit nur eier Spalte, sieht optisch etws besser aus und dein Vorhaben lässt sich problemlos lösen. Wen du aber bei einer ListBox bleibe willst slltest du dir i der Hilfe

    [autoit]

    _GUICtrlListBox_GetSelItems

    [/autoit]

    inkl. dem Besipiel anschauen,

    mfg autoBert

    Hab mir gerade mal Listview angeschaut und den Style LVS_LIST gesetzt um nur eine Spalte zu erhalten. Ich kann auch ohne Probleme mehrere Strings auswählen, die vorher per ListViewItem geschrieben wurden.
    Hab dafür das Bsp etwas zerlegt.
    Bekomm jedoch bei Auswahl mehrerer Strings und Klick auf den Button nur 1 String angezeigt

  • Bitte sehr:

    Lösung mit ListView
    [autoit]

    #include <GuiListView.au3>
    $Debug_LV = False ; Check ClassName being passed to ListView functions, set to True and use a handle to another control to see it work
    _Main()
    Func _Main() Local $hListView
    GUICreate("ListView Get Selected Indices", 400, 300) $hListView = GUICtrlCreateListView("", 2, 2, 394, 268, BitOR($LVS_SHOWSELALWAYS, $LVS_REPORT)) $bAnzeigen = GUICtrlCreateButton("Anzeigen", 5, 275, 390, 20) GUISetState()
    ; Add columns _GUICtrlListView_AddColumn($hListView, "Column 1", 100)
    ; Add items _GUICtrlListView_AddItem($hListView, "Item 1") _GUICtrlListView_AddItem($hListView, "Item 2") _GUICtrlListView_AddItem($hListView, "Item 3")

    [/autoit] [autoit][/autoit] [autoit]

    ; Loop until user exits While 1 $nMsg = GUIGetMsg() Switch $nMsg Case -3 Exit Case $bAnzeigen _GUICtrlListView_SetItemSelected($hListView, 1) _GUICtrlListView_SetItemSelected($hListView, 2) MsgBox(4160, "Information", "Selected Indices: " & _GUICtrlListView_GetSelectedIndices($hListView)) EndSwitch WEnd GUIDelete()EndFunc ;==>_Main

    [/autoit]
    Lösung mit ListBox
    [autoit]

    #include <GuiListBox.au3>#include <Array.au3>#include <GUIConstantsEx.au3>
    Local $sItems
    $hGUI = GUICreate("test", 300, 500)$hList = guictrlcreatelist("", 5, 5, 290, 450, BitOR($LBS_STANDARD, $LBS_EXTENDEDSEL))$bAnzeigen = GUICtrlCreateButton("Anzeigen", 5, 460, 290, 30)_GUICtrlListBox_BeginUpdate($hList)For $i = 0 To 65 _GUICtrlListBox_AddString($hList, String(Random(1000, 9999, 1)))Next_GUICtrlListBox_EndUpdate($hList)GUISetState()
    While 1 $nMsg = GUIGetMsg() Switch $nMsg Case -3 Exit Case $bAnzeigen $aItems = _GUICtrlListBox_GetSelItems($hList) For $iI = 1 To $aItems[0] If $iI > 1 Then $sItems &= ", " $sItems &= $aItems[$iI] Next MsgBox(64, "test", $sItems) EndSwitchWEnd

    [/autoit]

    Einmal editiert, zuletzt von minx (9. August 2012 um 13:45)