ListView Markierung mit den Pfeiltasten bewegen

  • Hat jemand ein Idee, wie ich den Code erweitern kann, sodass die Selektion mit den Pfeiltasten nach oben / unten verschoben werden kann?

    Wichtig ist, dass nur die ersten zwei Zellen markiert bleiben.

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Sehr im unreinen.... den Mauszeiger via Tastatur (Pfeiltasten) eine neue Position zuweisen?

    LG

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Wie wäre es mit

    1. In den jeweiligen Funktionen für die Pfeiltaste die aktuelle Markierung auslesen und entsprechend der Listview (+/-1) neu zuweisen
    2. Erzwingen der oberen beiden Zeilen, diese zu markieren

    Wobei ich beim Testen mit deinem Code, nie die ID des angeklickten ListView Items bekomme, sondern immer 0 (keins ausgewählt).

    Außerdem musst du den Style vom LV ändern, damit du mehrere Zeilen auswählen kannst. Default ist meine ich, das du nur 1 Zeile zur Zeit auswählen kannst.

    Edit:

    Deine Zeile 74 verhindert zusätzlich eine Multiauswahl.

    Einmal editiert, zuletzt von Moombas (8. November 2023 um 11:07)

  • Moin UEZ,

    vielleicht so?

  • UEZ : Habe mich auch verlesen XD Du hast geschrieben "Wichtig ist, dass nur die ersten zwei Zellen markiert bleiben." ... anstatt Zellen habe ich "Zeilen" gelesen... wer lesen kann ist zweifelsohne im Vorteil

    Dann hätte ich auch zwischendurch eine Lösung präsentieren können -.- Menno^^

  • Moombas kein Problem.

    Was macht eigentlich die Zeile?

    Code
    DllStructSetData($tNMLVCUSTOMDRAW, "uItemState", BitAND($uItemState, BitNOT(0x11)))

    Die 3. Spalte beinhaltet die Farbe, die in der Spalte 2 steht. Mit der Lösung oben wird sie überschrieben (gut, hatte ich nicht erwähnt).

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Gibt es eine Möglichkeit, dass die Farben in der 3 Spalte immer angezeigt werden, nicht nur bei der Selektion?

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Gibt es eine Möglichkeit, dass die Farben in der 3 Spalte immer angezeigt werden, nicht nur bei der Selektion?

    So könnte es funktionieren:

    Was macht eigentlich die Zeile?

    Das hast Du anscheinend selbst herausgefunden. (Sie löscht die States $CDIS_SELECTED und $CDIS_FOCUS).

  • Moin UEZ,

    ich habe mir das nochmal durch den Kopf gehen lassen. Es geht in diesem Fall (soweit ich erkennen kann) nur darum, den Hintergrund der 3. Spalte mit einer selbstgewählten Farbe zu füllen, und das auch dann, wenn die Zeile selektiert ist. Wenn die 3. Spalte wie hier auch die letzte ist, reicht es deshalb wenn man sich ausschließlich mit ihr beschäftigt und alles andere dem ListView überlässt. Das Skript könnte dann so aussehen:

    Mir gefällt das besser.

  • Velted eigentlich geht es nicht um Autoit, sondern um ein Freebasic Tool, woran ich wieder mal arbeite. Es ist sehr interessant, wie man die WinAPI Funktionen ohne UDFs nutzt.

    Dadurch kann / muss man mehr in die Details gehen und lernt dabei mehr, als nur die UDFs zu nutzen.

    Falls interesse besteht: Color Constants v0.80 build 2023-11-08.zip

    Manchmal suche ich nach bestimmten Farben und durch das Tool ist es einfacher, die Farbe zu suchen.

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • UEZ,

    ok. Ich denke, dass das mit AutoIt auch möglich ist. Es ist ja niemand gezwungen, die UDFs zu benutzen. Sie liefern viele Informationen darüber, wie man die Windows-API-Funktionen nutzt. Mit WinUser.h und CommCtrl.h kommt man aber auch schon recht weit.

    Viel Spaß weiterhin!

  • Natürlich ist das mit Autoit möglich, sogar viel einfacher, aber man will ja sein Horizont erweitern...

    Danke

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯