本文介绍了德尔福访问冲突形式的移动按钮时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想用移动while循环检查left属性的按钮在窗体上2个按钮,但我有一个访问冲突。我exeting用的CreateThread的程序()
的code:过程AnimButton1();
VAR ImageCount:整数;
变种B1,B2:整数;
开始 尝试 而(B2<> 187)做
开始
B2:= frmNotification.btnBuzina2.Left;
frmNotification.btnBuzina2.Left:= B2 - 1; 结束; 而(B1<> 256)做
开始
B1:= frmNotification.btnBuzina.Left;
frmNotification.btnBuzina.Left:= B1 - 1; 结束; 除;
结束;结束;
但是,当我使用睡眠()与至少5毫秒为单位,我没有访问冲突,是这样的:
程序AnimButton1();
VAR ImageCount:整数;
变种B1,B2:整数;
开始 尝试 而(B2<> 187)做
开始
B2:= frmNotification.btnBuzina2.Left;
frmNotification.btnBuzina2.Left:= B2 - 1;
睡眠(5);
结束; 而(B1<> 256)做
开始
B1:= frmNotification.btnBuzina.Left;
frmNotification.btnBuzina.Left:= B1 - 1;
睡眠(5);
结束; 除;
结束;结束;
有人能帮助我找出为什么不睡眠我得到的访问冲突,并用它我不?
THX提前!
解决方案
That is your problem. VCL code must only be called from the main UI thread. Use TThread.Synchronize
to invoke the VCL code on the main thread.
That said, a timer might be a more appropriate solution to you problem than a thread.
这篇关于德尔福访问冲突形式的移动按钮时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!