メモと呼ばれるコンポーネントを使ってみましょう。メモはを使ってフォームに配置することが出来ます。
下のようなフォームのプログラムを作ってください。
オブジェクトインスペクタで Memo1 を選んで ScrollBars を ssNone から ssBoth に変えると、プログラムはどのように変わりますか?
WordWrap プロパティを False にすると、何が変わりますか? (ヒント:実行中にメモに大量の文章を入力すると違いが分かります。)
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行目、…というように順序がつけられています。
![]() |
という状態で「送り込む」ボタンを押すと |
![]() |
指定された場所に情報を送り込む、というプログラムを作って下さい。 |
このプログラムで、7行目や10行目に情報を送り込もうとしても、うまくいきません。これは、現在存在していない行へのアクセスをメモが許してないからなのです。
「では、100行の情報を書き込むためには、各行にアクセスできるよう、メモにあらかじめ100行の無駄なデータを書き込んでおかなくてはならないのか?」という疑問ももっともです。
実は、Memo には Add() という、行を付け足す命令があります。プログラムを次のように変更すると、ボタンを押すたびに行が増えていきます。
procedure TForm1.ButtonAccessClick(Sender: TObject); begin MemoMain.Lines.Add(EditEachLine.Text); end;