Application.MessageBox 在应用 VCL 主题时剪切消息

Application.MessageBox cutting the message when VCL theme is applied

版本:Delphi柏林 10.1

我遇到了问题,我认为是 vcl 主题错误,当将 vcl 样式主题应用到应用程序时,使用 TApplication.MessageBox 的消息被限制为 256 个字符。

TApplication.MessageBox 包含 298 个字符的文本,未应用 VCL 主题。所有文本都正确显示。 Link: without VCL Style Theme

TApplication.MessageBox 包含 298 个字符的文本,应用了 VCL 主题。文本限制在 256 个字符以内,其余部分被删减。 Link: with any VCL Style Theme (Windows10 example)

我已经分析了Vcl.Styles.pas的TCustomStyleclass,但是我还没有找到解决这种不愉快情况的方法,所以我想得到你的帮助。

编辑:

根据Andreas Rejbrand传递的信息,可以确定是TStyleHook的GetText的缓冲区大小限制在[ 0..256] 的字符。 有了这些信息,我为一种新方法绕道而行,我将缓冲区大小增加到 [0..1023] 的 char 数组,这解决了我的问题。

QC Embarcadero 中报告的错误:

https://quality.embarcadero.com/browse/RSP-14771

https://quality.embarcadero.com/browse/RSP-14772

注意:不幸的是,目前无法将 IDE(这将解决问题)更新到较新的版本。

这是一个已知错误。

已在问题 RSP-14772 中向 Embarcadero 报告,该错误已在 Delphi 10.2 中修复。

最好的解决方案是升级到最新的 Delphi 版本,该版本还修复了许多其他错误。