Delphi Copy Memo для Richedit проблема - PullRequest
1 голос
/ 25 ноября 2010

У меня проблема с копированием содержимого заметки в компонент richedit.

Я думал, что это будет

Richedit.text := memo.text;

Однако, если я использую это, Richedit начинает новую строку, когда текст заметки переносится на новую новую строку (не CR / LF), а просто переносится. Richedit также начинает новую строку, когда памятка начинает новую строку, что хорошо.

Кто-нибудь знает, как скопировать текст из заметки в richeditbox без разрывов строк в Richedit при переносе текста заметки

Спасибо

Colin

Ответы [ 2 ]

2 голосов
/ 25 ноября 2010

Когда я делаю

RichEdit1.Text := Memo1.Text

виртуальные "разрывы строк" Memo1 магически не преобразуются в разрывы строк (CRLF) в RichEdit, и они не должны быть. Эти «разрывы строк» ​​не сохраняются в текстовом буфере заметок. Действительно, официальная документация Embarcadero гласит

Установите для 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 голосов
/ 26 ноября 2010

Как грязный хак, не могли бы вы отключить перенос слов в своей заметке, затем выполнить задание и затем снова включить перенос слов? Это неприятный хак, но он может помочь вам, если будет какое-то странное поведение.

...