Q70:動的な変数の確保について
Q70-1:
変数コンポーネントについてですが、動的に確保する方法を教えていただけますでしょうか。例えば最初から想定される最大数の変数を用意するのではなく、都度抽出する項目数ごとにリスト変数を確保するなど。またそういった使い方の場合、必要なくなった都度変数を解放した方がよいのでしょうか?(解放の方法は?)
A70-1:
変数または変数コンポーネントを動的に操作することは可能です。
ただし、その際、本当にMZプラットフォームのコンポーネントを動的に生成する必要があるか、検討が必要であると存じます。
単に動的にデータ等を操作したいということでしたら、コンポーネントまで動的に確保する必要がないかもしれません。
以下、変数(データ)を動的に操作する方法、コンポーネントを動的に操作する方法に分けて説明させていただきます。
(1)変数を動的に操作する方法
変数(データ)の管理方法に決まった方法はありませんが、例えば、リスト格納変数を用いますと変数の個数に応じた管理ができると思います。
リスト格納変数で取り扱うリストの要素は特に制約がございませんので、リストデータも設定することができます(この場合リストのリストになります)。
都度生成されるリストデータを、リスト格納変数内のリストの要素として追加していき、必要に応じて取り出して操作を行うことが可能です。
また、メモリの開放につきましては、リスト格納変数を用いて要素を削除し、その要素が他で使用されていなければ、自動的に開放されます。
ご参考のため、簡単なサンプルアプリケーションを作成し、本メールに添付いたしました(ファイル名「リストデータ動的操作サンプル.mzax」)。
このサンプルはチュートリアルで使用されている「Lesson15(テーブル機能拡張)-6.mzax」を拡張したものです。
拡張部分はフレーム下方のボタン3つの追加です。
「テーブルデータをリスト格納変数に設定」ボタンを押しますと上段のテーブルの行データを順に一行ずつリストデータとして取得し、リスト格納変数の要素として順に追加していきます。
この処理はテーブルの行数回、繰り返し行われます。
「リスト格納変数のデータをテーブルに設定」ボタンを押しますと、上述でリスト格納変数のリストの要素として設定された行データ(リストデータ)を順に上段のテーブルに追加していきます。
「メモリ開放」ボタンを押しますと、リスト格納変数から全要素を削除し、結果としてメモリが開放されます。
(2)コンポーネントを動的に操作する方法
変数コンポーネントに限らずコンポーネントの動的な操作を行うには、「動的アプリケーション構築」コンポーネントを用います。
動的アプリケーション構築を用いますと、動的にコンポーネントの生成・削除・接続等が可能です。
このコンポーネントに関するドキュメントは用意しておりませんが、インストールフォルダ\AP_DATA\Sample内にサンプルアプリケーションがございます。
ファイル名:DynamicApplicationSample.mzax
このサンプルでは、「アプリケーションを構築する」ボタンを押した際に、クラス名を指定してテキストフィールドとボタンをフレームに追加し、コンポーネント間を接続しています。
他のコンポーネントも同様に動的に追加・削除・接続等が可能です。
使い方が若干複雑ですので、必要に応じてご質問くださいますようお願い申し上げます。
関連ファイル:リストデータ動的操作サンプル.mzax
備考:「動的アプリケーション構築」の「Q&A1」にも掲載。