我用了一个DbgridEH控件,用Adoquery Select,DbgridEH的每列宽度变成了我数据库里面设置的宽度了,但我实际数据的宽度并不大,我怎样让每个列宽自动等于列里面的有效数据宽度,可把代码贴出来.谢谢

解决方案 »

  1.   

    >>每个列宽自动等于列里面的有效数据宽度
    不懂, 只能幫忙UP
      

  2.   

    数据库里
    ID   VARCHAR   10
    NAME VARCHAR   20
    ADDR VARCHAR   50实际数据
    ID   NAME    ADDR
    01   张小三  广州天河区51号
    02   李四    北京中关村三街69号一单元  如果是默认的就是
    field[0].displaywidth=10
    field[1].displaywidth=20
    field[2].displaywidth=50
    看起来很不美观我想让
    field[0].displaywidth=2
    field[1].displaywidth=6
    field[2].displaywidth=24我不知道怎么写,帮帮我吧
      

  3.   

    要实现动态的设置宽度可能比较麻烦;也没有那个必要;你可以双击dbgrideh控件;在弹出的小窗体里加入你要显示的字段;
    然后点击对每个添加的字段依次设置;fieldname = ?           //连接字段
    title->caption = ?     //字段的显示名字;
    width = ?               //设置你自己的宽度;其中的width如果没有设置的话;其默认值是64;如果不更改这个默认值;就会出现你说的那种情况;显示宽度变成你在定义时字段的宽度;
      

  4.   

    有时候我在数据库里面定义的宽度是比较大的,一般都用不了
    我想在每次打开窗体,SELECT以后,每列宽度就确定下来.
      

  5.   

    如果你用Oracle,可以用VSize函数取得字段的实际长度,然后在程序运行时动态设置列宽,这完全是你想要的效果;
    或者,有一些变通的办法(效果要打折扣):
    1 设计时设置合适的列宽;
    2 在数据集的GetData事件中判断字段的实际长度,用代码设置列宽;
    3 试试DBGridEH的OnOwnerDraw事件
      

  6.   

    双击DBGridEH
    ADD ALL FIELDS
    选种要调整的字段
    再修改Width值
      

  7.   

    建议改用其他DBGRID控件,我有几个好的,需要给个邮箱
      

  8.   

    双击控件,添加几个字段,再单击字段,改它的width值就可以了