在丰富的编辑中将插入符号保留在文本的末尾

时间:2010-09-09 18:52:47

标签: delphi richedit

我正在使用TRichEdit组件在Delphi(2009)中编写一个编辑器。编辑器是仅附加的,因为插入符号必须始终在最后,同时保持从组件中其他位置使用鼠标进行复制的能力。

目前它的工作方式是在写入内容时将插入符号移动到最后,但是当单击文本的其他部分时是否可以使插入符号不跟随鼠标?

2 个答案:

答案 0 :(得分:3)

不,这是不可能的。当用户输入内容时,您必须将插入符号移动到最后。

答案 1 :(得分:2)

没有。插入符必须移动,以便用户使用鼠标或键盘进行选择。每次插入新文本时,都必须将插入符号移动到末尾。您应该在每次插入期间保留并恢复用户当前的插入位置,例如:

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;