⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frxmysqlcomponents.pas

📁 MYSQL 连接控件 MYSQL 连接控件
💻 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 + -