Announcement

Collapse
No announcement yet.

ListVieweinträge farbig

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • ListVieweinträge farbig

    Hallo,

    ich möchte meine ListView-Einträge farbig machen. habe mich auch schon informiert. Ich verwende die Methode OnCostumDrawItem:

    <PRE>
    void __fastcall TtfRemasterViewer::tlvRemasterInfoCustomDrawItem(
    TCustomListView *Sender, TListItem *Item, TCustomDrawState State,
    bool &DefaultDraw, int iColor)
    {
    TCanvas Backgroundcolor;

    switch( Color )
    {
    case 0:
    Backgroundcolor = clGreen;
    break;
    case 1:
    Backgroundcolor = clSkyBlue;
    break;
    case 2:
    Backgroundcolor = clYellow;
    break;
    case 3:
    Backgroundcolor = clRed;
    break;
    }
    Sender->Canvas->Brush->Color = Backgroundcolor;
    }
    </PRE>

    der Methoden-Aufruf sieht folgendermassen aus:
    <PRE>
    tlvRemasterInfoCustomDrawItem(tlvRemasterInfo, tlvRemasterInfo->Items->Item[i],cdsIndeterminate, false, iColor);
    </PRE>

    Leider bekomme ich beim Erstellen der Applikation folgende Fehler:

    [C++ Fehler] MainForm.cpp(198): E2034 Konvertierung von 'ComCtrls__9' nach 'TCustomDrawState' nicht möglich

    [C++ Fehler] MainForm.cpp(198): E2342 Keine Übereinstimmung des Typs beim Parameter 'State' ('TCustomDrawState' erwartet, 'ComCtrls__9' erhalten)

    [C++ Warnung] MainForm.cpp(198): W8030 Temporäre Größe für Parameter 'DefaultDraw' in Aufruf von '_fastcall TtfRemasterViewer::tlvRemasterInfoCustomDrawItem(T CustomListView *,TListItem *,TCustomDrawState,bool &,int)' verwendet

  • #2
    Hallo Jörg,

    Häh?? Ich fürchte fast Du versuchst eine der __published Funktionen zu überschreiben.

    Das Überschreiben einer __published-Funktion geht nicht. Du wirst Dir die Mühe machen müssen, eine eigene Komponente abzuleiten, wenn es unumgänglich ist, die Farbe als Parameter in einem <I>neuen</I> Ereignis zu übergeben.

    Einfacher würde es gehen, wenn Du die Farbe nicht als Parameter übergibst, sondern innerhalt der OnCustomDrawItem ermittelst. Kommt drauf an, wie die Farbinformation ermittelt wird. Man kann ListViews auch Objekte übergeben. So ein Objekt könnte die Farbinformation erhalten...

    Grüße Joche

    Comment


    • #3
      Hallo nochmal,

      >TCanvas Backgroundcolor;

      muß natürlich heißen

      >TColor Backgroundcolor;

      Joche

      Comment

      Working...
      X