Esta es la única manera que encontré para saber en todo momento la posición del cursor en cualquier componente de edición de texto. En el ejemplo utilizo un Edit, pero vale para otros controles de texto (Memo, RichEdit...):
Código Delphi
[-]
procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Interval:= 1;
end;
procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Timer1Timer(Sender);end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Timer1.Enabled:= True;end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.Caption:= IntToStr(Edit1.SelStart);Timer1.Enabled:= False;end;