我在将备忘录的内容复制到richedit组件时遇到问题。
我以为会是
Richedit.text := memo.text;
然而,如果我使用它,当备忘录文本换行到新的新行(不是CR / LF)而只是换行时,Richedit会开始一个新行。当备忘录开始一个很好的新行时,richedit也会开始一个新行。
任何人都知道如何将备忘录中的文本复制到richeditbox中,而当备忘录文本换行时,Richedit中的行不会破坏
由于
科林
答案 0 :(得分:2)
当我这样做时
RichEdit1.Text := Memo1.Text
Memo1
中的RichEdit
的虚拟“换行符”并未神奇地转换为RichEdit1.Lines.Assign(Memo1.Lines);
中的换行符(CRLF),它们不应该是。{1}}。这些“换行符”不存储在备忘录文本缓冲区中。事实上,官方的Embarcadero文件说明了
将WordWrap设置为true可使编辑控件在右边距处换行文本,使其适合客户区。包装只是化妆品。该文本不包含任何未明确输入的返回字符。
无论如何,另一种方法是做
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;
虽然这会保留虚拟换行符,如下所示。
您的代码中很可能还有其他一些陌生感(错误),或者您过于模糊地表达了您的问题。但是,要消除VCL包装器出现任何问题的风险,请尝试以下操作:
{{1}}
答案 1 :(得分:0)
作为一个肮脏的黑客,你可以关闭你的备忘录上的自动换行然后做任务,然后重新开启自动换行?这是一个讨厌的黑客,但如果有一些奇怪的行为,它可能会帮助你。