Search Results for

    Show / Hide Table of Contents

    Компонент для палитры Delphi

    Первый компонент, который мы должны создать - TfrxIBXComponents, он будет помещен в палитру компонент FastReport при регистрации движка в среде Delphi. При помещении этого компонента в проект Delphi автоматически добавит ссылку на модуль нашего движка в список uses. На этот компонент удобно возложить еще одну задачу - определить у него свойство DefaultDatabase, которое ссылается на уже имеющееся в проекте подключение к БД. По умолчанию все компоненты TfrxIBXTable и TfrxIBXQuery будут ссылаться на это подключение.

    Компонент необходимо наследовать от класса TfrxDBComponents:

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

    Единственная функция должна возвращать описание, например 'IBX Components'. Реализация компонента 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;
    

    Мы определяем глобальную переменную IBXComponents, которая будет ссылаться на экземпляр компонента TfrxIBXComponents. На случай, если вы несколько раз поместили компонент в проект (хотя это и не имеет смысла), предусмотрено сохранение ссылки на предыдущий компонент и восстановление ее после удаления компонента.

    В свойство DefaultDatabase можно поместить ссылку на уже имеющееся в проекте подключение к БД. Мы напишем компоненты TfrxIBXTable, TfrxIBXQuery таким образом, чтобы они могли использовать это подключение по умолчанию (собственно, ради этого нам нужна глобальная переменная IBXComponents).

    Back to top © 1998-2024 ООО «Быстрые отчеты»