2010-11-24 48 views
1

我有一个问题,复制一个备忘录的内容到一个Richedit组件。德尔福复制备忘录到Richedit问题

我认为这将是

Richedit.text := memo.text; 

但是,如果我使用时备忘录文本换行到一个新的新线(未CR/LF),但只是这个包裹在RichEdit开始一个新行。当备忘录开始一个新的行时,这个富有的行也会开始新行。

任何人有任何的想法是如何将文本从备忘录复制到richeditbox没有在RichEdit破线时备忘录文本换行

感谢

科林

+1

什么是artline? – 2010-11-24 23:29:57

+0

请指定Delphi版本和操作系统版本吗? – 2010-11-24 23:45:44

回答

2

当我做

RichEdit1.Text := Memo1.Text 

Memo1的虚拟“换行符”不会奇迹般地转换为中的换行符(CRLF),他们不应该。这些“换行符”不存储在备忘录文本缓冲区中。事实上,官方英巴卡迪诺文档状态

将WordWrap设置为true以使编辑控制环绕文本在右边距,因此它适合客户区。包装只是化妆品。该文本不包含任何未明确输入的返回字符。

总之,另一种方法是做

RichEdit1.Lines.Assign(Memo1.Lines); 

尽管这会保留虚拟换行符,如下评论。

更新

最有可能你在你的代码中的一些其他的陌生感(错误),或者你在一个过于含糊措辞的方式你的问题。然而,为了消除与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; 
0

作为一个肮脏的黑客,你能不能关掉自动换您的备忘录然后做作业,然后切换自动换回来吗?这是一个令人讨厌的黑客攻击,但如果存在一些奇怪的行为,它可能会为你制造诡计。