Регистрация компонентов
Регистрация всех компонентов движка выполняется в секции initialization.
initialization
{ вместо картинок используем индексы стандартных картинок 37,38,39 }
frxObjects.RegisterObject1(TfrxIBXDataBase, nil, '', '', 0, 37);
frxObjects.RegisterObject1(TfrxIBXTable, nil, '', '', 0, 38);
frxObjects.RegisterObject1(TfrxIBXQuery, nil, '', '', 0, 39);
finalization
CatBmp.Free;
frxObjects.Unregister(TfrxIBXDataBase);
frxObjects.Unregister(TfrxIBXTable);
frxObjects.Unregister(TfrxIBXQuery);
end.
Этого достаточно для того, чтобы использовать движок в отчетах. Осталось две вещи: зарегистрировать классы движка в скриптовой системе для того, чтобы к ним можно было обращаться из скрипта, и зарегистрировать редакторы некоторых свойств (например, TfrxIBXTable.TableName), чтобы с компонентом было удобно работать.
Код регистрации движка в скриптовой системе лучше вынести в отдельный файл с суффиксом RTTI. Подробнее о регистрации классов в скриптовой системе можно прочитать в соответствующей главе. Вот пример такого файла:
unit frxIBXRTTI;
interface
{$I frx.inc}
implementation
uses
Windows, Classes, fs_iinterpreter, frxIBXComponents
{$IFDEF Delphi6}
, Variants
{$ENDIF};
type
TFunctions = class(TfsRTTIModule)
public
constructor Create(AScript: TfsScript); override;
end;
{ TFunctions }
constructor TFunctions.Create;
begin
inherited Create(AScript);
with AScript do
begin
AddClass(TfrxIBXDatabase, 'TfrxComponent');
AddClass(TfrxIBXTable, 'TfrxCustomDataset');
AddClass(TfrxIBXQuery, 'TfrxCustomQuery');
end;
end;
initialization
fsRTTIModules.Add(TFunctions);
end.