5-13 メソッド

【基礎課題 1-12】で調べたように、各コンポーネントには、多くのプロパティがあります。例えばエディットなら、 Text プロパティを筆頭に、Top, Visibleなど様々なプロパティがあります。

絶対値を求める abs 関数と同様に、これらのプロパティは Delphi に最初から備わっているものです*)。「プロパティはコンポーネントに最初から備わっている変数である」と言い換えることもできます。

*) 厳密に考えると、Delphi のもととなった PASCAL 言語の規格が定めているものと、Delphi の開発者が Delphi の利用者のために作ってくれたもの (ライブラリと呼ばれます) は別物ですが、ここではその違いを考えません。

そして実は、コンポーネントには変数 (プロパティ) だけでなく関数・手続きも最初からいくつか備わっているのです。このような関数・手続きは,メソッドと呼ばれます。ここでは、エディットに備わっている Clear メソッドを使って、【基礎課題 4-8】で作った検索プログラムを改良してみましょう。

【練習問題】

このプログラムは、キーワードを入力しないで「検索」ボタンを押すと「検索用キーワードを入力してください。」という警告が出るというものでした。しかし、一度警告が表示されると、その後キーワードを入力して「検索」ボタンを押しても警告は消えません。そこで、一度警告が出ても、その後ちゃんとキーワードを入力すると警告が消えるように、プログラムを改良しましょう。まずは、今までの知識の範囲で改良します。プログラムを次のように変えてください。(コンポーネントの名前があなたのものと違う場合は適宜読み替えてください。)

procedure TForm1.ButtonSearchClick(Sender: TObject);
begin
  if EditKeyWord.Text = ''
    then
      begin
        EditMessage.Text := '検索用キーワードを入力してください。';
      end
    else
      begin
        EditMessage.Text := '';
      end
  ;
end;

正しく動く (警告が1度出た後でもキーワードを入れると警告が消える) ことを確かめたら、プログラムを次のように変更してください。

procedure TForm1.ButtonSearchClick(Sender: TObject);
begin
  if EditKeyWord.Text = ''
    then
      begin
        EditMessage.Text := '検索用キーワードを入力してください。';
      end
    else
      begin
        EditMessage.Clear;
      end
  ;
end;

先ほどのプログラムと同じように動くことを確かめましょう。

メソッドは、「オブジェクト名.メソッド」という形で呼び出します。この例

EditMessage.Clear

は、EditMessageClear メソッドを呼び出しています。

コラム-メソッド、オブジェクト、オブジェクト指向プログラミングについて

これまで、フォームやエディットなどのコンポーネントには、プロパティがあることを学習して来ました。プロパティは、色や高さや幅等々、そのコンポーネントの「性質」を指定するためのものでした。実は、これらコンポーネントには、プロパティという“静的性質”に加えて「メソッド」と呼ばれる“動的操作”が定義されています。上の例でいうと、 close はフォームに対して定義されているメソッドであるという訳です。

ところで、メソッドとプロパティを有するモノを“オブジェクト”と呼びます。そしてオブジェクトを組み合わせてプログラムを作成するという考え方を“オブジェクト指向プログラミング”と呼びます。オブジェクト指向プログラミングの世界では、プロパティやメソッドを

オブジェクト名.プロパティ    オブジェクト名.メソッド

という形式で表します (ドット記法と言います)。予め、このようにプロパティやメソッドが定義されていればプログラムの開発効率が上がる事は皆も容易に理解できるでしょう。

さて、ここまで説明すると皆は、コンポーネントがオブジェクトであったこと、そしてそれを組み合わせてプログラミングを行う Delphi は“オブジェクト指向プログラミング”に則ったプログラム開発環境である事に気づいたと思います。きわめて簡略化した説明ですが、とりあえず、“オブジェクト指向”という言葉の意味をこのように大まかに捉えておいてください。

エディットに予め備わっているメソッドは、Clear 以外にも何十個もありますが、その全てを紹介すると紙面も時間もかかるので、この教科書では今後も代表的なものしか紹介しません。そこで、「他にはどういうメソッドがあるのだろう?」と興味を持ったあなたのために、メソッドの調べ方を説明しておきましょう。

コンポーネントパレットの中から、調べたいものをクリックし、「F1」を押します。(左の画面はエディットについて調べる例です。)
すると、そのコンポーネントに関するヘルプが表示されるので、「メソッド」をクリックします。
すると、エディットのメソッド一覧が表示されるので、目的のメソッドをクリックします。
こうして、目的のメソッドの説明が表示されます。説明は難しい内容であることが多いですが、この教科書を読み進んでいくとある程度分かるようになります。

メソッドだけでなくプロパティについても同様の方法で調べることができます。