我在将备忘录的内容复制到richedit组件时遇到问题。
我以为这会是
Richedit.text := memo.text;但是,如果我使用这个,Richedit会在备忘录文本换行到新行(不是CR/LF)时开始一个新行,而只是换行。当memo开始一个新行时,richedit也会开始一个新行,这是可以的。
任何人都知道如何将备忘录中的文本复制到richeditbox中,而不会在备忘录文本换行时使Richedit中的行断开
谢谢
科林
发布于 2010-11-25 07:18:18
当我这样做的时候
RichEdit1.Text := Memo1.Text在RichEdit中,Memo1的虚拟“换行符”不会神奇地转换为换行符(CRLF),它们也不应该转换为换行符。这些“换行符”不会存储在备注文本缓冲区中。事实上,Embarcadero的官方文档指出
将WordWrap设置为true,以使编辑控件的文本在右边距处换行,以便适合工作区。包装只是装饰性的。文本不包括任何未显式输入的回车字符。
无论如何,另一种方法是
RichEdit1.Lines.Assign(Memo1.Lines);尽管这将保留虚拟换行符,如下所示。
更新
最有可能的是你的代码中有一些其他的奇怪之处(bug),或者你的问题表达得太含糊了。但是,要消除VCL包装器出现任何问题的风险,请尝试执行以下操作:
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;发布于 2010-11-26 06:00:51
作为一个肮脏的技巧,你可以关闭备忘录上的自动换行,然后完成作业,然后再打开自动换行吗?这是一个令人讨厌的技巧,但如果有一些奇怪的行为,它可能会对你起作用。
https://stackoverflow.com/questions/4272384
复制相似问题