我有一个dbgrid连接的数据源只有几条数据.这样dbgrid下面的空间就是一片空白,我想将网格线充满整个DBGRID,没有数据的地方也画上网格线.不知道这样能不能实现,请高手帮帮忙,谢谢!!!

解决方案 »

  1.   

    在Align中选择alClient应该就可以了
      

  2.   

    我的意思是将没有记录的空间都补上网格线,实现的效果如dbgrid可以显示10条记录,而query中只有3条记录,则还有7条空记录在后面.使dbgrid充满网格线
      

  3.   

    建议使用TMS控件DBAdvGrid来显示,连了数据库还可以设置RowCount
      

  4.   

    我想通过重画DBGRID来实现,这样难吗?
      

  5.   

    不难,继承DBGRID再自己写过。具体代码就看DBGRID就可以做到了...
      

  6.   

    可以把DBGRID重画,应该不难。
    重画的事件是:onDrawColumnCell
      

  7.   

    需要重载DBGrid的方法Paint,在Vcl\Source下有源代码可以参考一下.
      

  8.   

    如果想用DBGRID,那不能做到楼主要求的效果。
    如果要楼主要求的效果,可以用STRINGGRID,但数据处理的代码要自己手动写。
    如果要两全其美,那用EXCEL吧。
      

  9.   

    我在onDrawColumnCell里用
    Tstringgrid(dbgrid1).rowcount:=10000 可以把网格补上.不过增加记录时就出错
      

  10.   

    另一种办法是写一个继承自TDBGrid的简单表格,重载Paint方法.
      

  11.   

    告诉你一个绝对有用的方法:
    使用ehlib组件,设计一个合计字段,然后再隐藏该字段即可实现你所说的功能
      

  12.   

    uses Math; //use Max();procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
      TStringGrid(Sender).RowCount := Max(TStringGrid(Sender).RowCount,
        TStringGrid(Sender).Height div TStringGrid(Sender).DefaultRowHeight - 2);
    end;