【发布时间】:2012-02-14 17:48:25
【问题描述】:
我使用 TRichEdit 来编辑文本。我打开了 WordWrap,它会在控件边缘自动换行文本,这样就没有滚动条了。 RichEdit 的宽度设置为适合 80 列。
只要单词之间偶尔有空格,WordWrap 就可以很好地模拟这种行为。但是如果你有一个非常冗长的单词 RichEdit wrap 会自动破坏它,而 WordWrap 不会!
如果我现在想访问这些换行符,我可以通过RichEdit.Lines.Text 获取它,它会自动将 CRLF 放在第 80 列。如果我使用 RichEdit.Text,我会得到没有适合 WordWrap 的 CRLF 的原始文本。
正如我已经尝试过的那样,在自定义函数中完成这项任务并非易事,而且它不是一个小函数,但是否有办法使用 TRichEdit 的包装函数?我有一个创建隐藏 RichEdit 的想法,但对于这项任务来说,这似乎很愚蠢,因为我必须计算它的宽度才能进行自动换行 - 我认为这毫无意义。
问题 - 有没有办法强制 WordWrap 剪切无法以其他方式换行的长词?那么如果一个单词有 170 个字符长,它会被包装成 3 行 80 + 80 + 10 并且还要处理之前的单词来填充前后行?
【问题讨论】:
-
80 个字符是你想要的吗?还是你关心可变宽度字体?
-
我需要一个固定宽度的列 80(或任何其他)换行。如果超过第 80 列,则剪切并换行到另一行。如果太长,剪掉。
标签: delphi c++builder word-wrap