【 tulaoshi.com - 编程语言 】
                             
                            Delphi  // 指定输入游标的位置  procedure SetCaret(RTF: TRichEdit; var Row, Col: Word);  var  i, iStopLine, iSelStart: integer;  begin  if (RTF = nil) then Exit;  if Row = 0 then Row := 1;   
![]()
![]()
![]()
![]()
!-- frame contents --   !-- /frame contents --
![]()
![]()
![]()
![]()
   if Col = 0 then Col := 1;// 到第 Row 列, Col 行共几个字元  iStopLine := Row - 1;  iSelStart := 0;  for i := 0 to RTF.Lines.Count - 1 do  begin  if i = iStopLine then  begin  if Length(RTF.Lines[i]) $#@62;= Col then  Inc(iSelStart, Col)  else  Inc(iSelStart, Length(RTF.Lines[i]) + 2);  Break;  end;  Inc(iSelStart, Length(RTF.Lines[i]) + 2);  end;  if iSelStart $#@62; 0 then Dec(iSelStart);// 以设定标记的方式指定游标位置  SendMessage(RTF.Handle, EM_SETSEL, iSelStart, iSelStart);// 再次侦测游标位置  Row := SendMessage(RTF.Handle, EM_LINEFROMCHAR, RTF.SelStart, 0);  Col := RTF.SelStart - SendMessage(RTF.Handle, EM_LINEINDEX, Row, 0);// 卷到游标所在位置  SendMessage(RTF.Handle, EM_SCROLLCARET, 0, 0);  end;  procedure TForm1.Button1Click(Sender: TObject);  var  iRow, iCol: word;  begin  iRow := 17;  iCol := 3;  SetCaret(RichEdit1, iRow, iCol);  RichEdit1.SetFocus;  end;