关键是我的绘制比较苛刻,如: 标题(Item.Caption)      日期              借阅人
计算机信息管理          2002-05-06         李华平
信息资源管理            2002-09-24         王志军
中国计算机报            2003-04-24         危芳
......
我想把Item.Caption中有关"计算机"的字样标注成蓝色,以示醒目。
我还想把日期中的2002-10-01以前的字样标注成红色,表示此书被借阅人借的时间严重超长。

解决方案 »

  1.   

    我一直搞不清楚以下几个事件是分别做什么用的??
    OnAdvancedCustomDraw
    OnAdvancedCustomDrawItem
    OnAdvancedCustomDrawSubItemOnCustomDraw
    OnCustomDrawItem
    OnCustomDrawSubItemOnDrawItem
      

  2.   

    procedure TForm1.FormCreate(Sender: TObject);
    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;
      

  3.   

    Canvas.pen.Color := clBlue;然后textout
      

  4.   

    用TMS的东东吧,它可以支持简单的HTML格式。这样你的东西就很容易实现了。
      

  5.   

    TMS的东东是什么?哪里有下?
      

  6.   

    Canvas.pen.color:=clXXX;
    canvas.textout(...);
      

  7.   

    你那样就只能用textout了,开始近来时,我以为你是问把背景色换呢