Q2:@コンポーネントの実行順番。Aボタンからフィルタへ接続されているアプリケーションの画面では両者に差が見られず、理解できないでいます。
Q2-1:
複合コンポーネントに関し、アドバイスをいただきたくメールで伺う次第です。
1.コンポーネントの実行順番ですが、アプリケーションの一番左上のコンポーネントから接続されたコンポーネントが順番に実行されると理解していますが、正しいでしょうか?関連ファイルPDF(複合コンポーネントtutorial 住所録アプリケーション)に書きました順番で正しいでしょうか?(例として途中まで番号をつけてあります。)
2.このアプリケーションでは「平均年齢以上」のボタンが押された場合、複合コンポーネントフィルタのサブルーチンが実行、「指定年齢以上」のボタンが押された場合、ファンクションが実行されると理解しましたが、これは何をキーとして実行コンポーネントが分かれるのでしょうか?ボタンからフィルタへ接続されているアプリケーションの画面では両者に差が見られず、理解できないでいます。この例ではファンクションがひとつですが、複数ある場合、または複合コンポーネントのはじめのサブルーチンと独立したサブルーチンを設ける場合は何を接続する条件として設定すればよいのでしょうか?
関連ファイル:複合コンポーネント.pdf
A2-1:
二つのご質問に順に回答させていただきます。
> 1.コンポーネントの実行順番ですが,アプリケーションの一番左上のコンポーネントから接続されたコンポーネントが順番に実行されると
理解していますが,正しいでしょうか?関連ファイルPDF(複合コンポーネントtutorial 住所録アプリケーション)に書きました順番で正しいでしょうか?(例として途中まで番号をつけてあります。)
コンポーネントのメソッドの実行順序につきましては、「開発チュートリアル(基礎編)」の付録「MZ PLATFORMにおけるコンポーネント動作とメソッド起動」に詳細を記述してありますので、そちらを補足としてご参照ください。
「アプリケーションの一番左上のコンポーネント」は「アプリケーションコンポーネント」を示していると思いますが、ご提示のアプリケーションの起動時には、お送りいただいた画面の番号の順序で「1」-「2」までしか実行されません。
MZ Platformでは、いずれかのコンポーネントからイベントが発生したときに初めて、そのコンポーネントにつながれた右側のコンポーネントのメソッドが、上から順に実行されるようになっております。
アプリケーション起動時には、「アプリケーション」コンポーネントから「アプリケーション起動イベント」が発生するだけであり、上述のような動作になります。
お送りいただいた画面の番号「4」-「23」につきましては、ボタン(「平均年齢以上」、ID:5)が押された場合にはじめて、アクションイベントが発生し、実行されます。
念のためですが、ビルダー画面の左側のコンポーネントの順序はメソッドの実行順序とは無関係です。
> 2.このアプリケーションでは’平均年齢以上’のボタンが押された場合、複合コンポーネントフィルタのサブルーチンが実行、’指定年齢以上’の
ボタンが押された場合、ファンクションが実行されると理解しましたが、これは何をキーとして実行コンポーネントが分かれるのでしょうか?
ボタンからフィルタへ接続されているアプリケーションの画面では両者に差が見られず、理解できないでいます。
メソッド名が似ていてわかりにくいですが、ボタン(「平均年齢以上」、ID:5)が押された場合には、フィルタ複合コンポーネントの「平均年齢以上の住所録を作成する」、ボタン(「指定年齢以上」、ID:7)が押された場合には、フィルタ複合コンポーネントの「指定年齢以上の住所録を取得する」、という異なるメソッドがそれぞれ実行されます。
これらのメソッドは、複合コンポーネント内のサブルーチン(ID:4-1)、または、ファンクション(ID:4-7)のメソッドを、それぞれ、公開メソッドとして外部から起動できるように公開しております。
公開用に設定したメソッド名が、それぞれ、上述の「平均年齢以上の住所録を作成する」、「指定年齢以上の住所録を取得する」となっております。
それらメソッドが実行された際に、サブルーチンからはアクションイベント、ファンクションからは処理要求イベントがそれぞれ発生し、接続されているメソッドが順に実行されます。
メソッドの公開につきましては、複合コンポーネントチュートリアルのp.8、および、同ページ「操作手順3 複合コンポーネントの公開メソッドを設定する」をご覧下さい。
> この例ではファンクションがひとつですが、複数ある場合、または複合コンポーネントのはじめのサブルーチンと独立したサブルーチンを設ける場合は何を接続する条件として設定すればよいのでしょうか?
ファンクションやサブルーチンが複数ある場合においても、それぞれの起動したいメソッドについて、別名の公開名を設定して外部に公開することにより、外部からそれぞれのメソッドを区別して起動できます。
ご連絡:
まさにこれが知りたかったというご返答を頂き、感謝しております。 補足はプログラムの動作を的確に記述してあり、頭がスッキリしました。イベントドリブンであることは理解していたものの、必要なドキュメントを読んでいるだけではなかなか自信を持って理解できませんでした。 アプリケーションビルダーの説明書の始めにでも、プログラムの仕組みとして補足での記述があれば、理解を早められると思います。(どこかに記述があれば、私の勉強不足ですので、ご容赦ください。)
お返事:
貴重なご意見を頂きまして有難うございます。
アプリケーション動作の仕組みについて、開発チュートリアル基礎編のLesson.4や、アプリケーションビルダー操作説明書等に関連事項が記述されてはおりますが、ご指摘のように明確な記述が不足しております。
ご意見を参考に、今後のドキュメントの修正時に検討させていただきたいと存じます。
また、ご連絡を忘れておりましたが、先日ご連絡いただきましたガントチャートに関するいくつかのご指摘事項のうち、当方での検討の結果、非稼働時間の表示について、時間軸の小目盛間隔が「日」の場合にも、「分」単位で描画するよう修正することが決定いたしました。修正は次期バージョンに反映される予定です。
備考:「複合」の「Q&A17」にも記載。