在用DBGrid显示记录时,如何通过第一个字段“状态”的值(有两种值,未到和已到),来显示这条记录中某个对应字段的颜色??
  就是如果是已到则本记录的一个字段颜色为红色,如果未到,则另一个字段为红色,例如:
   状态     到达时间   离开时间   
   已到      18:00      20:00
   未到      22:00      24:00
这种情况是第一条记录的20:00为红色,第二条记录的22:00为红色。请问高手如何才能实现呢???

解决方案 »

  1.   

    procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
      Field: TField; State: TGridDrawState);
    begin
       if Table1.Fieldbyname(′状态′).value='未到'
       then
       DBGrid1.Columns[0].Color:=ClRed
       else
       DBGrid1.Columns[0].Color:=ClBlue;
     DBGrid1.Columns[0]是你要变颜色的那个列,不过有点疑问
    已到则本记录的一个字段颜色为红色,如果未到,则另一个字段为红色,
    都是红色干吗啊:)
      

  2.   

    在DBGrid的DrawColumnCell中
    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
      if Query1.FieldByName('状态').AsString='未到'then
        if (UpperCase(Column.Fieldname)='到达时间') then    
           DBGrid_Plan.canvas.Font.color:=clred 
      else
        if UpperCase(Column.Fieldname)='离开时间' then
           DBGrid_Plan.Canvas.Font.Color:=clred;
      DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
    end;