Listview mit Thumbs

  • Hallo,


    ich möchte eine Thumbsübersicht anzeigen und daraus einen bestimmten Thumb auswählen.


    Frank Abbing's Beispiel Gezeichnete_Bitmap_einbauen_2.prf wäre für die Anzeige sehr geeignet.


    Leider kann ich einen Klick auf ein Bild nicht auswerten.


    GetControlParas(B#) schien mir sehr geeignet weil ich dabei die Spalte + Zeile auslesen könnte. Leider klappt es nicht. GetControlParas wird nicht ausgelöst.


    Mit @GetFocus(listview&) und danach @GetCurSel(listview&) wird statt der richtigen Zeile immer -1 zurückgemeldet.


    Die Mausposition (mit @GetFocus(listview&) nützt mir wenig, weil ich im Listview auch blättern kann - ich weiß dann nicht welche Zeile als oberste Zeile angezeigt wird.
    Könnte ich vielleicht statt der Thumbs Bitmap-Buttons einsetzen???


    Gibt es für mein Problem eine Lösung? (ich verwende Windows 7).



    Vielen Dank.


    Gerhard.

  • Hallo Gerhard,
    vielleicht hilft dir folgendes weiter:

    Hatte ich irgendwann angefangen und nicht beendet. Das Prinzip müsste durchkomen.


    Gruß Thomas

    Gruß Thomas

  • Haallo Gerhard,


    Du könntest auch eine Listbox dafür benutzen, die können auch Bilder anzeigen.


    Gruss
    Andreas


    ______________________
    http://www.ampsoft.eu


    Profan 3.3 - XProfanX2
    Windows 95,98,ME,2000,XP
    Vista - Windows 7 32 / 64 Bit


    ASUS X93S - Intel Core I7 - NVIDIA GForce GT540M - 8GB Arbeitsspeicher

  • Funktionieren die in der Listview.dll eingebauten Usermessages denn nicht, Gerhard?


    ; Usermessages: Messagenummer = Beschreibung = (uwParam, ulParam)
    ; -------------
    ; $1400 = Tastendruck im Listview ermitteln = (LvHandle, Tastencode)
    ; $1401 = Gedrückten Spaltenbutton (linke Maustaste) melden = (LvHandle, Spalte)
    ; $1402 = Anwender will gerade Spaltenbreite verändern = (LvHandle, Spalte)
    ; $1403 = Anwender hat Spaltenbreite verändert = (LvHandle, Spalte)
    ; $1404 = Gedrückten Spaltenbutton (rechte Maustaste) melden = (LvHandle, Spalte)
    ; $1405 = Linksklick im Listview ermitteln = (Spalte, Zeile) + GetVar(7) liefert (LvHandle)
    ; $1406 = Rechtsklick im Listview ermitteln = (Spalte, Zeile) + GetVar(7) liefert (LvHandle)
    ; $1407 = Doppel-Linksklick im Listview ermitteln = (Spalte, Zeile) + GetVar(7) liefert (LvHandle)
    ; $1408 = Doppel-Rechtsklick im Listview ermitteln = (Spalte, Zeile) + GetVar(7) liefert (LvHandle)


    Du kannst solches Messages jederzeit als UserMessages deklarieren, sodass sie WaitInput durchbrechen.

    Gruß, Frank

  • Hier hast du von mir auch noch was ;)

  • Sehr schön, Horst. :)


    Aber ob du es nochmal lernst, Quellcodes nicht zu zitieren [ quote][ /quote], sondern mit Codetags [ code][ /code] zu versehen? Da gehen doch die Einrückungen alle flöten... :lol:

    Gruß, Frank

  • Zitat von Frabbing;848374

    Sehr schön, Horst. :)


    Aber ob du es nochmal lernst, Quellcodes nicht zu zitieren [ quote][ /quote], sondern mit Codetags [ code][ /code] zu versehen? Da gehen doch die Einrückungen alle flöten... :lol:


    Jetzt wo du es sagst - ich habe den Button [#] immer übersehen ! :oops:
    Kannst du mir noch mal verzeihen :?:

  • Ich möchte, genau wie in Frank's Beispiel Gezeichnete_Bitmap_einbauen_2.prf, eine Übersicht mit mehreren Zeilen und mehreren Bildern pro Seite anzeigen.


    Die Information bei Klick auf ein Bild bekomme ich zwar immer in der ersten Spalte richtig (welche Zeile und welche Spalte). Klicke ich in irgendeiner andderen als der ersten Spalte (2., 3. etc.) so wird als Zeile immer -1 zurückgemeldet.
    Ich vermute dass das mit den Bildern nicht möglich ist. Bei Texten funktioniert es sehr wohl.


    So werde ich bei meiner alten Version bleiben bei der ich, statt ListView oder Listbox, ein oder mehrere Dialogfenster erstelle und die Bilder mit Bildbuttons einfüge.
    Das funktioniert sehr gut. Allerdings kann ich dabei nicht scrollen sondern nur von einem zum nächsten/vorigen Dialogfenster blättern (siehe Bild).


    Jedenfalls vielen Dank für Eure Lösungen.:smile:


    Gerhard.
    [Blockierte Grafik: http://s1.postimage.org/1c6ncdz44/Bild1.jpg]

  • Gib nicht so schnell auf, Gerhard. Teste doch mal diesen Abfrage-Code...


    ...mit diese Dll-Version:

    Gruß, Frank

  • Horst Deine Version ist schon ok, aber ich wollte eine Übersicht anzeigen. Auch wenn ich die Bilder größer anzeige muss ich viel scrollen.


    Frank. Genauso habe ich die Abfrage ja gemacht. Aber erst mit der aktuellen ListView-Version funktioniert es richtig. Ich bin froh, dass ich nicht aufgeben muss.
    Vielen Dank.


    Gerhard.

  • Bitteschön. :)


    Es lag daran, dass die Notify-Message NM_CLICK die Item-Informationen nur in der ersten Spalte ermittelt, wenn Icons benutzt werden:

    The iItem member of lParam is only valid if the icon
    or first-column label has been clicked.


    War mir auch neu. Hab es nun anders gelöst. :)

    Gruß, Frank

  • @ Frank, ich hatte das obrige Beispiel umgestellt (Spaltenbreite) und nun verschwindet bei mir (XP) beim Klick das Icon. Kann man das beheben?


    heathcliff-online, du könntest ja auch Franks Scroll-Area einsetzen. Ein kleines unformatiertes Beispiel:


    Gruß Thomas

    Gruß Thomas

  • Dux: Unter Windows 7 verschwindet da nichts. Ich seh allerdings nicht, was das mit Listviews oder der Listview.dll zu tun hat, da du eine ganz andere Technik verwendest. ;)


    Mögliche Ursache: Du erstelltst Controls in einer Schleife, ohne die Handle freizugeben:


    pic1&=@Create("hSizedPic", -1, Pfad$+"\"+@ListBoxItem$(&loop-1), 130, 100, 1)
    Create("Bitmap",b.obj&[&loop], pic1&,0, 0)


    Bei vielen Programmstarts oder auch Ordnern mit vielen Bilder stösst du sicherlich damit mal an ein Limit. Irgendwann sind die Handles ja mal aufgebrauchst...
    Boote mal komplett neu und gib dann die Handle in deinem Programm immer wieder frei. Sollte helfen.


    P.S.: In deinem oberen Quellcode verschwindest übrigens auch nichts bei mir. :)

    Gruß, Frank

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!