我用这个事件想在dbgrid的表格下方显示另一个dbgrid。在网上看到了相关代码里面有用rect这个参数的,但是我用的时候第二个dbgrid总是在表格的下方左右跳个不停。就是每一列下面都出现一次。想不明白。请高手指点指点……

解决方案 »

  1.   

    怎么扯到第二个grid了,肯定是你代码有问题
      

  2.   

    rect就是单元格的矩形,TRect,左上角坐标,和右下角坐标,相对dbgrid而言。第二个dbgrid总是在表格的下方左右跳个不停”,是因为你对Draw事件不太了解,Draw一般只要窗体或控件重画,就会触发。你要加一定的判断,在什么时候重画,什么时候不重画,跳动问题就解决了。 
      

  3.   

    example:
    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
     DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
     with TMyDBGrid(Sender) do
     begin
       if DataLink.ActiveRecord=Row-1 then
       begin
         Canvas.Font.Color:=clWhite;
         Canvas.Brush.Color:=$00800040;
       end
       else
       begin
         Canvas.Brush.Color:=Color;
         Canvas.Font.Color:=Font.Color;
       end;
       DefaultDrawColumnCell(Rect,DataCol,Column,State);
     end;
    end;