Office中国论坛/Access中国论坛

标题: 【Access小品】第100个是铜像---文本框字号自适应列宽 [打印本页]

作者: todaynew    时间: 2010-8-5 14:39
标题: 【Access小品】第100个是铜像---文本框字号自适应列宽
  上世纪六七十年代,阿尔巴亚是我们的同志加兄弟,那个时候南斯拉夫还是修正主义。《第八个是铜像》是阿尔巴亚一部反映二战时期的电影,这个电影都是在很大的一个操场上露天放映的。近十多年来,别说你想看阿尔巴亚的电影,就是朝鲜电影你都看不上了。可能有很多同志都不知道本题的渊源,呵呵。

  前日,Office中国版友sxb2007同志指名要求在下写一个字段宽度自适应文本框的实例,应该说这不是太难的问题,许多版友都可以做出来,而且方法也应该有很多。本来想在第100个【Access小品】写出一个像样的东西,为自己做一个标志性文章。可是等了几天也没有等到合适的问题,算球!就以这个题目写第100个小品罢了。

  前天Access技术论坛的版友yinyt同志发了一贴《如何才能让自己的access水平更上一层楼?》,我的观点是更上一层楼或者想速成的办法只有一个,就是大量的练习和实作。可能有同志可以总结出各种好的学习方法和过程,其实我是不以为然的,最终的方法总是不能按照教科书和别人做出的实例来学习的,所谓知其然和知其所以然的道理也就在于此。说到底Access只是一个应用层面的知识,你按部就班的学习也好,不按部就班的学习也好,只要你不断的实践,就会有所收获。我所提倡的是高效而胡乱的学习,不要循规蹈矩,不要按部就班,搞明白一个问题是一个问题。依我观察掌握到Access中5%到10%左右的知识,就可以解决日常工作中的问题了。如果你具有Access10%以上的知识,在现有的专业论坛中,你就已经是专家了。

  【Access小品】大约写了100个,因为在几个论坛发贴,统计不是很精确,只能是一个概数,只能说明本人在这个过程中有数量比较大的积累。这个系列似乎得到了许多版友的喜欢,但是我要告诉同志们,别迷恋老汉,老汉只是一个传说。因为你看了100个,并不意味着你正真学学会了100实例中的技巧和思路。你要想真正学习和形成自己独特的思路,还是需要你自己动手。我是不大看别人写的实例,当然除了问题以外。我比较关注问题,而不是解法,在我看来问题的有趣,比解法的精巧重要许多。

  《第八个是铜像》寓意一种怀念和纪念,《第100个是铜像》寓意一种标志,这个标志给自己是纪念,给版友是一种示范。这种示范或许可以理解为一种夸耀,或许可以理解为一种一厢情愿。无论如何多少能产生一些效果,呵呵。

[attach]43001[/attach]

[attach]43002[/attach]


作者: wang1950317    时间: 2010-8-5 15:15
todaynew大师新品不断啊!有许多竟没看到,真需要仔细搜一搜了。谢谢!
作者: xuwenning    时间: 2010-8-5 16:34
太勤奋了
收下了
谢谢分享
作者: tmtony    时间: 2010-8-5 18:26
不能不说,高产 高效 高手
作者: xuwenning    时间: 2010-8-5 20:48
大约写了100个
偶以为不止100个
作者: yanwei82123300    时间: 2010-8-6 08:32
太勤奋了
收下了
谢谢分享

作者: lovehere    时间: 2010-8-6 09:55
这个太有用了,一定要收藏学习
作者: ycxchen    时间: 2010-8-6 10:59
同意:让自己的access水平更上一层楼就是大量的练习和实作!
作者: xuwenning    时间: 2010-8-13 14:04
本帖最后由 xuwenning 于 2010-8-13 14:10 编辑

最近闭关修道
测试了老汉的这个例子,发现老汉的例子还有待完善
如果文本框内有数字(英文字母)的话文本框自适应不准确
下面的图是极端情况(全为数字)


原因是数字(英文字母)和汉字的字号不一致(或字节不一致所造成的)
以采用10磅的字号为例
同样字数的汉字宽度等于同样字数的数字宽度的两倍
所以建议老汉增加对文本框内的汉字与数字(字母)的长度识别功能

(2×汉字长度+数字或字母长度)/144  







作者: todaynew    时间: 2010-8-13 14:41
最近闭关修道
测试了老汉的这个例子,发现老汉的例子还有待完善
如果文本框内有数字(英文字母)的话文本 ...
xuwenning 发表于 2010-8-13 14:04

确有此问题。



作者: xuwenning    时间: 2010-8-13 14:51
确有此问题。
todaynew 发表于 2010-8-13 14:41

版主敬业
向您学习


作者: xuwenning    时间: 2010-8-13 15:16
我修改了一下请老汉指正
‘=======================
Function ctlFontSize(ctl As Control)
Dim w As Single, c As Single, d As Single
Dim i As Long
Dim b As Boolean
ctl.FontSize = Nz(n) '1 磅等于1/72 英寸
'1440 缇等于一英寸
w = ctl.Width / 1440

For i = n To 1 Step -1
'使用vbFromUnicode判断中文字符有几个
'注意unicode编码的字串(如中文、日文、韩文等)
c = LenB(StrConv(Nz(ctl.Value, ""), vbFromUnicode)) - Len(Nz(ctl.Value, ""))
d = Len(Nz(ctl.Value, "")) - c
b = ((2 * c + d + 1) * i) / (2 * 72) - w <= 0
'b = ((Len(ctl.Value) + 1) * i) / (2 * 72) - w <= 0
    If b = True Then
        ctl.FontSize = i
        Exit For
    End If
Next
End Function
作者: todaynew    时间: 2010-8-13 15:44
谢谢xuwenning 同志的批评指正,并赞赏直言不讳的精神。对其中的StrConv函数还没用过,需要进一步学习一下。
作者: li08hua    时间: 2010-8-13 22:11
todaynew 同志,以我看,站主还有大家应该对网站有贡献的学友们搞个仪式,在您的第100个作品发表之日就该为您搞个庆祝活动,并记录在案。鼓励大家向您学习。不知如何?
作者: xuwenning    时间: 2010-8-13 23:05
todaynew 同志,以我看,站主还有大家应该对网站有贡献的学友们搞个仪式,在您的第100个作品发表之日就该为 ...
li08hua 发表于 2010-8-13 22:11

赞同楼上的
特别是老汉令我汗颜
现在下决心努力向他学习



作者: 真主    时间: 2010-8-14 19:59
还有一个问题,就是修改此行数据后,自动适应列宽功能不失效了,直到下次打开才又好了
作者: xuwenning    时间: 2010-8-14 21:11
还有一个问题,就是修改此行数据后,自动适应列宽功能不失效了,直到下次打开才又好了
真主 发表于 2010-8-14 19:59

可以统一使用n=10的字体
跟新后再次调用



作者: huxinhua    时间: 2012-1-10 15:15
收藏学习
作者: wuheng    时间: 2012-5-7 17:01
谢谢,学习中~~~~~~~~~~
作者: tang211    时间: 2016-2-29 09:51
太厉害了,,,,,
作者: Charline    时间: 2016-5-11 18:16
请问能不能在报表中也实现字体大小的调整?

我把下面一段代码加到了report_load事件里,运行到读取控件值的时候错误提示参数不正确。

'--------------------------- font size --------------------------
    Dim w As Single
    Dim i As Long
    Dim b As Boolean
   
    Dim n
   
    n = Texte8.FontSize
    w = Texte8.Width / 1440
    Texte8.Enabled = True
    For i = n To 1 Step -1
        b = (Len(Texte8.Value) + 1) * i / 72 - w <= 0
        If b = True Then
            Texte8.FontSize = i
            Exit For
        End If
    Next


谢谢各位前辈的提点呐~~
作者: AnlexanderZhang    时间: 2016-5-22 00:14
是的,请问如何在报表里实现此功能!请大家指教。
作者: 李力军2    时间: 2016-8-12 15:32
学习
作者: andliu    时间: 2021-1-31 14:08
强大,学习了.
作者: xxk8077    时间: 2023-3-2 08:04
又来学习了




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