第4回 プログラムは奥深く「1.画面のイベント」

4−1 画面のイベント

BASIC講座も第4回となりました。
内容的には、まだまだハンドブックの1割くらいしか紹介していませんが、アイディア次第で十分にアプリケーションになりますので、是非、チャレンジしてみてください。

 さて、前回は、似ている部分を共通モジュールにして、Callコマンドで呼び出す方法を説明しました。その時、引数を介してモジュール側に値を渡していましたね。これを図に表すと、このようにぐー、ちょき、ぱー、の各ボタンが、1つの部品を共用しているイメージになりますね。

    

これによって、変更が容易になり、プログラムもスッキリすることがわかりました。
このような方法は、通常のBASICでは一般的な方法で、良く使われます。しかし、NS Basicでは、もう少し特殊な方法を使って同じような動作を実現することができます。
今回は、ちょっと特殊ですが、この方法の紹介からはじめたいと思います。

NS Basicには、ボタンやビットマップなど、様々なオブジェクトが用意されていますが、これらは、大抵の場合、発生したイベントによって何らかの処理行わせるプログラムを組み込むことができますね。
今まで作ってきたサイコロやジャンケンは、全て「タップした」イベントによって処理がされていましたので、この点は理解されていると思います。

さて、これらのオブジェクトは、常に画面上に配置してきましたが、実は、この画面も「スクリーン(Screen)」オブジェクトという1つのオブジェクトであり、やはり、イベントによる処理が可能です。
したがって、そのオブジェクト、つまり画面をタップすることで、タップイベントが発生し、その他のオブジェクトと同じような処理が可能ですが、スクリーンは、「タップ」以外に特殊なイベントをチェックできるようになっています。

特殊なイベントは、スクリーン自体の役割に大きく関係しています。 スクリーンは、ボタンやラベルなどの色々な部品が置かれているいわば、プログラムの土台とも言えますが、この土台はプログラムを実行する時に必ず「表示」されますね?

「あったり前ジャン、表示されなきゃ始まらないよ」

その当たり前のように画面に表示される動作に対して、スクリーンには「イベント」が発生します。
具体的には、次の2つです。

   The Screen Before
   The Screen After

これらは、Palmデバイスの画面上にスクリーンが表示される前後で発生します。
Beforeが画面に表示される前、Afterが表示された後です。

画面が表示される、といえば、それはプログラムの開始時、ですね。
そう、プログラムを起動する時には必ず、2つのイベントが発生しています。

では、コードを入れて早速試してみましょう。
コードを入れるには、ボタンなどのオブジェクトの場合、右クリックで[View Code]でしたね。
しかし、スクリーンでは、右クリックすると[View Before Code]、[View After Code]、[View Events Code]の3種類表示されます。
これは、イベントが3種類あるからで、当たり前といえば当たり前ですね。

    

では、サイコロゲームやジャンケンゲームのスクリーンで、Afterに次のようなコードを入れてみましょう。
    MsgBox "Welcome!"
そうすると、起動時にWelCome!が表示されるようになり、イベントが発生しているのがわかると思います。
ボタンなどと違って、タップしなくても勝手にイベントが発生するので、リストボックスなどの項目を入れたり、ラベルの表示を設定したりする「初期設定」的な使い方をするのが一般的です。
したがって、通常は、画面上に何らかのオブジェクトが表示されている状態であるAfterの方を使います。 図式的は、こんな感じですが、まぁ、Beforeの時にはスクリーン上に何もありませんから、初期設定も出来ませんので、通常はAfterを使うという理由が理解できるのではないでしょうか?

    

ということで、画面上のオブジェクトの初期設定などには使えることがなんとなく理解できますが、イベント自体は勝手に発生しますので、それ以外の利用価値は無いように思われます。 しかし、この画面を表示するイベントは画面を「再描画」する時にも発生します。そして、そのイベントは「Redraw」コマンドを使ってプログラム内で意図的に発生させることができます。

このRedrawを使って様々な処理を考えることができますが、例えば、ちょっとした共通モジュールをこのRedrawコマンドを使って実現することができます。
前回のジャンケンゲームでは、1つを共通モジュールを用意しましたが、今回はこれをRedrawを使った方法に置き換えていこうと思います。



目次へ     次へ

第4回 プログラムは奥深く「1.画面のイベント」