Listview mit Icon - Item untereinander anzeigen

  • Problem:
    Ich erstelle ein Listview (ohne Header) und ordne den Item Icon zu. Aber die Einträge werden nebeneinander angeordnet und erst wenn die Listviewbreite erreicht ist, geht es in die nächste Zeile.
    Ich habe schon verschiedene Stylekombis ausprobiert, aber ich bekomme es nicht hin, jeden Eintrag in einer Zeile anzuzeigen.

    Wo liegt mein Fehler?

    Hier das Testskript

  • Hallo!

    Keine Lösung aber vielleicht ein Hinweis: Wenn Du den Style "NoHeader" einfernst, werden Deine Icons untereinander angezeigt....
    Ist schon klar, das Du das nicht so willst, aber vielleicht ist es eine Spur....

    lg
    Racer

  • Hi BugFix 👋 ,

    der Trick ist, einfach nicht _GUICtrlListView_Create zu benutzen 😅 .

    Konkret ersetze
    _GUICtrlListView_Create($hGui, '', 5, 5, $w_Gui-10, $h_Gui-10, BitOR($LVS_NOCOLUMNHEADER,$LVS_SMALLICON))

    mit GUICtrlCreateListView('', 5, 5, $w_Gui-10, $h_Gui-10, BitOR($LVS_NOCOLUMNHEADER,$LVS_SMALLICON))
    und es funktioniert.

    Frage mich nicht warum, funktioniert einfach.
    Ich habe mich lediglich an die Hilfe gehalten, denn auch bei _GUICtrlListView_SetColumnWidth wird mit GUICtrlCreateListView() zum erstellen des ListViews gearbeitet.

    Viele Grüße
    Sven

  • Hätte ich auch so gemacht. Sowas vermutet man ja wirklich nicht.
    Naja, freut mich das es bissl hilft. Viel Erfolg weiterhin 🤝 .

    Viele Grüße
    Sven

  • Viel Erfolg weiterhin

    Jetzt tut sich ein anderes Problem auf, kann ich leider nicht im Testskript nachstellen.

    In meiner Anwendung wird das Fenster im Hintergrund befüllt, die Größe angepasst und per Hotkey eingeblendet.

    Mit Listview-UDF erstelltem Listview wird das Fenster angezeigt, mit nativ erstelltem Listview nicht. :rofl: Ich kann nur noch nicht nachvollziehen, was da so reingrätscht.


    EDIT:

    Gefunden - Man darf den Style nicht beim Erstellen setzen, sondern hinterher mit GUICtrlSetStyle.

  • Hmm mysteriös 🤔 😅 .

    Ich glaube ich würde mit GUISetState() und den ListView Items (den Daten) spielen. Also ob sich das Verhalten irgendwie ändern, wenn die Daten früher oder später anzeigst, wenn du die Gui früher oder später anzeigst oder wenn du sie (zum Test) ggf. nachmal nachlädtst oder so.

    Ansonsten teile gern mal so viel Code deiner Anwendung wie du kannst/darfst/magst, damit wir testen/probieren können 🤝 .
    Nochmal ansonsten: viel Erfolg.

    Viele Grüße
    Sven

  • ich denke auch, dass ist ein Problem des Control Drawings.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ausführbares Script ("as is"), dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Man möge mir verzeihen, wenn ich nicht perfekten und ideal lesbaren Code zur Verfügung stelle.
    Ich möchte Hilfe zur Selbsthilfe leisten und denke dass eine gewisse Transferleistung erwartet werden kann.

  • Moin,

    das ursprüngliche Problem entsteht durch die verwendeten Stile.

    $LVS_ICON0x0000This style specifies icon view.
    $LVS_REPORT0x0001This style specifies report view.
    $LVS_SMALLICON0x0002This style specifies small icon view.
    $LVS_LIST0x0003

    Mit der UDF-Funktion wird der Stil $LVS_SMALLICON (2) direkt übernommen.

    Die GUICtrl-Funktion 'erzwingt' zusätzlich den Stil $LVS_REPORT (1). Beide verschmelzen dann zu $LVS_LIST (3), und das ist anscheinend genau der Stil, den Du haben willst.