1

TRichEdit コンポーネントを使用して、Delphi (2009) でエディターを作成しています。コンポーネントの他の場所からマウスを使用してコピーする機能を維持しながら、キャレットが常に最後にある必要があるという意味で、エディターは追加専用です。

現時点では、何かを書くたびにキャレットを最後に移動する方法ですが、テキストの他の部分をクリックしたときにキャレットがマウスに追従しないようにすることはできますか?

4

2 に答える 2

3

いいえ、できません。ユーザーが何かを入力するときは、カレットを最後に移動する必要があります。

于 2010-09-09T19:01:30.790 に答える
3

いいえ。ユーザーがマウスまたはキーボードで選択するには、キャレットを移動する必要があります。新しいテキストを挿入するたびに、キャレットを最後に移動する必要があります。おそらく、各挿入中にユーザーの現在のキャレット位置を保持および復元する必要があります。たとえば、次のようになります。

procedure TForm.AppendText(const S: String);
var
  OldCharRange, NewCharRange: TCharRange;
begin
  SendMessage(RichEdit1.Handle, EM_EXGETSEL, 0, LParam(@OldCharRange));
  try
    NewCharRange.cpMin := RichEdit1.GetTextLen;
    NewCharRange.cpMax := NewCharRange.cpMin;
    SendMessage(RichEdit1.Handle, EM_EXSETSEL, 0, LParam(@NewCharRange));
    RichEdit1.SelText := S;
  finally
    SendMessage(RichEdit1.Handle, EM_EXSETSEL, 0, LParam(@OldCharRange));
  end;
end;
于 2010-09-09T22:16:26.557 に答える