首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Delphi将备忘录复制到Richedit问题

Delphi将备忘录复制到Richedit问题
EN

Stack Overflow用户
提问于 2010-11-25 07:05:59
回答 2查看 3.5K关注 0票数 1

我在将备忘录的内容复制到richedit组件时遇到问题。

我以为这会是

代码语言:javascript
运行
复制
Richedit.text := memo.text;

但是,如果我使用这个,Richedit会在备忘录文本换行到新行(不是CR/LF)时开始一个新行,而只是换行。当memo开始一个新行时,richedit也会开始一个新行,这是可以的。

任何人都知道如何将备忘录中的文本复制到richeditbox中,而不会在备忘录文本换行时使Richedit中的行断开

谢谢

科林

EN

回答 2

Stack Overflow用户

发布于 2010-11-25 07:18:18

当我这样做的时候

代码语言:javascript
运行
复制
RichEdit1.Text := Memo1.Text

RichEdit中,Memo1的虚拟“换行符”不会神奇地转换为换行符(CRLF),它们也不应该转换为换行符。这些“换行符”不会存储在备注文本缓冲区中。事实上,Embarcadero的官方文档指出

将WordWrap设置为true,以使编辑控件的文本在右边距处换行,以便适合工作区。包装只是装饰性的。文本不包括任何未显式输入的回车字符。

无论如何,另一种方法是

代码语言:javascript
运行
复制
RichEdit1.Lines.Assign(Memo1.Lines);

尽管这将保留虚拟换行符,如下所示。

更新

最有可能的是你的代码中有一些其他的奇怪之处(bug),或者你的问题表达得太含糊了。但是,要消除VCL包装器出现任何问题的风险,请尝试执行以下操作:

代码语言:javascript
运行
复制
procedure TForm4.FormClick(Sender: TObject);
var
  buf: PChar;
const
  MAX_BUF_SIZE = 65536;
begin
  GetMem(buf, MAX_BUF_SIZE * sizeof(char));
  Memo1.Perform(WM_GETTEXT, MAX_BUF_SIZE, buf);
  RichEdit1.Perform(WM_SETTEXT, 0, buf);
  FreeMem(buf);
end;
票数 2
EN

Stack Overflow用户

发布于 2010-11-26 06:00:51

作为一个肮脏的技巧,你可以关闭备忘录上的自动换行,然后完成作业,然后再打开自动换行吗?这是一个令人讨厌的技巧,但如果有一些奇怪的行为,它可能会对你起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4272384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档