Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Font-settings bei TListView.Items ändern?


Mike_C - Fr 24.09.04 17:51
Titel: Font-settings bei TListView.Items ändern?
Hi

kann iman irgendwie die Font-settings von TListView.Items verändern? Also jedem Item eine andere Font geben? wenn ja wie?

Gruß Mike_C


GSE - Fr 24.09.04 17:53

selber zeichnen (Forumsuche)

mfg
GSE


Mike_C - Fr 24.09.04 18:02

tjy, die forumsuche hilft mir da leider nicht weiter. kann mir bitte jemand einen tipp geben, wie ich das selberzeichenen anstelle?


sourcehunter - Fr 24.09.04 20:23

Style auf lbOwnerDrawirgendwas stellen und im OnDrawItem-Ereignis Zeile selber malen.


Mike_C - Sa 25.09.04 13:34

Ok, das funktioniert teilweise:

also was ich mit meinem LitView vorhabe ist folgendes: ich möchte einen TaskManager schreiben, dem man eine List von Aufgaben geben kann, die bis zu einem gewissen Datum erledigt werden sollen. Also quasi ein elektronisches Aufgabenheft, um meine Zeitplanung für die Uni in den Griff zu bekommen. Jetzt sollen die Aufgaben entsprechend einiger Kriterien verschieden dargestellt werden, z.B. an hand des Datums soll entschieden werden, in welcher Farbe der Eintrag im Listview dargestellt wird. Wenn noch nenügend Zeit bleibt die Aufgabe zu erledigen, soll sie in grün geschriebnen werden, wenn die Zeit knapp wird in geld un wenn man vergessen hat die aufgabe zu erledigen, soll das in rot angezeigt werden.

mit den beiden Events CustomDrawItem und CustomDrawSubItem habe ich das ganze versucht zu realisieren, was bei CustomDrawItem auch funktioniert. nur werden die SubItems nicht angezeigt, wenn ich folgenden Code verwende


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
procedure TFormMain.lvAufgabenCustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  var DefaultDraw: Boolean);
var r, r2: TRect;
    m_Date: TDateTime;
begin
   DefaultDraw := False;

    r := Item.DisplayRect(drBounds);
    r2.Top := r.Top;
    r2.Left := r.Left + (SubItem+1)*Sender.Column[SubItem].Width;
    r2.Bottom := r.Bottom;
    r2.Right := r2.Left + Sender.Column[SubItem].Width;
    Sender.Canvas.Brush.Color := clSilver;
    Sender.Canvas.FillRect(r2);

    m_Date := StrToDate (Item.SubItems[3]);
    if m_Date < Date then begin
       Sender.Canvas.Font.Color := clRed;
       Sender.Canvas.TextOut(r2.Left,r2.Top, Item.SubItems[SubItem]);
    end else
    if m_Date = Date then begin
       Sender.Canvas.Font.Color := clYellow;
       Sender.Canvas.TextOut(r2.Left,r2.Top, Item.SubItems[SubItem]);
    end else
    if m_Date > Date then begin
       Sender.Canvas.Font.Color := clGreen;
       Sender.Canvas.TextOut(r2.Left,r2.Top, Item.SubItems[SubItem]);
    end;
    
end;


kann mir jemand sagen warum?

Gruß MikeC