我正在使用CodeGear C ++ Builder 2009并且遇到TMemo组件问题。这太慢了。我用它来显示COM串口的ASCII文本。当它来自COM串口时,我需要显示每个符号。问题是,如果COM串口有很多文本,TMemo上的旧文本开始闪烁,组件上的文本越多,它就越糟糕。当TMemo包含1000行文本时,刷新延迟是巨大的!
我将doubleBuffered属性设置为true,但这并没有帮助所有人。它们如何使SecureCRT等应用程序的刷新时间最短?新文本平滑添加,没有闪烁。哪个组件可以产生这样的结果?
答案 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);