关键是我的绘制比较苛刻,如: 标题(Item.Caption) 日期 借阅人
计算机信息管理 2002-05-06 李华平
信息资源管理 2002-09-24 王志军
中国计算机报 2003-04-24 危芳
......
我想把Item.Caption中有关"计算机"的字样标注成蓝色,以示醒目。
我还想把日期中的2002-10-01以前的字样标注成红色,表示此书被借阅人借的时间严重超长。
计算机信息管理 2002-05-06 李华平
信息资源管理 2002-09-24 王志军
中国计算机报 2003-04-24 危芳
......
我想把Item.Caption中有关"计算机"的字样标注成蓝色,以示醒目。
我还想把日期中的2002-10-01以前的字样标注成红色,表示此书被借阅人借的时间严重超长。
OnAdvancedCustomDraw
OnAdvancedCustomDrawItem
OnAdvancedCustomDrawSubItemOnCustomDraw
OnCustomDrawItem
OnCustomDrawSubItemOnDrawItem
begin
with ListView1.Items.Add do
begin
Caption := '计算机信息管理';
SubItems.Add('2002-05-06');
SubItems.Add('李华平');
end;
with ListView1.Items.Add do
begin
Caption := '信息资源管理';
SubItems.Add('2002-09-24');
SubItems.Add('王志军');
end;
with ListView1.Items.Add do
begin
Caption := '中国计算机报';
SubItems.Add('2003-04-24');
SubItems.Add('危芳');
end;end;procedure TForm1.ListView1AdvancedCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage;
var DefaultDraw: Boolean);
begin
if (Pos('计算', Item.Caption) > 0) and not (cdsSelected in State) then
Sender.Canvas.Font.Color := clBlue;
end;procedure TForm1.ListView1AdvancedCustomDrawSubItem(
Sender: TCustomListView; Item: TListItem; SubItem: Integer;
State: TCustomDrawState; Stage: TCustomDrawStage;
var DefaultDraw: Boolean);
var
dt: TDate;
begin
if SubItem = 1 then
begin
dt := StrToDate(Item.SubItems[SubItem - 1]);
if dt < StrToDate('2002-10-01') then
Sender.Canvas.Font.Color := clRed;
end
end;
canvas.textout(...);