有一DBGRIDEH,第一列是CHECKBOX,当加了以下代码
procedure Tjgsp_pici_shenhe.DBGridEh1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumnEh;
  State: TGridDrawState);
begin
 if dbgrideh1.Columns[0].CheckboxState=cbchecked then
 begin
  dbgrideh1.Canvas.Brush.Color:=$008080FF;
 end;
dbgrideh1.DefaultDrawDataCell(Rect,column.Field,State);
end;本意是想当选中前面的复选框时,该行变成红色,可是运行的时候,选定行变颜色倒是实现了,可是全部的复选框全部显示成FALSE了,而不是复选框了,怎么办啊?  

解决方案 »

  1.   

    if (ADOQuery1.FieldByName('shifjj').AsBoolean  =true)  then
      begin
          DBGrideh1.Canvas.Font.Color := RGB(0,0,0);
          DBGrideh1.Canvas.Brush.Color := RGB(146,146,146); //?¨ò?±3?°??é?
          DBGrideh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
      end;因改则样写,测试通过.给分
      

  2.   

    楼上的兄弟,
    按你的写法,选中复选框后,颜色是变了,但复选框也显示成TRUE了
      

  3.   


    dbgrideh1.DefaultDrawDataCell(Rect,column.Field,State);
    改成DefaultDrawcolumnCell搞定,
    也谢谢
    sxper(完八一头牛)