ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com

ホーム

 
4D v20.2
コンポーネントの開発

コンポーネントの開発  


 

 

コンポーネントは4D データベースの形で構成されるので、コンポーネントの開発はデータベースへの機能実装と同じです。しかしながら、コンポーネントの持つ性質のため、制限や特別なルールがあります。

コンポーネントはプロジェクトメソッド, プロジェクトフォーム, メニューバー, 選択リスト, ライブラリピクチャーなど、4D のほとんどのオブジェクトを呼ぶことができます。

以下のオブジェクトのみ、コンポーネントで使用することはできません:

  • 標準のテーブルとフィールド (しかし外部データベースのテーブルやフィールドを作成し利用することはできます)
  • テーブルフォームとそのフォームメソッド ( 他方コンポーネントはホストデータベースのテーブルフォームを呼び出すことはできます)
  • ユーザーフォーム
  • データベースメソッドとトリガー

マトリクスデータベースにこれらの要素が含まれている場合でも、それらを削除する必要はありません。利用できないオブジェクトは単に無視されます。

注: マトリクスデータベースに設定されたユーザー&グループやアクセス権は、ホストデータベースでは無視されます。

コンポーネント側で" 共有" されているプロジェクトメソッドのみがホストデータベースのデザインモードに表示され、選択することができます。他方、ホストデータベース側で" 共有" されているプロジェクトメソッドをコンポーネントから呼ぶことが可能です。詳細はプロジェクト メソッドの共有を参照してください。

コンポーネントから公開されたフォームは、ホストデータベースのサブフォームとして組み込むことが可能です。この点の詳細はフォームの共有を参照してください。

他のコンポーネントオブジェクト (公開されていないプロジェクトフォーム、選択リスト、メニュー等) はコンポーネント内で使用することはできますが、ホストデータベースからストラクチャーオブジェクトとしてアクセスすることはできません。特定のオブジェクトはホストデータベースとコンポーネント間で共有され、その他のオブジェクトは共有されません。詳細は共有及び非共有オブジェクトを参照してください。

コンポーネントは4D アプリケーション又はホストデータベースにインストールされたプラグインを使用することができます。コンポーネントフォルダにプラグインをインストールすることはできません。

マトリクスデータベースのデータベースメソッドや、一般設定 (Web フォルダ, 環境設定, その他) は一切参照されません。

(読み込みのみで開かれるため) ストラクチャーファイルを更新する以下のコマンドをコンポーネントで使用することはできません。コンポーネント中で以下のコマンドを実行すると-10511, "CommandName コマンドをコンポーネントでコールすることはできません" のエラーが生成されます

ON EVENT CALL
Method called on event
SET PICTURE TO LIBRARY
REMOVE PICTURE FROM LIBRARY
SAVE LIST
ARRAY TO LIST
_o_EDIT FORM
_o_CREATE USER FORM
_o_DELETE USER FORM
CHANGE PASSWORD
EDIT ACCESS
Set group properties
Set user properties
DELETE USER
CHANGE LICENSES
BLOB TO USERS
SET PLUGIN ACCESS

注:

  • Current form tableコマンドは、プロジェクトフォームのコンテキストで呼び出されるとNil を返します。ゆえにこのコマンドをコンポーネントで使用することはできません
  • SQLデータ定義言語のコマンド (CREATE TABLEDROP TABLE等) をコンポーネントのフレームワークで使用することはできません。

ON ERR CALLコマンドによって実装されたエラー管理メソッドは、実行中のデータベースに対してのみ適用されます。コンポーネントによって生成されたエラーの場合、ホストデータベースのON ERR CALLエラー管理メソッドは呼び出されず、その逆もまた然りです。

  • 特定のテーブルに属さない" プロジェクトフォーム" のみが、コンポーネントで利用できます。マトリクスデータベースのすべてのプロジェクトフォームをコンポーネントで使用することができます。
  • コンポーネントはホストデータベースのテーブルフォームを使用できます。この場合、コンポーネントのコードでフォームを指定する際に、テーブル名ではなく、テーブルへのポインターを使用しなければならないことに注意してください。
    注:
    コンポーネントはADD RECORDコマンドを使用すると、ホストデータベースのコンテキストで、ホストデータベースのカレントの入力フォームが表示されます。フォーム上に変数が配置されている場合、コンポーネントはその変数にアクセスできません (コンポーネントとホストデータベースの相互作用参照)。
  • コンポーネントフォームをホストデータベースに対してサブフォームとして公開できます。これは特にグラフィックオブジェクトを提供するコンポーネントを開発できることを意味します。例えば4D社が提供するウィジェットはコンポーネント内でのサブフォームの利用に基づいています。この点についてはフォームの共有で説明しています。

コンポーネントはマトリクスデータベースのストラクチャーで定義されたテーブルやフィールドを使用することはできません。しかし外部データベースを作成し、そのテーブルやフィールドを必要に応じ利用することはできます。外部データベースの作成と管理はSQLを使用して行います。外部データベースは4Dデータベースで、主たる4Dデータベースからは独立していますが、主たる4Dデータベースから操作が可能です。外部データベースの利用は、一時的にそのデータベースをカレントデータベースにすることです。言い換えれば4Dが実行するSQLクエリのターゲットデータベースを切り替えます。外部データベースの作成はSQLのCREATE DATABASEコマンドを使用します。

外部データベースに関する詳細はエクスターナルデータベースについてを参照してください。

例題  

以下のコードはコンポーネントに実装されていて、外部データベースに対して3つの基本的なアクションを行います:

  • 外部データベースを作成します (まだ存在しなければ)。
  • 外部データベースにデータを追加します。
  • 外部データベースからデータを読み込みます。

外部データベースの作成:

 <>MyDatabase:=Get 4D folder+"\MyDB"
 Begin SQL
        CREATE DATABASE IF NOT EXISTS DATAFILE :[<>MyDatabase];
        USE DATABASE DATAFILE :[<>MyDatabase];
        CREATE TABLE IF NOT EXISTS KEEPIT
        (
        ID INT32 PRIMARY KEY,
        kind VARCHAR,
        name VARCHAR,
        code TEXT,
        sort_order INT32
        );
 
        CREATE UNIQUE INDEX id_index ON KEEPIT (ID);
 
        USE DATABASE SQL_INTERNAL;
 
 End SQL

外部データベースへのデータ書き込み:

 $Ptr_1:=$2 // ホストデータベースへのデータアクセスはポインターを通じて行う
 $Ptr_2:=$3
 $Ptr_3:=$4
 $Ptr_4:=$5
 $Ptr_5:=$6
 Begin SQL
 
        USE DATABASE DATAFILE :[<>MyDatabase];
 
        INSERT INTO KEEPIT
        (ID, kind, name, code, sort_order)
        VALUES
        (:[$Ptr_1], :[$Ptr_2], :[$Ptr_3], :[$Ptr_4], :[$Ptr_5]);
 
        USE DATABASE SQL_INTERNAL;
 
 End SQL

外部データベースからデータを読み込み:

 $Ptr_1:=$2 // ホストデータベースへのデータアクセスはポインターを通じて行う
 $Ptr_2:=$3
 $Ptr_3:=$4
 $Ptr_4:=$5
 $Ptr_5:=$6
 
 Begin SQL
 
    USE DATABASE DATAFILE :[<>MyDatabase];
 
    SELECT ALL ID, kind, name, code, sort_order
    FROM KEEPIT
    INTO :$Ptr_1, :$Ptr_2, :$Ptr_3, :$Ptr_4, :$Ptr_5;
 
    USE DATABASE SQL_INTERNAL;
 
 End SQL

コンポーネントはリソースを使用することができます (" 伝統的な"MacOS リソースやXLIFF タイプのファイル)。

新しいリソース管理の原則に従い (データベースアーキテクチャー参照)、コンポーネントのリソースファイルは、コンポーネントの.4db や.4dc ファイルと同階層のResources フォルダーに置かれなければなりません。コンポーネントが.4dbase 形式の場合 ( 推奨されるアーキテクチャー)、Resources フォルダは .4dbase フォルダーの中に置かれます。

自動メカニズムが有効となり、コンポーネントのResources フォルダー内で見つかったXLIFF ファイルは、 このコンポーネントによってロードされます。( 互換性のため) コンポーネントは、.4db や.4dc と同階層にある.rsr ファイルに格納された" 伝統的な" Mac OS リソースも自動的に使用します。Resources フォルダに置かれた" 伝統的な" リソースファイルはリソーステーマのコマンドを使用して、明示的にコンポーネントにロードしなければなりません。

1 つ以上のコンポーネントを含むホストデータベースでは、ホストデータベースと同様それぞれのコンポーネントが固有のリソースチェーンを持っています。リソースは異なるデータベース間で分離されます。 コンポーネントA のリソースにコンポーネントB やホストデータベースからアクセスすることはできません (共有及び非共有オブジェクト参照)。

コンポーネントにオンラインヘルプを追加できるようにするために、特別なメカニズムが実装されました。原理は4D データベースに提供されているものと同じです (付録 A: カスタムヘルプファイルを割り当てる参照) :

  • コンポーネントヘルプは拡張子が.htm, .html または (Windows のみ) .chm で提供される。
  • ヘルプファイルはコンポーネントのストラクチャファイルと同階層に置かれ、ストラクチャーと同じ名前である。
  • 結果、このファイルは自動でアプリケーションのヘルプメニューに、" ヘルプ:ヘルプファイル名" のタイトルでロードされます。

 
プロパティ 

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

 
ページの目次 
 
履歴 

 
ARTICLE USAGE

デザインリファレンス ( 4D v20)
デザインリファレンス ( 4D v20.1)
デザインリファレンス ( 4D v20.2)