■ 文字列の追加
Memo1->Lines->Add("Hello world."); // 改行して文字列を追加
Memo1->Lines->Insert(2, "Hello world !"); // 2行目に文字列を挿入
Memo1->SelText = "Hello world."; // キャレット位置に追加
Memo1->Text = Memo1->Text + "Hello world.\r\n"; // 改行コード
■ 文字列の削除
Memo1->Text = "";
Memo1->Clear();
■ 表示の更新
Memo1->Refresh(); // コントロール全体を即座に再描画
Memo1->Update(); // 古くなったと判別されたコントロールの一部領域のみを再描画
■ メッセージを表示
AnsiString msgStr;
msgStr.printf("failled to Connect(). Error=%d", WSAGetLastError());
Memo1->Lines->Add(msgStr);
// --- 結果メッセージを表示
Memo1->Lines->Add("Open ...");
HANDLE hCom = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if(hCom == INVALID_HANDLE_VALUE){
Memo1->Lines->Delete(Memo1->Lines->Count - 1); // 最終行を削除
Memo1->Lines->Add("Open ... Failed.");
return;
}
Memo1->Lines->Delete(Memo1->Lines->Count - 1); // 最終行を削除
Memo1->Lines->Add("Open ... Success.");
■ 現在のカーソル位置を取得
void __fastcall TForm1::Button1Click(TObject *Sender)
{
// 両方とも最初の行(列)は、0
int x, y;
x = Memo1->Perform(EM_LINEFROMCHAR, Memo1->SelStart, 0); // 現在の行位置を取得
y = Memo1->SelStart-Memo1->Perform(EM_LINEINDEX, Memo1->Perform(EM_LINEFROMCHAR, Memo1->SelStart, 0), 0); // 現在の列位置を取得
MessageDlg("X=" + IntToStr(x) + ", Y=" + IntToStr(y), mtInformation, TMsgDlgButtons() << mbOK, 0);
}
■ カーソルを最終行の末尾に移動し、文字を追加
#include <mmsystem.h> // for timeGetTime()
Memo1->Lines->Add("Socket Connecting ...");
int x = Memo1->Perform(EM_LINEFROMCHAR, Memo1->SelStart, 0); // 現在の行位置を取得
Memo1->SelStart = Memo1->Perform(EM_LINEINDEX, x-1, 0); // カーソルを最終行に移動
Memo1->SelStart += Memo1->Lines->Strings[x-1].Length(); // カーソルを文字列分進める
for(int i=0; i<10; i++){
unsigned int t = timeGetTime(); // 今の時間を記憶
while(1000 > timeGetTime()-t){ // 記憶した時間から 1000ミリ秒ループ
Application->ProcessMessages();
}
Memo1->SelText = "."; // Connectできるまで、"." を追加
}
■ 特定行の削除
Memo1->Lines->Delete(2); // 3行目を削除
■ フォント属性の変更
Dialogsページの FontDialog を使用することで、Windows 標準のダイアログボックス[フォントの指定]を表示し、
このダイアログボックスでフォント,サイズ,スタイルを指定できる。
void __fastcall TForm1::Button1Click(TObject *Sender)
{
FontDialog1->Options << fdTrueTypeOnly;
if(FontDialog1->Execute()){
Memo1->Font = FontDialog1->Font;
}
}
■ 内容をテキストファイルに保存
Memo1->Lines->SaveToFile("logfile.txt");
■ スクロール
プログラムからMemo(RichEdit)をスクロールさせるには EM_SCROLL、EM_LINESCROLL を使用する。
Memo1->Perform(EM_SCROLL, SB_LINEDOWN, 0); // 1行下へ
Memo1->Perform(EM_SCROLL, _SB_LINEUP, 0); // 1行上へ
Memo1->Perform(EM_SCROLL, SB_PAGEDOWN, 0); // 1ページ下へ
Memo1->Perform(EM_SCROLL, SB_PAGEUP, 0); // 1ページ上へ
Memo1->Perform(EM_LINESCROLL, 4, 3); // 水平方向に4文字、垂直方向に3行スクロール
■ 入力できる文字数を制限
Memo1->Perform(EM_SETLIMITTEXT, 32*1024, 0); // 32Kbytesまで