文字列操作とは直接関係はないのですが、次節で使用するOnChangeイベントについてここで学習しておきましょう。
基礎課題 3-15 で作った「さん」づけプログラムを改良して、「敬称付け」ボタンを押さなくても「さん」を自動的につけるプログラムを作りましょう。 | ![]() |
まずは、次のようにコンポーネントを配置してください。
コンポーネント | Name プロパティ |
---|---|
上のエディット | Edit1 |
下のエディット | Edit2 |
でも、ボタンもないのに (そしてタイマーも使わずに) どうやってプログラムを実行するのでしょう? 今までは主にボタンに対する OnClick イベントを用いてきたので、(ボタンなしだと) ちょっと戸惑うかもしれませんね。実は、下に説明する通り、 OnChange というイベントがあるのです。
すると、Edit1Change というイベントハンドラが作成されます。これは、「Edit1 の内容が変更されたときに呼び出される」イベントハンドラです。次の空欄を埋めてプログラムを完成させてください。
procedure TForm1.Edit1Change(Sender: TObject); begin Edit2.Text := ________________________________; end;
OnChange イベントに似たイベントとしてOnResize イベントがあります。その使用例としてここでは、フォームの大きさが変更されると中のエディットの大きさも (それに応じて) 自動的に変更されるプログラムを作りましょう。
まずはコンポーネントを配置してください。
コンポーネント | Name プロパティ |
---|---|
エディット | Edit1 |
フォームの大きさが変更されたときは、OnResize というイベントが発生します。ですから、上の処理 (Edit 欄の幅の変更) は、Form1 の OnResize イベントに対するイベントハンドラに記述することで実現できます。下の空欄を埋めてこのイベントハンドラを完成させてください。
procedure TForm1.FormResize(Sender: TObject); begin Edit1.________ := Form1.________ - ________; end;
※ 最後の空欄 (右辺の第2項) には数値が入ります。その数値は、Edit 欄が (フォームのサイズ変更後も) フォーム中央に配置されるように各自調節してください。