TListView mit Gradientverlauf



  • Hallo,

    hat vielleicht irgendjemand schonmal ein ListView mit einem Gradientverlauf von (zum Beispiel) rot nach grün gemacht?

    wichtig wäre mir dabei, dass wenn man es scrollt, das der gradient heile bleibt, auch wenn man nachdem man runterscrollt wieder hochscrollt. ich bekomme das leider nicht hin. radient in einer farbe schon, aber nicht bei zwei verschiedenen farben und das mit dem scrollen ist so ziemlich mein größtes problem.

    wäre über eine hilfe sehr dankbar.

    gruß gerd



  • Ich hab auf http://www.codeproject.com/ mal irgendwo nen paar Tipps gefunden, wie man nen ListView per WinApi abändert. Da stand auch, wie man ein Bitmap als Hintergrund verwendet. Wenn dein Verlauf statisch ist, würde ich den in einem Zeichenprogramm deiner Wahl erstellen und als Hintergrund einfügen...
    Ich habs selber aber noch nie versucht 😉

    mfg
    xXx



  • *push*

    hat vielleicht noch jemand eine idee, über die winapi ist es irgendwie zu schleppend, oder eher gesagt, zu komplex, dass sollte auch einfacher klappen

    gruß gerd



  • weniger komplex als über die API gehts nicht, da alle anderen die API auch nur kapseln. Der ListView der VCL ist auch nur eine Kapselung des Standard-Listviews von Windows. Wenn du es schnell haben willst, gehts nur darüber, oder eine komplette Neuerfindung des ListViews.
    Was genau ist denn schleppend, bzw. zu komplex?

    mfg
    xXx



  • api allgemein.

    ich habe es ja schon so gelöst bekommen, gibt schon einen thread, wo ich es gezeigt habe, wie ich es gelöst habe, jedoch ist da ein klitzekleines problem beim scrollen:

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-115882-and-highlight-is-listview%2A.html

    suche dort nach gerd01

    vielleicht kannste mir ja helfen dieses problem was dort beschrieben ist zu lösen? wäre super, weil dann hätte ich das, was ich haben wollte. die farben sind nicht das prob, sondern erstmal das scrolling des listviews.

    gruß gerd



  • Führe ein Subclassing mit deinem ListView durch und zeichne im Ereignis OnDrawItem deine ListView-Elemente und im Ereignis OnCustomDraw deinen Gradienten.

    Subclassing bedeutet, dass du die Standard-WindowProc des ListViews mit einer eigenen austauschst um so auf diverse Windows-Botschaften reagieren zu können. Wenn eine Botschaft ankommt die wichtig ist, d.h. die die Darstellung des ListViews betrifft (z.B. WM_HSCROLL oder WM_VSCROLL), dann erzwinge ein Neuzeichnen deines Listviews (Invalidate).


Anmelden zum Antworten