Office中国论坛/Access中国论坛

标题: 根据文本框大小来自动选择字体大小如何实现 [打印本页]

作者: ljwily    时间: 2011-11-12 18:05
标题: 根据文本框大小来自动选择字体大小如何实现
在做报表时想内容根据文本框大小来自动选择字体大小。谁知道能告诉下吗?
作者: todaynew    时间: 2011-11-12 19:28
http://www.office-cn.net/forum.p ... =%D7%D4%CA%CA%D3%A6
作者: ljwily    时间: 2011-11-12 19:46
有点深奥没看懂,能解释下吗?
Function ctlFontSize(ctl As Control)
Dim w As Single
Dim i As Long
Dim b As Boolean
ctl.FontSize = n
w = ctl.Width / 1440
For i = n To 1 Step -1
b = (Len(ctl.Value) + 1) * i / 72 - w <= 0
    If b = True Then
        ctl.FontSize = i
        Exit For
    End If
Next
End Function
作者: roych    时间: 2011-11-13 10:24
没看懂,进入VBE界面,在语句中按下F1,看帮助文件。各项属性都还没了解清楚,又怎么看得懂?
作者: andymark    时间: 2011-11-14 21:45
参考示例:
http://www.office-cn.net/thread-107249-1-1.html
作者: todaynew    时间: 2011-11-15 10:52
本帖最后由 todaynew 于 2011-11-15 11:04 编辑
ljwily 发表于 2011-11-12 19:46
有点深奥没看懂,能解释下吗?
Function ctlFontSize(ctl As Control)
Dim w As Single


Dim n As Long                                        '存放字号的模块级公共变量

Private Sub Form_Load()
n = Me.电站名称.FontSize                        '将【电站名称】控件的字号赋值给模块级变量n
End Sub

Function ctlFontSize(ctl As Control)
Dim w As Single
Dim i As Long
Dim b As Boolean
ctl.FontSize = n                                              '控件字号赋值为加载时【电站名称】的字号
w = ctl.Width / 1440                                       '控件宽度换算为英寸,存于w中。
For i = n To 1 Step -1                                     '按字号递减循环
    b = (Len(ctl.Value) + 1) * i / 72 - w <= 0    '比较当前控件值的宽度是否超过控件宽度
    If b = True Then
        ctl.FontSize = i                                       '如果控件值超宽,则控件字号减小一个字号。
        Exit For
    End If
Next
End Function

单位换算:
1英寸=1440缇
1英寸=72磅




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3