我正在使用 TRichEdit 组件在 Delphi (2009) 中编写一个编辑器。编辑器是仅附加的,从某种意义上说,插入符号必须始终位于末尾,同时保持使用鼠标从组件的其他位置进行复制的能力。
目前它的工作方式是在写入内容时将插入符号移到末尾,但是在单击文本的其他部分时是否可以使插入符号不跟随鼠标?
不,这是不可能的。当用户键入内容时,您必须将插入符号移到末尾。
不可以。插入符号必须移动才能让用户使用鼠标或键盘进行选择。每次插入新文本时,您都必须将插入符号移到末尾。您可能还应该在每次插入期间保留并恢复用户当前的插入符号位置,例如:
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;