根据ACCESS窗体控件文字多少动态调整控件字体大小
我们在使用EXCELL时,能够使用“设置单元格格式”|“对齐”|“文本控制”,对文本框在预定义字体大小下不能显示所有文字时,有“缩小字体填充”选项,缩小字体后,文字就会全部显示。ACCESS 窗体能否实现动态“缩小字体以显示所有文字”功能呢?
网上有介绍ACCESS报表实现“缩小字体以显示所有文字”的功能:是通过主体格式化事件实现的。代码如下:
Option Compare Database
Option Explicit
F As Integer '字体大小
Private Sub Report_Load()
F = Me.Address.FontSize '在启动时先将需要改变的控件的正常字体保存起来
’这里假定Address是我们要动态调整字体大小的控件
End Sub
’然后在在报表主体格式化事件中对控件进行格式化
Private Sub 主体_Format(Cancel As Integer, FormatCount As Integer)
Dim cW As Double
Me.Address.FontSize = F '每次主体格式化时,先将字体设为正常大小
If Me.Address.Width < Me.TextWidth(Me.Address) Then
cW = (Me.Address.Width - 100) / Me.TextWidth(Me.Address)
Me.Address.FontSize = Int(Me.Address.FontSize * cW)
End If
End Sub
然而,上述代码并不能在窗体中实现。主要因为:一是窗体没有Format事件,二是窗体没有TextWidth方法。因此不能计算控件所有文字的总长度。
其实在窗体中有一个各节有“绘制(PAINT)”事件可以起到同样的作用。在窗体中,窗体节的控件是在“绘制”事件中格式化的。可以按照以下思路,根据显示控件文字多少,动态调整控件(如文本框)