我们创建 FDatabase:TIBDatabase 对象,然后定义我们希望设计者拥有的属性。为每个属性编写了“Get”和“Set”方法。
以下组件是TfrxIBXDatabase其中之一。它代表了一个包装器TIBDatabase。
TfrxIBXDatabase = class(TfrxCustomDatabase) private FDatabase: TIBDatabase; FTransaction: TIBTransaction; function GetSQLDialect: Integer; procedure SetSQLDialect(const Value: Integer); protected procedure SetConnected(Value: Boolean); override; procedure SetDatabaseName(const Value: String); override; procedure SetLoginPrompt(Value: Boolean); override; procedure SetParams(Value: TStrings); override; function GetConnected: Boolean; override; function GetDatabaseName: String; override; function GetLoginPrompt: Boolean; override; function GetParams: TStrings; override; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; class function GetDescription: String; override; procedure SetLogin(const Login, Password: String); override; property Database: TIBDatabase read FDatabase; published { list TIBDatabase properties. Note – some properties are already exist in base class } property DatabaseName; property LoginPrompt; property Params; property SQLDialect: Integer read GetSQLDialect write SetSQLDialect; { Connected property should be placed last! } property Connected; end;constructor TfrxIBXDatabase.Create(AOwner: TComponent);begin inherited; { create component – connection } FDatabase := TIBDatabase.Create(nil); { create component - transaction (specificity of IBX) } FTransaction := TIBTransaction.Create(nil); FDatabase.DefaultTransaction := FTransaction; { do not forget this line! } Component := FDatabase;end;destructor TfrxIBXDatabase.Destroy;begin { delete transaction } FTransaction.Free; { connection will be deleted automatically in parent class } inherited;end;{ component description will be displayed next to icon in objects toolbar }class function TfrxIBXDatabase.GetDescription: String;begin Result := 'IBX Database';end;{ redirect component properties to cover properties and vice versa }function TfrxIBXDatabase.GetConnected: Boolean;begin Result := FDatabase.Connected;end;function TfrxIBXDatabase.GetDatabaseName: String;begin Result := FDatabase.DatabaseName;end;function TfrxIBXDatabase.GetLoginPrompt: Boolean;begin Result := FDatabase.LoginPrompt;end;function TfrxIBXDatabase.GetParams: TStrings;begin Result := FDatabase.Params;end;function TfrxIBXDatabase.GetSQLDialect: Integer;begin Result := FDatabase.SQLDialect;end;procedure TfrxIBXDatabase.SetConnected(Value: Boolean);begin FDatabase.Connected := Value; FTransaction.Active := Value;end;procedure TfrxIBXDatabase.SetDatabaseName(const Value: String);begin FDatabase.DatabaseName := Value;end;procedure TfrxIBXDatabase.SetLoginPrompt(Value: Boolean);begin FDatabase.LoginPrompt := Value;end;procedure TfrxIBXDatabase.SetParams(Value: TStrings);begin FDatabase.Params := Value;end;procedure TfrxIBXDatabase.SetSQLDialect(const Value: Integer);begin FDatabase.SQLDialect := Value;end;{ this method is used by DB connection wizard }procedure TfrxIBXDatabase.SetLogin(const Login, Password: String);begin Params.Text := 'user_name=' + Login + #13#10 + 'password=' + Password;end;
如您所见,这并没有那么复杂。我们创建 FDatabase:TIBDatabase 对象,然后定义我们希望设计者拥有的属性。为每个属性编写了“Get”和“Set”方法。
如果您对 FastReport 感兴趣,欢迎加入 FastReport QQ 交流群:702295239
还想要更多吗可以点击阅读【FastReport 表2021最新资源盘点】,查找需要的教程资源。上是FastReport .NET慧正在 火热销售中!>>查看价格详情
标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!