フリーソフト

TMemo

[Delphi] Memoでキャレット位置に文字列を挿入する

Memo1.SelText:='挿入する文字列';

[Delphi] Memoで現在カーソルがある行を取得する

戻り値は1行目が0となります。

LineNo:=Memo1.Perform(EM_LINEFROMCHAR, -1, 0);

[Delphi] Memoで左右のマージンを設定する

以下の例では左に10ドット、右に20ドットのマージンを設定します。

Memo1.Perform(EM_SETMARGINS,
   EC_LEFTMARGIN or EC_RIGHTMARGIN,
   MAKELONG(10, 20));

[Delphi] Memoで座標から文字位置へ変換する

マウスカーソルの位置にある文字の位置(先頭からのバイト数)と行番号を表示する例です。

procedure TForm1.Memo1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
 Res:DWORD;
begin
 //座標から文字位置を取得
 Res := Memo1.Perform(EM_CHARFROMPOS, 0, MAKELONG(X, Y));

 //先頭からのバイト数を表示
 Label1.Caption := IntToStr(LOWORD(Res));
 //行数を表示
 Label2.Caption := IntToStr(HIWORD(Res));
end;

[Delphi] Memoで入力できる文字数を制限する

入力できるバイト数を制限する方法です。以下の例では32Kバイトに制限しています。

Memo1.Perform(EM_SETLIMITTEXT, 32*1024, 0);

[Delphi] MemoやRichEditをスクロールする

プログラムからMemoやRichEditをスクロールさせるには EM_SCROLL を使用します。

 //1ページ上へ
 Memo1.Perform(EM_SCROLL, SB_PAGEUP, 0);
 //1ページ下へ
 Memo1.Perform(EM_SCROLL, SB_PAGEDOWN, 0);
 //1行上へ
 Memo1.Perform(EM_SCROLL, _SB_LINEUP, 0);
 //1行下へ
 Memo1.Perform(EM_SCROLL, SB_LINEDOWN, 0);

EM_LINESCROLLを使用することもできます。

 //水平方向に3文字、垂直方向に2行スクロール
 Memo1.Perform(EM_LINESCROLL, 3, 2);

[Delphi] Memoで現在カーソルがある行までスクロールする

Memo1.Perform(EM_SCROLLCARET, 0, 0);