目次に戻る。
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秒
−−以上−−