3-13 変数と定数 (2) ―「メモ」を使ってみよう―

メモと呼ばれるコンポーネントを使ってみましょう。メモはメモコンポーネントのアイコンを使ってフォームに配置することが出来ます。

下のようなフォームのプログラムを作ってください。

【練習問題】

オブジェクトインスペクタで Memo1 を選んで ScrollBarsssNone から ssBoth に変えると、プログラムはどのように変わりますか?

WordWrap プロパティを False にすると、何が変わりますか? (ヒント:実行中にメモに大量の文章を入力すると違いが分かります。)

【基礎課題 3-19】

Lines プロパティの値を変えて、プログラムを実行したとき、メモに

北海道
江別市文京台
札幌学院大学
社会情報学部

と表示されるようにしましょう。

【練習問題】

左のメモに情報が入っている状態で、「何行目」を指定して「取り出す」ボタンを押すと
その内容が右下のエディットに取り出される、というプログラムを作ってみましょう。

まずは、フォームの上に次のようにコンポーネントを配置します。

コンポーネント Name
左のメモ MemoMain
右上のスピンエディット SpinEditLine
右のボタン ButtonAccess
右下のエディット EditEachLine

次に、プログラムを書きます。MemoMain の各行は、

MemoMain.Lines[行番号]

という形でアクセスすることができます。下のプログラムを作成して下さい。

procedure TForm1.ButtonAccessClick(Sender: TObject);
begin
  EditEachLine.Text := MemoMain.Lines[SpinEditLine.Value];
end;

注意 メモの各行は、最初が0行目、次が1行目、その次が2行目、…というように順序がつけられています。

【基礎課題 3-20】

「ほっかいどう」と入力した画面 という状態で「送り込む」ボタンを押すと
「ほっかいどう」がメモに送り込まれた画面 指定された場所に情報を送り込む、というプログラムを作って下さい。

コラム

このプログラムで、7行目や10行目に情報を送り込もうとしても、うまくいきません。これは、現在存在していない行へのアクセスをメモが許してないからなのです。

「では、100行の情報を書き込むためには、各行にアクセスできるよう、メモにあらかじめ100行の無駄なデータを書き込んでおかなくてはならないのか?」という疑問ももっともです。

実は、Memo には Add() という、行を付け足す命令があります。プログラムを次のように変更すると、ボタンを押すたびに行が増えていきます。

procedure TForm1.ButtonAccessClick(Sender: TObject);
begin
  MemoMain.Lines.Add(EditEachLine.Text);
end;