我用:
  dbgrid1.column[0].color:=colorcombobox1.color
发现根本没有反应,对column的颜色控制只有在设置期才行。这是什么原因?在d6中。而且,发现column.color实际上是=dbgrid1.color的,例如动态给dbgrid设置颜色后,column.color=dbgrid1.color了,而且下次再设置dbgrid1.color时,却不会再.....
总之,弄了半天,不知如何在程序中动态控制dbgrid1.column[0].color的颜色。请大家指教呀!

解决方案 »

  1.   

    这个和在设置期才行是没有关系,这个事件是只要DBGrid一显示就会触发的。procedure TFrom1.DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin 
      if Column[0].AsString ='adf' then 
      begin
         Canvas.Font.Color :=clBlack;
         Canvas.Brush.Color :=colorcombobox1.color;
      end
      else
      begin
         Canvas.Font.Color :=clBlack;
         Canvas.Brush.Color :=clinfobk;
      end;
    end;
    这样应该没有问题
      

  2.   

    谢谢!这种方法我也知道。但:
        我是想做个编辑器对dbgrid进行属性设置用,并不到具体的dbgrid的事件中写代码。在另一窗口中对它进行设置。
      

  3.   

    dbgrid1.column[0].color:=colorbox1.selected;
    这样就行了,color属性是指colorbox1它自己的颜色。