4D v16.3

コンポーネントのインストールと互換性

ホーム

 
4D v16.3
コンポーネントのインストールと互換性

コンポーネントのインストールと互換性  


 

4Dデータベースにコンポーネントをインストールするには、ホストデータベースのComponentsフォルダーにマトリクスデータベースのストラクチャーをコピーします。Components フォルダーは以下二つの場所に配置できます:

  • 4D実行アプリケーションレベル: この場合、そのコンポーネントはそのアプリケーションで開かれたすべてのデータベースで利用できます。
  • データベースストラクチャーファイルレベル: この場合、コンポーネントはそのデータベースでのみ利用できます。

これに関する詳細はPlugInsおよびComponentsフォルダーの場所を参照してください。

4D はComponentsフォルダー内で、.4db ( インタープリターマトリクスデータベース)、 .4dc ( コンパイル済みマトリクスデータベース) または .4dbase( パッケージタイプのマトリクスデータベース) マトリクスデータベースを探します。データファイルやユーザーストラクチャファイル (.4DA) などは無視されます。これらのマトリクスデータベースのショートカットやエイリアスを使用できます。これはコンポーネントの開発時に便利です。マトリクスデータベースに対する更新はすぐにホストデータベースで有効になります。

Components フォルダーには、(xliff, ピクチャーなど) コンポーネントの動作に必要なカスタムファイルやフォルダーを置くことができます。他方、プラグインやComponent サブフォルダーを置くことはできません。これらが置かれていた場合、4D はそれらを無視します。
コンポーネントで使用されるプラグインは、ホストデータベースかまたは4D にインストールします。

インタープリターモードで動作するホストデータベースは、インタープリターまたはコンパイル済みどちらのコンポーネントも、またUnicode モードであっても無くても、使用できます。一つのホストデータベースに、インタープリターとコンパイル済み両方のコンポーネントをインストールできます。しかし、複数のコンパイル済みコンポーネントが存在する場合、それらは同じUnicode のモードで実行されなければなりません。

コンパイルモードで実行されるホストデータベースでは、インタープリターのコンポーネントを使用できません。この場合、コンパイル済みコンポーネントのみが利用可能です。またUnicode のモードはホストデータベースとコンポーネントで同じでなければなりません。

以下の表でこの点についてまとめます:

インタプリターコンポーネントコンパイル済みコンポーネント
Unicode非UnicodeUnicode非Unicode
インタープリターホストデータベースUnicodeOOO (*)O (*)
非UnicodeOOO (*)O (*)
コンパイル済みホストデータベースUnicode--O-
非Unicode---O

(*) 複数のコンパイル済みコンポーネントがインストールされる場合、それらは同じUnicode モードで動作しなければなりません。

注:

  • インタープリターコンポーネントがインストールされたインタープリターホストデータベースは、それがインタープリターコンポーネントのメソッドを呼び出さなければコンパイルできます。そうでない場合、コンパイル... メニューを選択すると、警告ダイアログが表示され、コンパイルはできません。
  • Iインタープリターメソッドはコンパイル済みメソッドを呼び出せますが、逆はできません。これを行うためにはEXECUTE METHODEXECUTE FORMULAコマンドを使用します。

コンポーネント間及びホストデータベースとコンポーネント間の相互作用についてはコンポーネントとホストデータベースの相互作用を参照してください。

Mac OS で開発されたインタープリターコンポーネントをWindows 環境にインストールすること、及びその逆が可能です。他方、コンパイルされたコンポーネントは、コンパイルされたのと同じプラットフォームでのみ利用可能です。両プラットフォームで利用可能
するためには、両プラットフォーム用にコンパイルします。

サーバーデータベースにインストールされたコンポーネントは、プラグインと同様のメカニズムを使用して、自動でクライアントマシンに転送されます。

クライアント/ サーバーモードで、クライアント側のコンポーネントのコピーを更新することはお勧めできません。変更はローカルに保存され、サーバーマシンのコンポーネントは更新されません。

コンポーネントはホストデータベースが開かれるときにロードされます。

  • コンポーネントが一致しないコンパイル済みコードとインタープリターコードを含んでいる場合、エラーメッセージが表示され、そのコンポーネントはホストデータベースにロードされません。
  • 起動時にコンポーネントが見つからない場合、ホストデータベースは開かれずエラー -10509 (データベースを開けません) が生成されます。データベース起動時にCOMPONENT LISTコマンドを使用してコンポーネントの存在をチェックできます。特定のコンポーネントの有無にかかわらず実行可能なホストデータベースを開発したい場合、以下のコードを使用します:
     ARRAY TEXT($arrComponents_Txt;0)
     COMPONENT LIST($arrComponents_Txt)
     If(Find in array($arrComponents_Txt;"ComponentA")>0) // コンポーネントAは存在しなくてもよい
        EXECUTE METHOD("ComponentAMethod")
     End if

コンポーネントは、ホストデータベースを開いたときまたは閉じたときに、自動的に4Dコードを実行することができます。これによって例えば、ホストデータベースに関連する設定やユーザーの状態などを読み出し・保存することができます。

初期化やデータベースを閉じるコードの実行は、 On Host Database Event データベースメソッド を使用して行われます。詳細な情報に関しては、4D Language Reference マニュアル内のこのコマンドの詳細を参照して下さい。

セキュリティ上の理由から、このデータベースメソッドを使用可能にするためには、その実行をホストデータベースで明示的に許可する必要があります。詳細に関しては、 35P "4D components" を参照して下さい。

セキュリティ上の理由から、このデータベースメソッドを実行するためには、ホストデータベースにおいてその実行が明示的に認証されなければなりません。このためには、データベース設定画面の セキュリティページ ページ内の、"コンポーネントの "On Host Database Event" メソッドを実行"のオプションにチェックを入れます:


他の共有オブジェクトと異なり (共有及び非共有オブジェクト参照)、共有プロジェクトメソッドはデータベースに" 物理的に"存在します。つまりコードの実行時に作成されるわけではありません。

ゆえに、コンポーネントの共有プロジェクトメソッドと、ホストデータベースのプロジェクトメソッドが同じ名前を持つと、名前の衝突が発生します。この場合、ホストデータベースのコンテキストでコードが実行されると、ホストデータベースのメソッドが呼び出されます。これはつまり、コンポーネントメソッドをカスタムメソッドで"マスク" して、例えば異なる機能を実装することが可能であることを示しています。
もちろん、コンポーネントの中でコードが実行されている場合は、コンポーネントのメソッドが呼び出されます。

このマスキングは、ホストデータベースのコンパイル時に警告によって通知されます。

注: 2つのコンポーネント間で共有メソッド名に衝突があった場合、ホストデータベースをコンパイルする際にエラーが生成されます。

 
プロパティ 

プロダクト: 4D
テーマ: 4Dコンポーネントの開発とインストール

 
履歴 

 
ARTICLE USAGE

デザインリファレンス ( 4D v16)
デザインリファレンス ( 4D v16.1)
デザインリファレンス ( 4D v16.3)