【问题标题】:Updating visual components in android embarcadero c++builder在 android embarcadero c++builder 中更新可视化组件
【发布时间】:2016-07-07 11:20:37
【问题描述】:

我需要在一个耗时的函数期间更新我的应用程序中的几个可视组件,但我的应用程序似乎在此函数调用期间挂起,而不是更新屏幕上的可视组件。当函数退出时,我只看到组件的最后更改。

是否有一种简单的方法来进行更新,或者我是否需要创建一个并行进程并有一个“计时器”来同时读取数据(使用信号量)并将它们呈现在计时器调用中?

有什么建议吗?

【问题讨论】:

  • 你在工作期间有没有调用Application->ProcessMessages()?
  • 其实……不,没想到。会检查的!谢谢!!
  • 远离Application->ProcessMessages()!如果您只想重新绘制 UI,请使用各个控件的 Repaint() 方法,甚至是表单本身,来处理挂起的绘制操作。使用InvalidateRect() 方法指示需要重新绘制的控件。
  • 这也适用于 Android 吗?

标签: android c++builder


【解决方案1】:

我昨天问了同样的问题here。就像 mh taqia 所说,您可以使用 Application->ProcessMessages() 但您必须小心。对于我的应用程序,它有效,但请先查看有关该功能的一些帖子。

【讨论】:

  • 我去看看!非常感谢您的回答!
【解决方案2】:

我尝试了以下操作:

MainForm->Invalidate(); MyControlRoot->Repaint();

MyControlRoot 是一个包含大约 50-60 个不同的其他控件的控件

但 MyControlRoot 不会使用此方法重新绘制。 ..

尽管雷米有你的警告,我还是尝试了Application->ProcessMessages(); ...暂时有效...

顺便说一句...我在Docwiki 中看不到有关使用 ProcessMessages 的任何警告...我能期待什么?

RG

【讨论】:

    猜你喜欢
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-27
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    相关资源
    最近更新 更多