DELPHI技巧:改变RichEdit的游标位置
来源:优易学  2011-12-10 18:09:21   【优易学:中国教育考试门户网】   资料下载   IT书店
  // 指定输入游标的位置
  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;
  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]) >= 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 > 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

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训