<p>例として先頭行/最終行/指定行に移動するサンプルを示します。</p>
<pre class="brush: delphi;">
// 先頭行へ 
procedure TForm1.Button1Click(Sender: TObject);
var
  iLineNow: integer;
begin
  with Memo1 do
  begin
    // 現在のカーソルのある行を得る
    iLineNow := SendMessage(Handle, EM_LINEFROMCHAR, SelStart, 0); 
    // 先頭行へスクロール
    SendMessage(Handle, EM_LINESCROLL, 0, -iLineNow);         // 現在の行数だけ戻る
    SelStart := 0;
    SetFocus;
   end;
end;

// 最終行へ 
procedure TForm1.Button2Click(Sender: TObject);
var
  iLineNow: integer;
  iLineLast: integer;
begin
  with Memo1 do
  begin
    iLineNow := SendMessage(Handle, EM_LINEFROMCHAR, SelStart, 0);
    iLineLast := SendMessage(Handle, EM_GETLINECOUNT, 0, 0);
    SendMessage(Handle, EM_LINESCROLL, 0, iLineLast - iLineNow);
    SelStart := SendMessage(Handle, EM_LINEINDEX, iLineLast-1, 0);
   end;
end;

// 指定行へ (指定行をEdit1で指定します。) 
procedure TForm1.Button3Click(Sender: TObject);
var
  iLineNow: integer;
  iLineTo:  integer;
begin
  with Memo1 do
  begin
    iLineNow := SendMessage(Handle, EM_LINEFROMCHAR, SelStart, 0);
    iLineLast := SendMessage(Handle, EM_GETLINECOUNT, 0, 0);
    iLineTo := StrToInt(Edit1.Text);
    // 指定行が最終行以降の場合、最終行に移動
    if (iLineTo &lt;= iLineLast) then iLineTo := LineLast;
    SendMessage(Handle, EM_LINESCROLL, 0, iLineTo - iLineNow);
    SelStart := SendMessage(Handle, EM_LINEINDEX, iLineTo -1, 0);
  end;
end;
</pre>
<p>サンプルプログラムのダウンロードは&rarr;[File:22]</p>