« おばけつぶやき帳 | トップページ | おばけつぶやき帳 »

2008年5月 5日 (月曜日)

第3回 手順2

さて連載も3回目になりました(実質は2回目か?)。今回は手順2という事で、実際のスクリプトを取り上げます。


Itoh003



手順2

フィールドの作成が終わると、次はこのフィールドに値を入れて計算を実行することになります。その計算をさせるためのプログラムをRunRevではスクリプトと呼ぶわけです。さて、そのスクリプトをどこに書けば良いかというのが初心者の迷うところでは無いでしょうか?
最も簡単な方法としては、今度はボタンを一つ作って、そのボタンに計算用のスクリプトを書き込むことです。(つまりは、スクリプトを書く場所は幾つかあるということです。)

Itoh003

ボタンの作り方は知っているものとして話を進めます。ボタンを作ると上図のようになりますが、作ったばかりではボタンには名前を付けていないので、上図のようにボタンに「計算」という名前は表示されません。そこでボタンに名前を付けることにします。

フィールドと同様の方法でボタンにも名前を付けることができます。ここではボタンの名前を「KeiSan」とします。
フィールドと異なり、ボタンには名前以外にラベル(Label)をつけることができます。名前とラベルの違いは、名前はスクリプトで参照して使うことができますが、ラベルは表示のためだけに使われ、スクリプト内で参照のために使うことはできません。(ここ重要です)また、ラベルには(現時点でも)漢字・日本語を使うことができます。ここではラベルに漢字で「計算」と設定します。巧くいけば上図のようになるはずです。

問1で使った式をスクリプトで表すわけですが、スクリプトでは計算式をフィールド名と演算子(operator)を使って表現します。問1の図をフィールド名と演算子を使って表すと次の様になります。しかし、この式をそのままスクリプトとして書いてもボタンは機能しません。エラーになります。

(fld “BaiKa2” - fld “GenKa”) / fld “BaiKa1” = fld “NeIre”
この「計算」ボタンを機能させるためには二つのポイントがあります。 一つは、何を計算するかを決めること もう一つは、ハンドラ(handler)を使うこと です。

「何を計算するか」は重要なことです。スクリプトには達成したい目的がなければ意味がないのです。スクリプトを実行させることでどんな結果を得たいのか……それが目的です。ここでは取り敢えず「値入率」を求めること、を目的とします。この目的を達成するためのスクリプトは次の様になります。

on mouseUp
put (fld “BaiKa2” - fld “GenKa”) / fld “BaiKa1” into fld “NeIre”
end mouseUp

このスクリプトは;マウスボタンが放されたら、fld “BaiKa2” - fld “GenKa”の結果をfld “BaiKa1”で割った値をfld “NeIre”に入力し表示しなさい;という意味です。

このスクリプトは“on”で始まり“end”で終了する“mouseUp”ハンドラと呼ばれ、ボタンをクリックした時、クリックされたマウスボタンが上がった(放された)時、に機能します。ということは、マウスボタンを押したまま(放さないで)、この“mouseUp”ハンドラの書かれたボタンからマウスポインターを遠ざけると、このスクリプトは機能しません(実行されません)。これは些細な事ですが非常に重要な事です。

私も二十年以上前にハイパーカードでスクリプトを書き始めたときに、mousuUpとmouseDownの区別がつきませんでした。マウスボタンが押された時と放された時、等と説明されても「同じ事じゃん……どうせ押したものは放さなきゃダメなんだから」などと思ったものです。でも暫くすると区別されている事には意味がある、という事が判ってきました。

ここで初めて「put」というランタイム・レヴォルーションのコマンドが出てきて、いよいよスクリプトらしくなってきました。コマンドというものがどんなものなのか、また先に言及したハンドラとはどんなものかは後述します。

コマンドというのは簡単に言えば「命令」「指令」のことで、スクリプトで何か実行させる時に使われるものです。ほとんど全てのスクリプトにはこのコマンドが一つはある、と考えて良いものです。
さて「put」コマンドはどんな「指令」をするかといえば;Use the put command to set the value of a variable, put text into a field, put data into a file, display text in the message box, or upload a file to a server.ということになります。つまり「変数の値を設定したり、フィールドにテキストを入力したり、ファイルにデータを入力したり、メッセージ・ボックスにテキストを表示したり、サーバーにファイルをアップロードしたりする時に put コマンドを使います」ということです。

|

« おばけつぶやき帳 | トップページ | おばけつぶやき帳 »