目次に戻る。

05.トリプルクリックを実装しよう。(前編)

 0.「サービスパック1」が出ているみたいです。
  こういうものは、早めにネットでダウンロードし、アップデートしときましょう。
   「http://www.borland.co.jp」

 1.なるたけものぐさで、動作させるため、トリプルクリックまでを実装したいと思います。
  機能の仕様案:
   左シングルクリック : 画像切り替え(次の画像表示)
   左ダブルクリック  : 画像拡大(クリック位置中心に画像の拡大)
   左トリプルクリック : 画像縮小(クリック位置中心に画像の縮小)
   右シングルクリック : 画像ファイル読み込み
   右ダブルクリック  : 設定フォームの表示
   右トリプルクリック : プログラム終了

  ダブルクリック以上の実現方法は、いろいろ考えられるとおもいますが、
   以下のように実装していこうと思います。

  クリックされてから、次のクリックまでにタイムアップしなければ、連続クリック中とします。
  つまり、クリック後タイマーをセットし、タイムアップしないうちに次のクリックがあれば、
   タイマーをリセット、クリックをカウントします。
    また、タイムアップした時点でのクリック数に応じて処理を分岐します。
     これなら、トリプルクリック以上も実装は簡単です。
 2.まずは、イベントハンドラーを作ってみましょう。
  これは、クリックされたり、なにか状態が変わった場合に、実行される「関数」や「手続き」のことです。
   Object Pascal では 
    「関数」:実行すると値を返すルーチン
    「手続き」:値を返さないルーチン
  オブジェクト インスペクタのタブをクリックし、イベントを見ます。
   「TForm」が持っている各種イベントがあります。イベント名をクリックし、
    「F1」キーヘルプでどんなものがあるのか、確認しといてください。
 3.イベントの「OnMouseDown」の右側をダブルクリックします。
  すると、エディタにソースが追加され、カーソルが現れます。
   ここに、コードを入力すると、マウスが押された時にそれが実行されます。
 4.以下のコードを入力して、実行「F9」し、フォームをクリックすると、フォームの上の文字が、
  「FormMyViewer」から、「クリックされたよ」に変わります。
  確認できたら、フォームを閉じると、Delphiが復活します。
  コードの意味は、各コードをクリックし、「F1」キーでヘルプを参照してください。

procedure TFormMyViewerMain.FormMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  Self.Caption := 'クリックされたよ';
end;

  入力する部分は、「Self.Caption := 'クリックされたよ';」だけです。
 5.ところで、先に入力したソースコードのみを消して、「全て保存」をしてみてください。
  すると、エディタに追加されていたイベントハンドラのソースが、なくなります。
   つまり、Delphiが追加した、中身のないイベントハンドラは、コンパイルや保存時に削除されてしまいます。
    逆にいえば、いらないイベントハンドラは、中身だけ消せばいいのです。
     しかし、Delphiが追加した部分も消すと、Delphiにおこられます。
 6.次に、タイマーを追加してみましょう。
  「System」のタブをクリックすると、「TTimer」コンポーネントが見つかります。
 7.「TTimer」コンポーネントをクリックして、「F1」キーヘルプを確認しておいてください。
 8.「TTimer」コンポーネントをクリックした後、フォーム上の置きたい場所をクリックすることで追加できます。
 9.「Timer1」のプロパティを変更しときます。
  「Enabled」 を False <− タイマー停止状態で起動
  「Interval」 を 200 <− 200[ms] つまり 0.2秒
−−以上−−