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
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