【发布时间】:2021-06-18 14:41:35
【问题描述】:
我尝试将包含不间断空格 (Unicode U+00A0) 的文本添加到具有属性 Wordwrap = True 的 RichEdit。我使用以下代码:
RichEdit.Lines.Add('Some text some text some text 1000' + #160 + 'km some text');
这在 '1000' 和 'km' 之间给出了一个空格,但它不是不间断的:当更改 RichEdit 的宽度时,此处可能会出现换行符,就像使用常规空格一样。我有 Windows 10 2004 版。
是我做错了什么,还是 RichEdit 组件的一般限制?
【问题讨论】:
-
这确实会在 1000 和 km 之间放置一个 U+00A0;如果我在运行时从 Rich Edit 控件复制文本,我可以看到它。但是,您使用
TRichEdit包装器获得的 Rich Edit 控件版本是一个非常旧的版本,我怀疑它不支持 nbsp。你试过stackoverflow.com/questions/26960672/…吗? -
不,那没用。
-
你可以看一下OS控件的文档,看看有没有发现什么有趣的东西:docs.microsoft.com/en-us/windows/win32/controls/…
-
Delphi 10.3 仍然使用旧的 RichEdit 2.0。 fgaillard.com/2010/09/using-richedit-4-1-with-d2010 描述了如何使用较新的 RichEdit 4.1 的方法。但是,这无济于事,因为 RichEdit 4.1 仍然忽略不间断空格。 docs.microsoft.com/en-us/windows/win32/controls/… 的文档没有提到对不间断空格的任何支持。所以,这似乎是 RichEdit 组件的一般限制。
-
我也尝试使用 4.1(它确实有效——例如,我能够显示精美的表格)并且可以确认仅升级不会使 nbsp 工作。但是,我注意到 nbsp 在写字板中工作,所以可能还有办法。例如,docs.microsoft.com/en-us/windows/win32/controls/… 可能值得研究,至少如果您只使用英语(或至少基于拉丁语)文本。