在CodeGear C ++ Builder上是否存在比TMemo更快的组件?

时间:2011-08-17 14:55:20

标签: c++ performance c++builder tmemo

我正在使用CodeGear C ++ Builder 2009并且遇到TMemo组件问题。这太慢了。我用它来显示COM串口的ASCII文本。当它来自COM串口时,我需要显示每个符号。问题是,如果COM串口有很多文本,TMemo上的旧文本开始闪烁,组件上的文本越多,它就越糟糕。当TMemo包含1000行文本时,刷新延迟是巨大的!

我将doubleBuffered属性设置为true,但这并没有帮助所有人。它们如何使SecureCRT等应用程序的刷新时间最短?新文本平滑添加,没有闪烁。哪个组件可以产生这样的结果?

2 个答案:

答案 0 :(得分:1)

不是在TMemo到达时实时显示字符,而是先尝试将它们保存到内存缓冲区,然后让短计时器将缓冲区定期复制到TMemory中,并使用{添加新文字时的{1}}和Lines->BeginUpdate()方法。此外,1000行是很多,你可能不得不开始删除旧行,因为一段时间后添加更新的行。我通常一次将Lines->EndUpdate()控件限制为几百行。

更新:尝试这样的事情:

TMemo

答案 1 :(得分:0)

窗户设备,。 。 最好的方法是使用线程事件而不是计时器事件。 。 将序列等待事件放在thread->execute()内,(这是一个while while循环,...)

串行等待事件在收到任何东西之前什么都不做,.. 很快就收到了*buffer,检查缓冲区/字符串的长度,。

然后将其作为

放入备忘录
memo->text=buffer;
or 
memo->lines-add(buffer);