Textfile oder Array in der GUI darstellen und auf Klick reagieren..

  • Hi Leute,
    kann mir jemand erklären, wie ich ein Textfile in die GUI bekomme?
    Wenn ich mir die Hilfe zu GUICtrlCreateListViewItem anschaue, sehe ich schon, wie ich einzelne Einträge in eine Spalte in die Listview bekomme. Aber ich verstehe nicht, wie ich einen ganzes, unter Umständen unterschiedlich langes Textfile in die Listview übernehmen kann..
    Eigentlich habe ich schon ein Array, das ich gebildet habe. Schön wäre es dieses direkt zu nutzen um es in der GUI darzustellen. Aber ich würde auch gerne wissen, wie ich Textfiles in eine Listview kriege. Ich würde mich freuen, wenn mir das einer zeigen und erklären könnte.

    Explizit möchte ich von einem Array, das sowas enthält
    AAAA aaaa
    BBBB bbbb
    CCCC cccc

    AAAA in der Listview anzeigen und wenn es angeklickt wird aaaa in einem Linkaufruf verwenden. Für letzteres habe ich selbst noch keinen Hirnschmalz verwendet. Allerdings kam ich schon beim Lesen des Textfiles nicht weiter.

    Grüße autoiter

    Grüße autoiter

  • du hast also ein Array, das ungefähr so aussieht:

    [autoit]


    $array[1][1] = "AAAA"
    $array[1] [2] = "aaaa"
    $array[2][1] = "BBBB"
    $array[2][2] = "bbbb"
    ...

    [/autoit]


    und willst, dass AAAA, BBBB, usw. in einer ListView dargestellt werden und wenn man einen eintrag anklickt, soll ein link mit aaaa, bbbb, usw. aufgerufen werden

    also, die ListView-Einträge kannst du mit folgendem Code erstellen:

    [autoit]


    Dim $controls[$array[0][0]+1]

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

    For $a = 1 to $array[0][0]
    $controls[$a] = GUICtrlCreateListViewItem($array[$a][1], $listviewid)
    Next

    [/autoit]


    wobei $array[0][0] die anzahl der Einträge enthält
    und $listviewid die ID deines ListView-Controls ist

    wie du auf die klicks reagieren kannst, hängt davon ab, ob du den MessageLoop- oder den OnEvent-Modus verwenden willst

    MFG inventor

    wenn's weitere Fragen gibt -> PN
    wenn da keine Antwort kommt, überdenk deine Frage noch mal

  • Hey danke dir.
    Sorry für die späte Meldung. Um ehrlich zu sein, hatte ich das nicht ganz kapiert, bzw falsch gemacht und meine Liste blieb immer leer. Dann habe ich mir erst einmal Array und Listview Tuts angeschaut. Weil ich nicht jedes Mal nerven wollte und noch genug Hilfe bekommen möchte ;)
    Mein Array kann unterschiedlich groß sein. Daher mache ich das so:

    [autoit]

    For $i = 0 To UBound ($allinfo, 1) - 1
    GUICtrlCreateListViewItem($allinfo[$i][0], $gui_zaplist)
    _GUICtrlListView_AddSubItem($gui_zaplist, $i, $allinfo[$i][1], 1, 1)
    Next

    [/autoit]


    Auf den Klick reagiere ich dann so:

    [autoit]

    If _GUICtrlListView_GetSelectionMark($gui_zaplist) <> -1 Then
    If $listview_click <> _GUICtrlListView_GetSelectionMark($gui_zaplist) Then
    $listview_click = _GUICtrlListView_GetSelectionMark($gui_zaplist)
    InetGet ("http://" & $IP & "test/" & $allinfo [$listview_click][0], "", 1, 1)

    [/autoit]


    Allerdings habe ich das nur abgeschaut und da es sofort funktioniert hat.. Wie man sieht benutze ich nun doch die erste Spalte. Aber jetzt ist mir klar, dass das relativ Wurscht ist, weil ich ja nur $allinfo [$listview_click][1] oder [2] usw. setzen müsste.
    Also nochmal danke!

    Grüße autoiter

  • Hallo zusammen :)

    Jetzt habe ich zu diesem Thema noch eine Frage. Ich nutze das nun genau so, um ein neues Fenster aufzurufen. Wenn ich aus diesem Fenster einfach zurück möchte (@SW_HIDE und dann @SW_SHOW), ist der Eintrag aber noch markiert und das vorher ausgewählte Fenster startet sofort wieder.
    Wie kann man das verhindern?

    Grüße autoiter