Problem mit _GUICtrlListView_SetItemSelected()

  • Hallo,

    ich habe folgendes Problem:

    Ich möchte gerne eine ListView aktualisieren - das ausgewähle Item soll nach dem aktualisieren markiert bleiben.
    - alle Werte in der ListView löschen und neu schreiben.

    Wenn ich in der Funktion _GUICTRLListView_Setitemselected die Variable $selected eingebe funktioniert es nicht, wenn ich anstelle der Variable eine 1 eingebe funktioniert es.
    Woran liegt das?

    Hat jemand eine andere Lösung für mein Problem?

    Vielen Dank für die Hilfe ;)


    Hier ein Beispiel:

  • Das liegt daran das _GUICtrlListView_GetSelectedIndices einen String zurück gibt. Du musst also mit Int zu einem Integer wandeln.

    Code
    $selected = int(_GUICtrlListView_GetSelectedIndices($ListView1))

    Dies funktioniert solange in der LV nur 1 Item selektiert werden kann.

    • Offizieller Beitrag

    Ein Beispiel dafür, dass die ListView-UDF noch Probleme mit der Control-ID hat.
    _GUICtrlListView_SetItemSelected funktioniert nur mit dem Handle des ListViews:


    Edit: Nanu!? AutoBert hat auch recht. Wenn man explizit in Int wandelt, funktioniert auch die Ctlr-ID. Was ist denn mit der automatischen Typwandlung von AutoIt los?

  • Edit: Nanu!? AutoBert hat auch recht. Wenn man explizit in Int wandelt, funktioniert auch die Ctlr-ID. Was ist denn mit der automatischen Typwandlung von AutoIt los?

    Typumwandlung funktioniert meines Wissens nur bei Berechnungen, so dass auch dies:

    Code
    $selected = _GUICtrlListView_GetSelectedIndices($ListView1)*1

    funktioniert.

    mfg autoBert

    • Offizieller Beitrag

    Ja, da fällt einem der "gut gemeinte" Datentyp Variant vor die Füße. Als ich mit AutoIt anfing, fand ich den Datentyp ganz praktisch. Aber je länger ich damit arbeite, desto weniger gefällt mir das. Z.B. wegen solcher Erlebnisse, die man dann durch mühseliges Error-Handling ausfindig macht.
    Andere Skriptsprachen verwenden zwar auch Variant-Typen, aber da meckert der Interpreter wenigstens sofort, wenn trotzdem eine Umwandlung erforderlich ist.