本文介绍了德尔福访问冲突形式的移动按钮时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

限时删除!!

我想用移动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.

这篇关于德尔福访问冲突形式的移动按钮时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

1403页,肝出来的..

09-08 06:21