用了VFP这么久,突然发现一个有趣的问题。

十豆三 十豆三 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
将以下代码粘贴到一个PRG文件中并运行
Public oform1

oform1=Newobject("form1")
oform1.Show
Return

Define Class form1 As Form

Top = 29
Left = 124
Height = 183
Width = 377
DoCreate = .T.
Caption = "Form1"
Name = "Form1"

Add Object timer1 As Timer With ;
Top = 12, ;
Left = 12, ;
Height = 23, ;
Width = 23, ;
Interval = 500, ;
Name = "Timer1"

Add Object label1 As Label With ;
AutoSize = .F., ;
FontSize = 16, ;
Caption = "Label1", ;
Height = 36, ;
Left = 56, ;
Top = 12, ;
Width = 252, ;
ForeColor = Rgb(0,0,255), ;
Name = "Label1"

Add Object combo1 As ComboBox With ;
RowSourceType = 1, ;
RowSource = "1,2,3,4,5,6,7,8,9,0,a,b,c,d,e,f,g,h", ;
Height = 24, ;
Left = 252, ;
Top = 60, ;
Width = 100, ;
Name = "Combo1"

Add Object list1 As ListBox With ;
RowSourceType = 1, ;
RowSource = "1,2,3,4,5,6,7,8,9,0,a,b,c,d,e,f,g,h", ;
Height = 72, ;
Left = 144, ;
Top = 60, ;
Width = 100, ;
Name = "List1"

Procedure timer1.Timer
Thisform.Label1.Caption=Ttoc(Datetime())
Endproc

Enddefine

运行后界面如下:

左边的 Image 是个 Gif 动画,你们可以随意找一个 Gif 动画图片。
表单上用一个 Timer 控件显示时间,另外有一个 Combobox 和 ListBox。
有趣的问题来了,当你按住鼠标左键拖动 Combobox 或 ListBox 或 VFP 的 Command 窗口的滚动条时(下图蓝色框),
你会发现时间不动了,Gif 动画也停止了(下图黄色框),你松开鼠标左键后时间和Gif恢复动态。

说明拖动 VFP 的滚动条(Grid控件的滚动条也是这样,估计VFP的带滚动条的控件都一样)会影响 Timer 控件,不对,是影响整个进程了,因为 Gif 动画也不动了。
此问题说小也小,说大也大。
说小是可以忽略此问题。
说大此问题确实影响实际应用了,最近在做一个读卡的程序时,用 Timer 控件每秒通过MsComm32控件读卡,此问题会把程序卡死几秒钟,最后通过2个EXE才解决了此问题。

此问题
是BUG?
还是VFP单线程的问题,特点?
还是。。。
希望大家讨论一下。
...全文

相关推荐

评论 17
收藏 已收藏
分享
返回顶部
十豆三
VFP 2,750 成员 29,142 内容