注册 登录
编程论坛 VB6论坛

窗体显示自动换行语句里面的90是什么意思?

初学者21 发布于 2016-03-02 16:29, 3783 次点击
Sub fact(str As String)
While Len(str) > Form2.Width / 90
   Print Left(str, Form2.Width / 90 - 1)
   str = Mid(str, Form2.Width / 90 - 1)
Wend
End Sub
6 回复
#2
qq10235692232016-03-02 16:33
好像是一个字符占90个像素宽度的意思,Form2.Width / 90,窗口中一行能显示的最多字符数。

[此贴子已经被作者于2016-3-2 16:34编辑过]

#3
初学者212016-03-02 16:38
回复 2楼 qq1023569223
那您知道为什么窗体显示的不连续吗? (不是从上一行的末尾接着显示的)谢谢啊
#4
qq10235692232016-03-02 16:49
回复 3楼 初学者21
VB我不太懂,我只是从字面上理解的,题目的意思要代码控制文字换行变化,不过窗体一般会自动控制的(C#里面我一般文字放label里面),可能是窗体设置了某些特殊属性才导致不会自己处理的吧。
#5
初学者212016-03-02 16:53
回复 4楼 qq1023569223
好的,谢谢你啊,我再捣鼓捣鼓
#6
风吹过b2016-03-03 11:15
Sub fact(str As String)
While Len(str) > Form2.Width / 90                    循环,如果字符串长度大于窗体所能容纳的字符数,字符宽度按6像素算(估算,按默认缇计算,按默认DPI计算),
   Print Left(str, Form2.Width / 90 - 1)             取窗体所能容纳的最大字符,并显示
   str = Mid(str, Form2.Width / 90 - 1)              去掉已显示的字符
Wend
End Sub

这个函数,通用性,比较差,并且不支持中文,如果放中文,会导致宽度控制有误差。
另:因为英文字符并不是所有的字体里的字母是等宽的,所以如果字体不同,也会导致宽度控制有误差,表示在 右边对不齐。
------------------
90 ,如果没修改任何属性和屏幕的DPI的话, 窗体宽度 单位为缇,按默认DPI,每像素等于15缇。90就是 6像素宽。
6像素宽的英文字符,刚查了一下,
八号=5磅(5pt)=6px
--------------
(C#里面我一般文字放label里面),如果VB使用 label 的话,也是自动换行。

[此贴子已经被作者于2016-3-3 11:57编辑过]

#7
初学者212016-03-04 08:41
回复 6楼 风吹过b
好的,谢谢你啊,解决大难题了
1