📄 frxmysqlcomponents.pas
字号:
{******************************************}
{ }
{ FastReport v3.0 }
{ MYSQL enduser components }
{ }
// Created by: SciBit
// E-mail: support@scibit.com
{ }
{******************************************}
unit frxMYSQLComponents;
interface
{$I frx.inc}
uses
Windows, Classes, frxClass, frxCustomDB, MySQLServer,MySQLDataset
{$IFDEF Delphi6}
, Variants
{$ENDIF};
type
TfrxMYSQLComponents = class(TfrxDBComponents)
private
FDefaultDatabase: TMYSQLServer;
FOldComponents: TfrxMYSQLComponents;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
function GetDescription: String; override;
published
property DefaultDatabase: TMYSQLServer read FDefaultDatabase write FDefaultDatabase;
end;
TfrxMYSQLDatabase = class(TfrxDialogComponent)
private
FDatabase: TMYSQLServer;
procedure SetConnected(Value: Boolean);
procedure SetDatabaseName(const Value: String);
procedure SetLoginPrompt(Value: Boolean);
procedure SetParams(Value: TStrings);
function GetConnected: Boolean;
function GetDatabaseName: String;
function GetLoginPrompt: Boolean;
function GetParams: TStrings;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
class function GetDescription: String; override;
property Database: TMYSQLServer read FDatabase;
published
property DatabaseName: String read GetDatabaseName write SetDatabaseName;
property LoginPrompt: Boolean read GetLoginPrompt write SetLoginPrompt default True;
property Params: TStrings read GetParams write SetParams;
property Connected: Boolean read GetConnected write SetConnected default False;
end;
TfrxMYSQLTable = class(TfrxCustomDataset)
private
FDatabase: TfrxMYSQLDatabase;
FTable: TMYSQLTable;
procedure SetIndexName(const Value: String);
function GetIndexName: String;
function GetTableName: String;
procedure SetTableName(const Value: String);
procedure SetDatabase(const Value: TfrxMYSQLDatabase);
public
constructor Create(AOwner: TComponent); override;
class function GetDescription: String; override;
property Table: TMYSQLTable read FTable;
published
property Database: TfrxMYSQLDatabase read FDatabase write SetDatabase;
property IndexName: String read GetIndexName write SetIndexName;
property TableName: String read GetTableName write SetTableName;
end;
TfrxMYSQLQuery = class(TfrxCustomQuery)
private
FDatabase: TfrxMYSQLDatabase;
FQuery: TMYSQLQuery;
procedure SetDatabase(const Value: TfrxMYSQLDatabase);
protected
procedure SetSQL(Value: TStrings); override;
function GetSQL: TStrings; override;
public
constructor Create(AOwner: TComponent); override;
class function GetDescription: String; override;
procedure UpdateParams; override;
property Query: TMYSQLQuery read FQuery;
published
property Database: TfrxMYSQLDatabase read FDatabase write SetDatabase;
end;
implementation
uses
frxMYSQLRTTI,
{$IFNDEF NO_EDITORS}
frxMYSQLEditor,
{$ENDIF}
frxDsgnIntf, frxRes;
var
MYSQLComponents: TfrxMYSQLComponents;
{ TfrxMYSQLComponents }
constructor TfrxMYSQLComponents.Create(AOwner: TComponent);
begin
inherited;
FOldComponents := MYSQLComponents;
MYSQLComponents := Self;
end;
destructor TfrxMYSQLComponents.Destroy;
begin
if MYSQLComponents = Self then
MYSQLComponents := FOldComponents;
inherited;
end;
function TfrxMYSQLComponents.GetDescription: String;
begin
Result := 'MYSQL';
end;
{ TfrxMYSQLDatabase }
constructor TfrxMYSQLDatabase.Create(AOwner: TComponent);
begin
inherited;
FDatabase := TMYSQLServer.Create(nil);
Component := FDatabase;
// ImageIndex := 37;
end;
destructor TfrxMYSQLDatabase.Destroy;
begin
inherited;
end;
class function TfrxMYSQLDatabase.GetDescription: String;
begin
Result := 'MYSQL Database';
end;
function TfrxMYSQLDatabase.GetConnected: Boolean;
begin
Result := FDatabase.Connected;
end;
function TfrxMYSQLDatabase.GetDatabaseName: String;
begin
Result := FDatabase.DatabaseName;
end;
function TfrxMYSQLDatabase.GetLoginPrompt: Boolean;
begin
Result := FDatabase.LoginPrompt;
end;
function TfrxMYSQLDatabase.GetParams: TStrings;
begin
Result := FDatabase.Params;
end;
procedure TfrxMYSQLDatabase.SetConnected(Value: Boolean);
begin
FDatabase.Connected := Value;
end;
procedure TfrxMYSQLDatabase.SetDatabaseName(const Value: String);
begin
FDatabase.DatabaseName := Value;
end;
procedure TfrxMYSQLDatabase.SetLoginPrompt(Value: Boolean);
begin
FDatabase.LoginPrompt := Value;
end;
procedure TfrxMYSQLDatabase.SetParams(Value: TStrings);
begin
FDatabase.Params := Value;
end;
{ TfrxMYSQLTable }
constructor TfrxMYSQLTable.Create(AOwner: TComponent);
begin
FTable := TMYSQLTable.Create(nil);
DataSet := FTable;
SetDatabase(nil);
inherited;
// FImageIndex := 38;
end;
class function TfrxMYSQLTable.GetDescription: String;
begin
Result := 'MYSQL Table';
end;
procedure TfrxMYSQLTable.SetDatabase(const Value: TfrxMYSQLDatabase);
begin
FDatabase := Value;
if Value <> nil then
FTable.Server := Value.Database
else if MYSQLComponents <> nil then
FTable.Server := MYSQLComponents.DefaultDatabase
else
FTable.Server := nil;
end;
function TfrxMYSQLTable.GetIndexName: String;
begin
Result := FTable.IndexFieldNames;
end;
function TfrxMYSQLTable.GetTableName: String;
begin
Result := FTable.TableName;
end;
procedure TfrxMYSQLTable.SetIndexName(const Value: String);
begin
FTable.IndexFieldNames := Value; //not supported at this time
end;
procedure TfrxMYSQLTable.SetTableName(const Value: String);
begin
FTable.TableName := Value;
end;
{ TfrxMYSQLQuery }
constructor TfrxMYSQLQuery.Create(AOwner: TComponent);
begin
FQuery := TMYSQLQuery.Create(nil);
Dataset := FQuery;
SetDatabase(nil);
inherited;
// FImageIndex := 39;
end;
class function TfrxMYSQLQuery.GetDescription: String;
begin
Result := 'MYSQL Query';
end;
procedure TfrxMYSQLQuery.SetDatabase(const Value: TfrxMYSQLDatabase);
begin
FDatabase := Value;
if Value <> nil then
FQuery.Server := Value.Database
else if MYSQLComponents <> nil then
FQuery.Server := MYSQLComponents.DefaultDatabase
else
FQuery.Server := nil;
end;
function TfrxMYSQLQuery.GetSQL: TStrings;
begin
Result := FQuery.SQL;
end;
procedure TfrxMYSQLQuery.SetSQL(Value: TStrings);
begin
FQuery.SQL := Value;
end;
procedure TfrxMYSQLQuery.UpdateParams;
begin
frxParamsToTParams(Self, FQuery.Params);
end;
initialization
frxObjects.RegisterCategory('MYSQL', nil, 'MyComponents', 36);
frxObjects.RegisterObject1(TfrxMYSQLDataBase, nil, '', 'MYSQL', 0, 37);
frxObjects.RegisterObject1(TfrxMYSQLTable, nil, '', 'MYSQL', 0, 38);
frxObjects.RegisterObject1(TfrxMYSQLQuery, nil, '', 'MYSQL', 0, 39);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -