首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 取得 Memo 控件當前游標所在行號

     編輯:Delphi

問題場景

在開發文字編輯器或日誌檢視器時,常需即時顯示游標所在行號。TMemo 無直接屬性提供此資訊,需透過 Windows 訊息 EM_LINEFROMCHAR 取得。

核心程式碼

procedure TMyForm.BitBtn1Click(Sender: TObject);
var
  iLine: Integer;
begin
  // $FFFF = 當前游標位置;回傳值為 0 基底行號
  iLine := Memo1.Perform(EM_LINEFROMCHAR, $FFFF, 0);
  ShowMessageFmt('游標位於第 %d 行 (0 基底)', [iLine]);
end;

關鍵說明

  • EM_LINEFROMCHAR:Windows 編輯控件訊息,參數 wParam = $FFFF 表示使用當前游標字元索引
  • 回傳值為 0 基底,若需顯示為 1 基底,請自行 +1
  • 同樣適用於 TRichEdit 等衍生控件

擴充應用:即時顯示行/列資訊

procedure TMyForm.Memo1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
var
  LineIdx, CharIdx: Integer;
begin
  LineIdx := Memo1.Perform(EM_LINEFROMCHAR, $FFFF, 0);
  CharIdx := Memo1.SelStart - Memo1.Perform(EM_LINEINDEX, LineIdx, 0);
  StatusBar1.Panels[0].Text := Format('行: %d  列: %d', [LineIdx + 1, CharIdx + 1]);
end;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved