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

问题描述

版本:Delphi Berlin 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 的 TCustomStyle 类,但我还没有找到如何解决这种令人不快的情况,所以我想请你帮忙。

编辑:

根据 Andreas Rejbrand 传递的信息,可以确定这是 TStyleHook 的 GetText 缓冲区大小的限制,该缓冲区大小仅限于 [0..256] 数组字符。 有了这些信息,我为一种新方法创建了一个迂回路径,我将缓冲区大小增加到 [0..1023] 字符数组,这解决了我的问题。

QC Embarcadero 中报告的错误

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

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

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

解决方法

这是一个已知错误。

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

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