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