1、问题如上,我用如下方式解决:procedure Tformsetact.DBGridEh1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumnEh;
  State: TGridDrawState);
begin
 //突出显示当前使用的记录  {if adoquery1.FieldByName('current').value=1 then
  begin
  //dbgrideh1.Canvas.Font.Style := [fsBOLD];
  dbgrideh1.Canvas.Font.Color := clred;
  end;
 DbGrideh1.DefaultDrawColumnCell (Rect,DataCol,Column,State);
上面这段代码没动静,但却是我要的.但下面这段代码是可以的.
  if ((State = [gdSelected]) or (State=[gdFocused])) then
    begin
      DbGrideh1.Canvas.Brush.color:=clRed;//当前行以红色显示,其它行使用背景的浅绿色
      DbGrideh1.DefaultDrawColumnCell (Rect,DataCol,Column,State);
    end;end;
2、有没有什么简单方法得到或定位DBGRIDEH的某一行,想得到行号?
谢谢

解决方案 »

  1.   

    procedure TTelOperationForm.dbgBillDrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
      if adsMain.FieldByName('状态').AsString = '等待完成' then
      dbgBill.Canvas.Font.Color := clRed;
      dbgBill.DefaultDrawColumnCell(Rect, 5, Column, State);
    end;
      

  2.   

    1
    楼主
    DbGrideh1.DefaultDrawColumnCell (Rect,DataCol,Column,State);
    位置写的不对.2
    没有办法得到行号,用第三方控件吧
      

  3.   

    procedure TCzInput.DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: integer; Column: TColumn;
      State: TGridDrawState);
    begin
      inherited;
      if czDM.ADOQ_Cz.FieldByName('PiZhongEn').AsInteger<0 then
        DBGrid1.Canvas.font.Color := clRed;
      DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end;