这个功能要实现,好象比较复杂。
这更当前系统的分辨率有关。还跟字体有关。
我的想法,简化一些,只用标准字体,如宋体。
然后在一个标准的平台上,如1024*768上获得现在字段名的宽度,
然后大概得出一条在各平台上的计算公式,即由各个平台的分辨率来计算
所需的宽度。
然后在dbgrid的创建事件种加入获取系统的分辨率,和动态计算宽度。
这一系列实现好象比较烦,我也没试过,只是猜想。不知可否

解决方案 »

  1.   

    Question: How can I adjust the each column's width of DBGRID by the length of each field's name?  Date: Mon Jun 11 09:11:42 PDT 2001    
    From: new_fan
    Status: Waiting for Answer  Points: 60
     
    I want to adjust the column width of the DBGRID, some access tables binding to it, I want the Colwidth 
    fit to the length of the field's name, How can i do?    
      

  2.   

    很简单,对每个字段设置一个宽度值,再根据这个宽度值调整dbgrid各字段的宽度就行了。
      

  3.   

    中文字是等宽的,所以相对容易一些。简单的办法是,手工得到不同分辨率下每个汉字的宽度(你的程序是用同样的字体吧?),用缇来计算,根据字符长度计算,最后设置宽度。如果用API,太麻烦了。
      

  4.   

    你用DatGrid控件如何?这个控件有一个DefColWidth属性,设置为0,就会根据字段的大小自动改变大小。
      

  5.   

    我在FORM_LOAD中使用代码对每一列宽进行赋值,但运行后各列宽度仍是一样,WHY?
      Dim db As Database
        Dim dcConnect As Connection
        Dim rs As Recordset
        If Right(App.Path, 1) <> "\" Then
            strDBFileName = App.Path & "\" & "mlc.mdb"
            Else
            strDBFileName = App.Path & "mlc.mdb"
        End If
                   Set db = OpenDatabase(strDBFileName)
                   'Set rs = db.OpenRecordset(strTableName)
                   Set rs = db.OpenRecordset(RCName)
                   
                   For Y = 1 To rs.Fields.Count
                       Select Case Len(rs.Fields(Y - 1).Name)
                              Case Len(rs.Fields(Y - 1).Name) <= 2
                                   DBGrid1.Columns(Y - 1).Width = Len(rs.Fields(Y - 1).Name) * 400
                              Case Len(rs.Fields(Y - 1).Name) > 2 And Len(rs.Fields(Y - 1).Name) <= 5
                                   DBGrid1.Columns(Y - 1).Width = Len(rs.Fields(Y - 1).Name) * 205
                              Case Len(rs.Fields(Y - 1).Name) > 5
                                   DBGrid1.Columns(Y - 1).Width = Len(rs.Fields(Y - 1).Name) * 103
                        End Select
                   Next Y
                   
                   db.Close
      

  6.   

    用TRUE DBGRID7.0的Autosize可以很好地实现!