2011-06-01 15 views
3

有沒有辦法改變像素中的插入位置?移動TRichEdit Caretpos

我想每次移動鼠標移動護理位置。

像:

的OnMouseMove: MoveCaretPos(X,Y);

+0

我希望有一個很好的理由讓你想做到這一點。如果用戶需要輸入數據(類型),那麼不要這麼做,因爲大多數人會將鼠標移動到位置,單擊,然後移動鼠標,以便他們看到他們在做什麼。 – mj2008 2011-06-01 07:49:58

回答

7

不,您不能在特定點設置插入符號的位置,而必須將脫字符設置爲字符位置。要做到這一點,您必須使用EM_CHARFROMPOS消息來檢索最接近指定點的字符,然後設置返回到SelStart屬性的值。

檢查該樣本

procedure TForm1.RichEdit1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); 
var 
APoint : TPoint; 
Index : Integer; 
begin 
    APoint := Point(X, Y); 
    Index := SendMessage(TRichEdit(Sender).Handle,EM_CHARFROMPOS, 0, Integer(@APoint)); 
    if Index<0 then Exit; 
    TRichEdit(Sender).SelStart:=Index; 
end;