Q10:MZのアプリケーション作成したプログラムを別のMZのアプリケーションから起動する場合、良い方法はありますか?
Q10-1:
MZプログラム開発について質問です。MZのアプリケーション作成したプログラムを別のMZのアプリケーションから起動する場合、良い方法はありますか?コンポーネントとして利用しようとしましたが、ロードできませんでした。現在、PFLoader.exe プログラム名で起動しています。この場合PFLoaderがいくつも立ち上がってしまうような気がするのですが、どうなのでしょうか。どのようにすれば、細かく分けたアプリケーションを組み合わせられますか?
A10-1:
1.[外部プログラム通信]コンポーネントを使用し、保存されているアプリケーションファイルを起動することができます。
MZPlatformインストール時にPFLoader.exeへのファイルの関連付けがされていますので、「メソッド:標準アプリケーションでファイルを開く(File)」で起動することができます。
MZPlatformのアプリケーションだけでなく、PDFやWordファイルなども関連付けられたプログラムで開かれるようになっています。
以前作成したサンプルファイルがございますので、本文下部の関連ファイルへ掲載致します。
サンプルでは[ファイル選択]コンポーネントを使用していますが、引数を「取得方法:固定値」で「メソッド/値」にファイルまでのパスを書いても動作します。
但し、現在のところPFLoader.exeで起動したアプリケーションをメインのアプリケーションから終了させることはできません。終了時には各アプリケーションをそれぞれ閉じて頂くことになります。
2.複合コンポーネント内に保存済みのアプリケーションファイルを収める場合、
@ビルダー上に複合コンポーネントを追加する。
A複合コンポーネント内に入り、「挿入」ボタンを押し、保存済みのファイル挿入する。
という手順で行えますが、元々[アプリケーション]コンポーネントを接続元あるいは接続先としていた処理があった場合、処理が消えてしまうという問題が起こります。
関連ファイル(5課8課複合.mzax)をご覧下さい。
a.「Lesson5(電卓)」のように「アプリケーション開始イベント」に繋がっている処理が「フレームを表示する」だけの場合は、特に事前の変更は必要なく、複合コンポーネント内にファイルの内容を挿入後、「メソッド:フレームを表示する」公開し、上位の階層で必要に応じて呼び出します。
b.「Lesson8(気温グラフ)」のように、「アプリケーション開始イベント」に幾つかの処理が接続されている場合は、そのまま挿入すると全て消えてしまいますので、事前に他のコンポーネントに繋ぎ変えておきます。
処理を纏めるコンポーネントには[サブルーチン]、[ファンクション]などがあります。
[サブルーチン]の主なメソッドは「処理を呼び出す()」と「イベントを渡して処理を呼び出す(PFEvent)」です。
「処理を呼び出す()」を実行すると[サブルーチン]から「アクションイベント」が発生するので、[サブルーチン]のアクションイベントに処理を繋ぎます。
複合コンポーネント内にファイルの内容を挿入後、サブルーチンのメソッド「処理を呼び出す()」を公開します。
以上、比較的簡単な構造のファイルについて考えておりますので、お手元のファイルで上手く動作しないなどございましたら、再度ご連絡頂ければ幸いです。
関連ファイル:外部プログラム通信(関連ファイルOpen).mzax、5課8課複合.mzax
備考:「一般的な質問」の「Q&A75」にも掲載。