現在カーソルがある位置を取得する





■必要なコンポーネント

■その他

■使用するAPI関数

■ソースは下記のようになります。追加している所は青色です。

カーソルがある行の位置を取得する処理
procedure TForm1.FormCreate(Sender: TObject);
Var
 i : integer;
begin

 //初期設定
 Memo1.Clear;
 Memo1.Lines.Add('1行目 これはサンプルですよ');
 for i := 2 to 29 do
  Memo1.Lines.Add(inttostr(i) +'行目 これはサンプルですよ。');


end;

procedure TForm1.Timer1Timer(Sender: TObject);
Var
 Line :integer; //カーソルがある行数
 MaxLine :integer; //現在の最大行数
begin

 //現在カーソルがある行数(縦)を取得する
 Line := SendMessage(Memo1.Handle, EM_LINEFROMCHAR, -1, 0) + 1 ;

 //最大行数を取得する
 MaxLine := SendMessage(Memo1.Handle, EM_GETLINECOUNT, 0, 0) ;

 Label1.Caption := '行数(縦)' + IntTostr(Line) + '/' + Inttostr(MaxLine) ;

end;




Win32APIのページへ



ホーム PV ランキング