[Delphi] Memoでキャレット位置に文字列を挿入する
Memo1.SelText:='挿入する文字列';
以下の例では左に10ドット、右に20ドットのマージンを設定します。
Memo1.Perform(EM_SETMARGINS,
EC_LEFTMARGIN or EC_RIGHTMARGIN,
MAKELONG(10, 20));
マウスカーソルの位置にある文字の位置(先頭からのバイト数)と行番号を表示する例です。
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;
入力できるバイト数を制限する方法です。以下の例では32Kバイトに制限しています。
Memo1.Perform(EM_SETLIMITTEXT, 32*1024, 0);
プログラムから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);
C++Builder | C++言語・Pascal言語 | Delphi | TActionList | TColor | TEdit | TeX | TForm | TIniFile | TLabel | TListBox | TListView | TMemo | TProgressBar | TSplitter | TStatusBar | TStringGrid | TTrackBar | TWebBrowser | Windows | その他 | アルゴリズム | システム関連 | ネットワーク関連 | ファイル、フォルダの処理 | フォント関連 | フォーム・ダイアログ関連 | フリーソフト | プログラミング全般 | マウス、キーボードの処理 | 文字列の処理 | 日付時刻の処理 | 画像関連 | 開発環境(IDE)関連