Listviewitem text auslesen funktioniert nicht...

  • Hallo,
    Ich habe

    [autoit]

    Case $SenderDel
    _GUICtrlListView_DeleteItemsSelected($SenderListView)
    $SenderDelText = _GUICtrlListView_GetItemTextString($SenderListView, _GUICtrlListView_GetHotItem($SenderListView))
    MsgBox(0, "", $SenderDelText)
    IniDelete($INR_INI, "Sender", $SenderDelText)

    [/autoit]


    um Ein eintrag aus einer Ini zu löschen.
    Der Inieintrag hat den Gleichen namen wie das listviewitem, mit dieser methode bekomm ich aber immer nur "|".
    Was mach ich falsch?

    Einmal editiert, zuletzt von JuraX (30. Mai 2010 um 20:25)

  • Hallo JuraX,

    evtl. war ja das "HOT"-Item in der Selektion dabei, die du gelöscht hast. Lösche also erst in der Listview, nachdem du dir das Item gemerkt hast. Die meisten Funktionen der ListView.au3 benötigen das Handle und nicht die ID (manche nehmen beides). Mache es also so (ungetestet hier im Forum erstellt) :

    [autoit]

    Case $SenderDel
    $SenderDelText = _GUICtrlListView_GetItemTextString($SenderListView, _GUICtrlListView_GetHotItem(GUICtrlGetHandle($SenderListView))
    MsgBox(0, "", $SenderDelText)
    IniDelete($INR_INI, "Sender", $SenderDelText)

    [/autoit]


    _GUICtrlListView_DeleteItemsSelected(GuiCtrlGetHandle($SenderListView)) ;hier wird zwingend das Handle benötigt, beim Rest ??

    mfg (Auto)Bert

    Einmal editiert, zuletzt von AutoBert (30. Mai 2010 um 11:30)

  • Nein, ich leider auch nicht... ?(

    Ich poste nur, damit dein Thread wieder hochkommt und ich ihn Abbonieren kann. (Mich interessiert das auch) ;)

    Widerstand ist Zwecklos!

    Meine Projekte: Kizzys Controller, 2nd Desktop und Versteckte Dateien Assistent
    Meine Downloadwebsite .

  • Die Antwort ist ganz einfach: es gibt kein HotItem mehr. Zum Verständnis:

    Spoiler anzeigen
    [autoit]

    #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>

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

    Opt('MustDeclareVars', 1)

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

    $Debug_LV = False ; Prüft den Klassennamen (ClassName), der an die ListView-Funktion übergeben wird. Setze dies versuchsweise auf True und verwende dann ein Handle zu einem anderen Control, um die Funktionsweise zu verstehen.

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

    _Main()

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

    Func _Main()
    Local $exStyles = BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES), $hListView, $nMsg, $idInfo

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

    GUICreate("ListView: Setzt das 'hot' Item", 400, 300)

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

    $hListView = GUICtrlCreateListView("", 2, 2, 394, 268)
    $hListView = GUICtrlGetHandle($hListView)
    _GUICtrlListView_SetExtendedListViewStyle($hListView, $exStyles)
    $idInfo = GUICtrlCreateButton("&Info",5,275,50,25)
    GUISetState()

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

    ; Fügt die Spalten hinzu
    _GUICtrlListView_AddColumn($hListView, "Spalte 1", 100)
    _GUICtrlListView_AddColumn($hListView, "Spalte 2", 100)
    _GUICtrlListView_AddColumn($hListView, "Spalte 3", 100)

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

    ; Fügt die Items hinzu
    _GUICtrlListView_AddItem($hListView, "Zeile 1: Spalte 1")
    _GUICtrlListView_AddSubItem($hListView, 0, "Zeile 1: Spalte 2", 1)
    _GUICtrlListView_AddSubItem($hListView, 0, "Zeile 1: Spalte 3", 2)
    _GUICtrlListView_AddItem($hListView, "Zeile 2: Spalte 1")
    _GUICtrlListView_AddSubItem($hListView, 1, "Zeile 2: Spalte 2", 1)
    _GUICtrlListView_AddItem($hListView, "Zeile 3: Spalte 1")

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

    ; Setzt das 'hot' Item
    _GUICtrlListView_SetHotItem($hListView, 1)
    MsgBox(4160, "Das HotItem hat den Index" & _GUICtrlListView_GetHotItem($hListView) &" ( 1 ist richtig)", _GUICtrlListView_GetItemTextString($hListView,_GUICtrlListView_GetHotItem($hListView)))

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

    ; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    GUIDelete()
    Exit
    case $idInfo
    MsgBox(4160, "Das HotItem hat den Index" & _GUICtrlListView_GetHotItem($hListView) &" ( 1 wäre richtig)", _GUICtrlListView_GetItemTextString($hListView,_GUICtrlListView_GetHotItem($hListView)))
    EndSwitch
    WEnd
    EndFunc ;==>_Main

    [/autoit]

    Direkt nach dem Erstellen ist es noch da, mit Verlust des Focus (Klick auf Button) geht es verloren. Nimm stattdessen doch _GUICtrlListView_GetSelectedIndices:

    Spoiler anzeigen
    [autoit]

    #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>

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

    Opt('MustDeclareVars', 1)

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

    $Debug_LV = False ; Prüft den Klassennamen (ClassName), der an die ListView-Funktion übergeben wird. Setze dies versuchsweise auf True und verwende dann ein Handle zu einem anderen Control, um die Funktionsweise zu verstehen.

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

    _Main()

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

    Func _Main()
    Local $exStyles = BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES), $hListView, $nMsg, $idInfo

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

    GUICreate("ListView: Setzt das 'hot' Item", 400, 300)

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

    $hListView = GUICtrlCreateListView("", 2, 2, 394, 268)
    $hListView = GUICtrlGetHandle($hListView)
    _GUICtrlListView_SetExtendedListViewStyle($hListView, $exStyles)
    $idInfo = GUICtrlCreateButton("&Info",5,275,50,25)
    GUISetState()

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

    ; Fügt die Spalten hinzu
    _GUICtrlListView_AddColumn($hListView, "Spalte 1", 100)
    _GUICtrlListView_AddColumn($hListView, "Spalte 2", 100)
    _GUICtrlListView_AddColumn($hListView, "Spalte 3", 100)

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

    ; Fügt die Items hinzu
    _GUICtrlListView_AddItem($hListView, "Zeile 1: Spalte 1")
    _GUICtrlListView_AddSubItem($hListView, 0, "Zeile 1: Spalte 2", 1)
    _GUICtrlListView_AddSubItem($hListView, 0, "Zeile 1: Spalte 3", 2)
    _GUICtrlListView_AddItem($hListView, "Zeile 2: Spalte 1")
    _GUICtrlListView_AddSubItem($hListView, 1, "Zeile 2: Spalte 2", 1)
    _GUICtrlListView_AddItem($hListView, "Zeile 3: Spalte 1")

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

    ; Setzt das 'hot' Item
    _GUICtrlListView_SetItemSelected($hListView, 1)
    Local $aSelected =_GUICtrlListView_GetSelectedIndices($hListView,True)
    MsgBox(4160, "Das selektierte Item hat den Index" & $aSelected[1], _GUICtrlListView_GetItemTextString($hListView,$aSelected[1]))

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

    ; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    GUIDelete()
    Exit
    case $idInfo
    $aSelected =_GUICtrlListView_GetSelectedIndices($hListView,True)
    MsgBox(4160, "Das selktierte Item hat den Index" & $aSelected[1], _GUICtrlListView_GetItemTextString($hListView,$aSelected[1]))
    EndSwitch
    WEnd
    EndFunc ;==>_Main

    [/autoit]

    mfg (Auto)Bert