Q3:p48と56であえてdoClick( )を選択しているのは何故なのでしょうか。
Q3-1:
活用編p48と56で「選択解除」のボタンに接続されているイベントを実行させたいときそのイベントよりも前に配置してあるボタンでdoClick( )のメソッドを設定しています。電卓の箇所では、doClick( )を選択せずとも接続先につながっているコンポーネントが実行された後、その下に配置してあって、そのコンポーネントが接続元になっている
接続元----イベント-----接続先が実行されていました。p48と56であえてdoClick( )を選択しているのは何故なのでしょうか?ボタンと処理部品の違いがあるためでしょうか?
A3-1:
[ボタン(Key:選択解除)]が実行画面上で押されるか「メソッド:doClikck()」が実行されない限り、[ボタン(Key:選択解除)]の「アクションイベント」に繋がる処理は行われません。
恐縮ですが、質問がございます。
Q1:ご質問の中に「そのイベントよりも前に配置してあるボタン」
「その下に配置してあって」とありますが、アプリケーションビルダー上の左側コンポーネントの並び順は処理の順番に関係があるとお考えでしょうか。
Q2:アプリケーションファイル上に描いてある処理は、「実行」ボタンを押して実行後、必ず行われるとお考えでしょうか。
1)左側(接続元)コンポーネントの上下の並び順は、処理の順番とは関係がありません。自由に入れ替えることができます。
2)同じコンポーネントの同じイベントに繋がっている右側(接続先)処理(メソッド)は、上から順番に実行されていきます。
3)アプリケーションビルダーのファイル内に描いてある処理でも、必ず行われるとは限りません。
例)[テーブル]「データ更新イベント」に繋がる処理
テーブルが変更されない限り、「データ更新イベント」に繋がる処理は行われない。
ご質問頂いて、処理の順番に関して、詳しくご説明する必要があるかと思い、お伺いする次第です。
Q3-2:
> Q1:ご質問の中に「そのイベントよりも前に配置してあるボタン」 「その下に配置してあって」とありますが、アプリケーションビルダー上の左側コンポーネントの並び順は処理の順番に関係があるとお考えでしょうか。
doClickなどの処理を意図的に実施させるメソッドがない限り、上から順に実施されると考えておりました。間違いなのでしょうか。添付しましたファイルの実施順番のDからEがそれに該当すると考えておりました。
> Q2:アプリケーションファイル上に描いてある処理は、「実行」ボタンを押して実行後、必ず行われるとお考えでしょうか。
おこなわれないと考えております。その処理が実施されるメソッドがないと実施されないと考えております。
doClickがなくとも実行されるイベントとして、関連ファイルの順番の@からAがそれに対応していると考えておりました。これは、サブルーチンのため特異なのでしょうか?
関連ファイル:電卓.pdf
A3-2:
MZ Platformのアプリケーションは、以下の規則により動作いたします。
・コンポーネントが発生するイベントをきっかけとして、イベントに接続されているメソッドが実行される。
・同一のイベントに接続されている複数のメソッドは、上から順に実行される。
また、以下の点に注意が必要です。
・メソッドには、「イベントを発生させる」という動作をともなうものがある。
これらにつきましては、2009/08/28にお送りしたメールにて詳しく説明してあります。ご参考までに本メールの末尾に引用しましたので、ご覧ください。
以上に基づき、ご質問に回答させていただきます。
>> Q1:ご質問の中に「そのイベントよりも前に配置してあるボタン」「その下に配置してあって」とありますが、アプリケーションビルダー上の左側コンポーネントの並び順は処理の順番に関係があるとお考えでしょうか。
>
> doClickなどの処理を意図的に実施させるメソッドがない限り、上から順に実施されると考えておりました。間違いなのでしょうか。
> 添付しましたファイルの実施順番のDからEがそれに該当すると考えておりました。
お送り頂いた資料で、Dの次にEが実行されるのは、それが順番に記述されているからではありません。Dで実行される算術演算子コンポーネント格納変数[ID:20]の「演算子を設定する(PFArithmeticOperator)」メソッドは、実行時にデータ設定イベントを発生します。Eのメソッドは、そのデータ設定イベントに接続されていますので、結果としてDの次にEが実行されることになります。
繰り返しとなりますが、Dの下にEが記述されているから順番に実行されるわけでは決してありません。
>> Q2:アプリケーションファイル上に描いてある処理は、「実行」ボタンを押して実行後、必ず行われるとお考えでしょうか。
>
> おこなわれないと考えております。その処理が実施されるメソッドがないと実施されないと考えております。
>
> doClickがなくとも実行されるイベントとして、関連ファイルの順番の@からAがそれに対応していると考えておりました。これは、サブルーチンのため特異なのでしょうか?
Aは、接続元であるサブルーチン[ID:21]が発生するアクションイベントをきっかけとして実行されます。そのアクションイベントは@、すなわちサブルーチン[ID:21]の「処理を呼び出す()」メソッドの実行により発生します。
@は、接続元である算術演算子コンポーネント格納変数[ID:19]が発生するデータ設定イベントをきっかけとして実行されます。そして、算術演算子コンポーネント格納変数[ID:19]のデータ設定イベントは、その「演算子を設定する
(PFArithmeticOperator)」メソッドの実行により発生します。算術演算子コンポーネント格納変数[ID:19]の「演算子を設定する(PFArithmeticOperator)」メソッドは、お送り頂いた資料の上の方に記述されているボタン(ID:9, ID:23,ID:26, ID:24)のアクションイベントに接続されていますので、これらのボタンのクリックにより、実行されます。
すなわち、@そしてAが実行されるまでの過程をたどると以下のようになります。
(1) ボタン(ID:9, ID:23, ID:26, ID:24)のクリックにより、アクションイベントが発生。
(2) ボタンのアクションイベントに接続されている算術演算子コンポーネント格納変数[ID:19]の「演算子を設定する(PFArithmeticOperator)」メソッドの実行。これにより、算術演算子コンポーネント格納変数[ID:19]からデータ設定イベントが発生。
(3) 算術演算子コンポーネント格納変数[ID:19]のデータ設定イベントに接続されている@の実行。これによりサブルーチン[ID:21]からアクションイベントが発生。
(4) サブルーチン[ID:21]のアクションイベントに接続されているAの実行。
何のきっかけ(イベントの発生)もなくメソッドが実行されることはありません。ただし、イベントの発生を伴うメソッドを実行した場合には、処理順序を見失いやすくなることも事実ですので、この点、ご注意お願いいたします。