Wolfgang Chien's Homepage | Delphi學習筆記 - 問答篇 |
小弟最近想自己寫一個文字輯器! 作法是用TMemo 這個元件來完成!
現在我有個問題, 就是我如何知道現在游標是在那一行那一列呢?? 有沒有辦法可以達到呢?? 請知道的人告訴我好嗎?? Thanks!
有一個簡便的方法, 如下 --
procedure TForm1.Memo1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); var iRow, iCol: integer; begin iRow := SendMessage(Memo1.Handle, EM_LINEFROMCHAR, Memo1.SelStart, 0); iCol := Memo1.SelStart - SendMessage(Memo1.Handle, EM_LINEINDEX, iRow, 0); Label1.Caption := IntToStr(iRow + 1); Label2.Caption := IntToStr(iCol + 1); end;
缺點是使用者用 Shift + 方向鍵或者用滑鼠拖出反白標記的話, 它的判斷會有誤差, 所以, 不妨您參考一下 VCL 原始碼的 Mask.pas, 看它是怎麼在滑鼠與鍵盤動作時正確的更新 FCaretPos 的值.
首頁 | 學習筆記 | 主題公園 | 軟體下載 | 關於本站 | 討論信群 | 相約下次 |