Q127:コンポーネントの属性MultiLocaleTextを利用して、日本語と英語の表記ができるアプリケーションを作成しようと思っております。
Q127-1:
MZプラットフォームのコンポーネントの属性MultiLocaleTextを利用して、日本語と英語の表記ができるアプリケーションを作成しようと思っております。
文字列型のメソッド引数に、実行時ロケールにあわせた文字列を設定したい場合には、「ラベル」に文字列をいったん格納し、「ラベルのテキスト文字列を取得する」を利用しております。
アプリケーションファイルのサイズをできるだけ小さくしたいため、もし、PFMultiLocaleStringオブジェクトのほうがサイズが小さく、ビルダー上で使えるようにできるのであればラベルではなく、PFMultiLocaleStringクラスを使いたいのですが、可能でしょうか。
A127-1:
[ラベル]以外では、画面構成部品[リスト]を使って頂くのが簡単かと存じます。
PFMultiLocaleStringオブジェクトのリストの設定/取得ができます。
データの設定はロケールを切り替えて2回行うのが一番簡単です。
ファイルサイズに関しては、100の要素を持つ[リスト]を一つと、MultiLocaleTextを設定した[ラベル]100個を、それぞれアプリケーション保存したところ、[リスト]が200KB、100個の[ラベル]が230KBと、それ程大きな差は出ませんでした。
よりファイルサイズを小さくしたい場合には、一旦別のアプリケーションで[リスト]からメソッド「getMultiLocaleTextItems()」でPFMultiLocaleStringを要素に持つリスト型データを取得し、
[オブジェクト実体]コンポーネントに設定した後、[オブジェクト実体]を実際のアプリケーションにコピー&ペーストして利用することも考えられます。
上記で試した[リスト]のデータを[オブジェクト実体]に設定し、それのみをアプリケーション保存した場合、ファイルサイズは50KB程度になりました。
基本的に変数等、GUI部品以外のコンポーネントはアプリケーション終了後に内部のデータは消えてしまうか、デフォルト値に戻りますが、[オブジェクト実体]に設定したデータは消えずに保存されます。
PFMultiLocaleStringオブジェクトそのものを操作したい場合には、[オブジェクト生成]で引数にクラスのフルパス名を指定して「オブジェクト生成(String)」を行い、そのオブジェクトを[オブジェクトバッファ]に入れて「メソッド起動(Object)」など行うという方法もあります。
ただし操作性は良いとは言えませんし、結局はオブジェクトを[リスト格納変数]等に一旦入れることになるかと思います。
[リスト]でしたら[テーブル]からのリスト型データ設定も容易ですし、宜しければ一度お試し下さい。