Wolfgang Chien's Homepage | Delphi學習筆記 - 問答篇 |
請問在RichEdit中我想將游標(文字)移動到某一位置要怎麼用呢?
我用SendMessage可以取得行數、列數,然後要用那個參數或是函數才能移動游標呢?
這個需要自已處理, 例如本信所附的程式 --
// 指定輸入游標的位置 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;
首頁 | 學習筆記 | 主題公園 | 軟體下載 | 關於本站 | 討論信群 | 相約下次 |