1

メモの内容をリッチエディット コンポーネントにコピーする際に問題が発生しています。

だろうと思った

Richedit.text := memo.text;

ただし、これを使用すると、メモ テキストが新しい行 (CR/LF ではなく) に折り返されたときに、Richedit が新しい行を開始しますが、折り返しだけです。メモが新しい行を開始すると、リッチエディットも新しい行を開始しますが、これは問題ありません。

メモのテキストが折り返されたときにリッチエディットで行が途切れることなく、メモからリッチエディットボックスにテキストをコピーする方法を誰でも知っています

ありがとう

コリン

4

2 に答える 2

2

私がする時

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;
于 2010-11-24T23:18:18.290 に答える
0

汚いハックとして、メモのワードラップをオフにしてから、割り当てを実行してから、ワードラップをオンに戻すことはできますか? これは厄介なハックですが、奇妙な動作があればうまくいくかもしれません。

于 2010-11-25T22:00:51.217 に答える