各位,
我用dbgrideh控件,现需要解决两个问题:
1。数据源为一个ADOquery,数据动态生成,例如通过几张表联合查询,请问,在显示时我如何让grid能自动调整宽度,而不时根据表结构的宽度来显示,这样很不美观。
2。我实现的按grid标题栏排序功能,但如果查询的记录集字段很多,我右移动到后面的字段,当点击标题栏排序后,grid又回到前面了,我希望grid不刷新。
我的数据是动态查询生成的,我也不知道数据集的每个字段的长度,即使可以设置
以上两个问题我在论坛都查了,没有找到解答,希望各位大侠帮帮我,分不够再加!  

解决方案 »

  1.   


    for i:=0 to DBGrid.Columns.Count-1 do
      with DBGrid.Columns[i] do
      if Width >120 then Width := 120;

    s:string;
    s := Query.Book;
    Sort;
    Query.Book := s;
      

  2.   

    同意2
    1:
    我的方法:
    找出全部(或着当前Grid显示的全部内容)记录字段最长内容,
    然后
    Grid.Columns[i].Width :=Grid.Canvas.TextWidth(‘字段内容’)+5
      

  3.   

    1﹑假設所有字段長度之和為N,dbgrideh的寬度為M。
      字段field1.displaywidth:=field1.displaywidth/N*M;
          field2.displaywidth:=field.displaywidth/N*M
    ....
    2﹑同意樓上
      

  4.   

    1、循环提取该列字段最大长度,重新修改DBGRID列宽度
    2、这是不可能实现的,除非你动态改变各个字段的查询位置