Search Results for

    Show / Hide Table of Contents

    Component for Delphi palette

    TfrxIBXComponents is the first component we should create; it will be placed into FastReport component palette when registering engine (in the Delphi environment). As soon as this component is placed into a project, Delphi automatically adds link to our engine unit into “Uses” list. One should assign one more task in this component, i.e. to define DefaultDatabase property in it, which refers to existing connection to DB. By default, all TfrxIBXTable and TfrxIBXQuery components will refer to this connection. It is necessary to inherit component from TfrxDBComponents class:

      TfrxDBComponents = class(TComponent)
      public
        function GetDescription: String; virtual; abstract;
      end;
    

    Description should be returned by one function only, for example ”IBX Components”. TfrxIBXComponents component implementation is as follows:

    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;
    

    We define IBXComponents global variable, which will refer to TfrxIBXComponents component copy. If you place component into project several times (though it is senseless), you will nevertheless be able to save link to previous component and restore it after deleting component.

    A link to connection to DB, which already exists in project, can be placed into DefaultDatabase property. The way we will write TfrxIBXTable, TfrxIBXQuery components allows them to use this connection by default (actually, this is what we need IBXComponents global variable for).

    Back to top © 1998-2022 Copyright Fast Reports Inc.