标题:关于Label的奇怪问题
只看楼主
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:166
专家分:15
注 册:2013-8-12
结帖率:87.5%
已结贴  问题点数:20 回复次数:11 
关于Label的奇怪问题
各位大侠:
      表单中有一个Label控件,其AutoSize = .T. ,Caption = 'Label1' (此时,width = 36),表单Init事件代码如下:

thisform.label1.Caption = '文字'
=MESSAGEBOX(STR(thisform.label1.Width))

thisform.label1.Caption = '中华人民共和国'
=MESSAGEBOX(STR(thisform.label1.Width))

thisform.label1.Caption = '中华人民共和国中华人民共和国'
=MESSAGEBOX(STR(thisform.label1.Width))

奇怪的是:无论Caption的值是什么,显示的宽度始终是Caption = 'Label1'时的宽度,即36
如果把以上代码放入一个按钮控件内,一切正常。

请问各位大侠,这是什么原因造成的,如果规避这个问题。
搜索更多相关主题的帖子: Label Caption thisform MESSAGEBOX STR 
2017-11-18 22:29
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:20 
只能放在FORM1.ACTIVATE事件中
只有一个解释:当表单初始化时,LABEL1.AUTOSIZE 还没发挥作用。

[此贴子已经被作者于2017-11-18 22:49编辑过]


坚守VFP最后的阵地
2017-11-18 22:41
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:166
专家分:15
注 册:2013-8-12
得分:0 
谢谢老师,我去试试您说的方法。

这算不算VFP的一个Bug啊?
2017-11-18 22:55
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
LABEL的问题我以前也遇到的,解决方法:是放在FORM.ACTIVATE事件中
没造成危害,算不上错误。

坚守VFP最后的阵地
2017-11-18 22:58
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:166
专家分:15
注 册:2013-8-12
得分:0 
谢谢!
2017-11-18 23:01
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
Windows是用消息机制来处理事务,消息有队列先后、优先级别、同步或异步。
这样试试:
thisform.label1.Visible = .T. &&加一句

thisform.label1.Caption = '文字'
=MESSAGEBOX(STR(thisform.label1.Width))

thisform.label1.Caption = '中华人民共和国'
=MESSAGEBOX(STR(thisform.label1.Width))

thisform.label1.Caption = '中华人民共和国中华人民共和国'
=MESSAGEBOX(STR(thisform.label1.Width))
2017-11-19 04:47
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:166
专家分:15
注 册:2013-8-12
得分:0 
回复 6楼 吹水佬
真是神了!!!

thisform.label1.Visible = .T. 想不到这一句竟然是关键!为什么呢?Visible属性默认不是.T.吗?
吹版,请给小白科普一下吧!
2017-11-19 11:22
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 7楼 eepcvfp
搞不清,瞎搞的。
只是按VFP的说法,label1.Visible=.T. 时会令 label1 可见,既然要见人,当然是要用真面目见人吧。
2017-11-19 15:47
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
回复 8楼 吹水佬
WINXP VFP9 7423 下不能正常显示

坚守VFP最后的阵地
2017-11-19 16:19
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用sdta在2017-11-19 16:19:13的发言:

WINXP VFP9 7423 下不能正常显示

可能init事件的优先级较高,要等init事件过程结束后才能获取label1的变动结果。
同时发现有个问题,label1的优先级好象较低。
可以试试:按钮事件中,在一个循环体内改变label的caption或form的caption,form的caption能即时响应,label的caption不能。

2017-11-19 17:15



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-482631-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.195608 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved