Q170:コンポーネントを差替える方法でよい方法はないでしょうか?
Q170-1:
例えば、複数のアプリケーション間で共通で利用している複合コンポーネントで、その複合コンポーネントに修正がある場合、使用しているアプリケーションすべてで差替えを行う必要があります。
1.コンポーネントを削除
2.修正済のコンポーネントを追加
という手順では、アプリケーションで設定されていた処理やイベントがすべて削除されてしまうため、再設定に手間がかかります。
(実際は1の時に自分で関連付けをすべて外すことになると思いますが)
上記の例では複合コンポーネントですが、ラベルからテキストへの変更や、ファンクション1からファンクション2へ切替るなど簡単に行う方法がないでしょうか?
(もちろん使用しているプロパティ、メソッドが同じなのが前提です)
A170-1:
1)まず全てのコンポーネントに言える事ですが、
> 1.コンポーネントを削除
> 2.修正済のコンポーネントを追加
の順番ではなく、
1.代替の新しいコンポーネントを追加
2. 接続先を右クリック>接続先コンポーネント選択で、元のコンポーネントが接続先となっている箇所を新しいコンポーネントへ変更
3.イベントに繋がっている起動メソッド処理をコピー&貼付け
4.[メソッド起動位置検索...] メニューで確認し、引数で使用されている箇所を変更
5.元のコンポーネントを削除
という順番をお勧め致します。
接続先を変更しても、コンポーネント種類が同じであればメソッドは消えません。[ラベル]→[テキストフィールド]の場合でも、同じメソッド(例:setText(String))を使用している場合には、接続先の変更だけで、メソッドを再設定する必要はありません。
ですが、引数として「取得方法:メソッド戻り値」で使用されている場合には、「コンポーネント欄」を変更すると、「メソッド/値欄」は空欄となってしまうので注意が必要です。
現在のところ引数に空欄が生じていないかは、接続先にマウスポインターを置いた時に現れるポップアップ等で確認するようになっていますが、本年末にリリース予定のMZPlatform次期バージョンでは、メソッドや引数が未設定の接続処理は編集画面上で灰色に表示されるようになり、より把握し易くなるかと存じます。
※Ver.2.10より、メソッドや引数が未設定の接続処理は、編集画面上で灰色に表示されるようになりました。
2)複合コンポーネントには「外部参照機能」がございます。
@先に複合コンポーネントのみを保存し、保存フォルダへの相対パスを
\MZPlatform\2.9\etc\platform.iniに記述します。
(CombinativeComponentsFolder=AP_DATA_COMBが初期設定してあります。
適宜書き換えてお使いください)
A複合コンポーネントの属性情報設定画面で[ReferenceEnabled]を「true」に変更し、[Reference]欄にファイル名を書きます。
詳しくは、アプリケーションビルダー操作説明書P1117-118をご覧ください。
注意点としては、外部参照されている複合コンポーネントは、保存の対象にならない仕様となっているので、複合コンポーネント内の編集を保存するためには以下の2つの方法が考えられます。
(1)複合コンポーネントの[ReferenceEnabled]を「false」にしてから、その複合コンポーネントのみを同名で保存し、[ReferenceEnabled]を「true」に戻す。
(2)複合コンポーネントを設定するためのアプリケーションを他に作成し、そちらから複合コンポーネントのみを保存する。
外部参照には「元になる複合コンポーネント」、「platform.iniへの記述」が常に必要となるため、例えば開発時には外部参照機能をお使いになり、最終的に通常の形式で保存というのも一案かと存じます。