TListView - Farbige Spalten
-
Hallo
Ja, ich habe die Suchenfunktion benutzt und die FAQ durchsucht...
ich möchte in einem TListView eine bestimmte Spalte farbig machen, bzw. den Hintergrund, so wie z.B. im Windows-Explorer eine Spalte grau markiert wird wenn man sie auswählt.
Wie ich mit TCanvas z.b. den hintergrund einer Zeile bzw. eines Item farbig machen kann weiss ich, aber ich habe keine Ahnung wie ich die Hintergrundfarbe für eine Spalte festlegen kann.
Kann mir jemand helfen ?

-
Hallo
Im OnDrawItem-Event must du zum Beispiel sowas machen
ListView->Canvas->Brush->Color = clRed; ListView->Canvas->FillRect(Rect);Aber Achtung, dazu must du ListView->OwnerDraw auf true setzen und die gesamte Darstellung der Items und SubItems übernehmen.
bis bald
akari
-
danke für die hilfe, aber ich kapiere einfach nicht wie ich nur eine bestimmte spalte farbig mache...
-
Hallo
du must dir selber ein passendes TRect zusammenstellen. Als Basis nimst du das Rect, das du als Parameter des Events bekommst.
Dann gehst du die einzelnen Spalten in ListView->Columns->Items durch, und rechnest dir auf Basis der einzelnen Width-Werte die Left/Right-Begrenzung deiner gewünschten Spalte aus.bis bald
akari
-
void __fastcall TMeinFenster::ListViewCustomDraw( TCustomListView *Sender, const TRect &ARect, bool &DefaultDraw) { if(ColumnToSort!=0) { TListView *Liste=dynamic_cast<TListView *>(Sender); int ColLeft = ARect.Left; for(int i=0;i<ColumnToSort;i++) { ColLeft+=Liste->Columns->Items[i]->Width; } // Calculate bounding rectangle of selected column TRect ColBounds = TRect(ColLeft,ARect.Top,ColLeft+Liste->Columns->Items[ColumnToSort]->Width,ARect.Bottom); // Shade the column // other event handlers overwrite this where there are list // items but this code ensures shading extends to bottom of // list view client rectangle Liste->Canvas->FillRect(ARect); Liste->Canvas->Brush->Color = TColor(0x00EBEBEB); Liste->Canvas->FillRect(ColBounds); Liste->Canvas->Brush->Color=Liste->Color; } DefaultDraw=true; } //--------------------------------------------------------------------------- void __fastcall TMeinFenster::ListViewCustomDrawSubItem( TCustomListView *Sender, TListItem *Item, int SubItem, TCustomDrawState State, bool &DefaultDraw) { TListView *Liste=dynamic_cast<TListView *>(Sender); Liste->Canvas->Brush->Style=bsClear; if(ColumnToSort==SubItem) Liste->Canvas->Brush->Color=TColor(0x00EBEBEB); else Liste->Canvas->Brush->Color=clWindow; DefaultDraw=true; } //---------------------------------------------------------------------------Stand glaube ich auch mal hier im Forum.... zumindest aber ein link zu einem Beitrag in den Google-NG, der dies enthielt...
-
vielen dank

zumindest kapiere ich jetzt mal die theorie
