Delphi パレットのコンポーネント
TfrxIBXComponents
は、作成する必要のある最初のコンポーネントです。エンジンの登録時に、FastReport のコンポーネント パレットに配置されます(Delphi 環境)。このコンポーネントをプロジェクトに配置するとすぐに、Delphi はエンジン ユニットへのリンクを "Users" リストに自動的に追加します。このコンポーネントにもう 1 つタスクを割り当てる必要があります。つまり、DB への既存の接続を参照する DefaultDatabase
プロパティを定義することです。既定では、すべての TfrxIBXTable
および TfrxIBXQuery
コンポーネントは、この接続を参照します。TfrxDBComponents
クラスからコンポーネントを継承する必要があります。
TfrxDBComponents = class(TComponent)
public
function GetDescription: String; virtual; abstract;
end;
"IBX コンポーネント" などの説明は、1 つの関数によってのみ返される必要があります。TfrxIBXComponents
コンポーネントは次のように実装されます。
type
TfrxIBXComponents = class(TfrxDBComponents)
private
FDefaultDatabase: TIBDatabase;
FOldComponents: TfrxIBXComponents;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
function GetDescription: String; override;
published
property DefaultDatabase: TIBDatabase read FDefaultDatabase write FDefaultDatabase;
end;
var
IBXComponents: TfrxIBXComponents;
constructor TfrxIBXComponents.Create(AOwner: TComponent);
begin
inherited;
FOldComponents := IBXComponents;
IBXComponents := Self;
end;
destructor TfrxIBXComponents.Destroy;
begin
if IBXComponents = Self then
IBXComponents := FOldComponents;
inherited;
end;
function TfrxIBXComponents.GetDescription: String;
begin
Result := 'IBX';
end;
TfrxIBXComponents
コンポーネントのコピーを参照する、IBXComponents グローバル変数を定義します。プロジェクトにコンポーネントを数回配置した場合、それは無意味ではありますが、コンポーネントを削除した後に、前のコンポーネントへのリンクを保存して、それを復元できるようになります。
プロジェクトに既存する DB への接続へのリンクは、DefaultDatabase
プロパティに置くことができます。後述の TfrxIBXTable
、TfrxIBXQuery
コンポーネントを記述する方法では、コンポーネントは既定でこの接続を使用することができます(実際には、これは IBXComponents グローバル変数を必要とするものです)。