158 lines
3.9 KiB
ObjectPascal
158 lines
3.9 KiB
ObjectPascal
|
|
||
|
{******************************************}
|
||
|
{ }
|
||
|
{ FastReport FMX v1.0 }
|
||
|
{ ADO components design editors }
|
||
|
{ }
|
||
|
{ Copyright (c) 1998-2011 }
|
||
|
{ by Alexander Tzyganenko, }
|
||
|
{ Fast Reports Inc. }
|
||
|
{ }
|
||
|
{******************************************}
|
||
|
|
||
|
unit FMX.frxADOEditor;
|
||
|
|
||
|
interface
|
||
|
|
||
|
{$I frx.inc}
|
||
|
|
||
|
implementation
|
||
|
|
||
|
uses
|
||
|
Winapi.Windows, System.Classes, System.SysUtils, FMX.Forms, FMX.frxADOComponents, FMX.frxCustomDB,
|
||
|
FMX.frxDsgnIntf, FMX.frxRes, Data.DB, Data.Win.ADODB, Winapi.ADOInt, System.Variants, FMX.Platform.Win;
|
||
|
|
||
|
|
||
|
type
|
||
|
TfrxDatabaseNameProperty = class(TfrxStringProperty)
|
||
|
public
|
||
|
function GetAttributes: TfrxPropertyAttributes; override;
|
||
|
function Edit: Boolean; override;
|
||
|
end;
|
||
|
|
||
|
TfrxDatabaseProperty = class(TfrxComponentProperty)
|
||
|
public
|
||
|
function GetValue: String; override;
|
||
|
end;
|
||
|
|
||
|
TfrxTableNameProperty = class(TfrxStringProperty)
|
||
|
public
|
||
|
function GetAttributes: TfrxPropertyAttributes; override;
|
||
|
procedure GetValues; override;
|
||
|
procedure SetValue(const Value: String); override;
|
||
|
end;
|
||
|
|
||
|
TfrxIndexNameProperty = class(TfrxStringProperty)
|
||
|
public
|
||
|
function GetAttributes: TfrxPropertyAttributes; override;
|
||
|
procedure GetValues; override;
|
||
|
end;
|
||
|
|
||
|
|
||
|
{ TfrxDatabaseNameProperty }
|
||
|
|
||
|
function TfrxDatabaseNameProperty.GetAttributes: TfrxPropertyAttributes;
|
||
|
begin
|
||
|
Result := [paDialog];
|
||
|
end;
|
||
|
|
||
|
function TfrxDatabaseNameProperty.Edit: Boolean;
|
||
|
var
|
||
|
SaveConnected: Boolean;
|
||
|
db: TADOConnection;
|
||
|
fName: String;
|
||
|
begin
|
||
|
db := TfrxADODatabase(Component).Database;
|
||
|
|
||
|
SaveConnected := db.Connected;
|
||
|
db.Connected := False;
|
||
|
//FmxHandleToHWND(Application.MainForm.Handle)
|
||
|
fName := PromptDataSource(0, db.ConnectionString);
|
||
|
Result := fName <> '';
|
||
|
if Result then
|
||
|
db.ConnectionString := fName;
|
||
|
db.Connected := SaveConnected;
|
||
|
end;
|
||
|
|
||
|
|
||
|
{ TfrxDatabaseProperty }
|
||
|
|
||
|
function TfrxDatabaseProperty.GetValue: String;
|
||
|
var
|
||
|
db: TfrxADODatabase;
|
||
|
begin
|
||
|
db := TfrxADODatabase(GetOrdValue);
|
||
|
if db = nil then
|
||
|
begin
|
||
|
if (ADOComponents <> nil) and (ADOComponents.DefaultDatabase <> nil) then
|
||
|
Result := ADOComponents.DefaultDatabase.Name
|
||
|
else
|
||
|
Result := frxResources.Get('prNotAssigned');
|
||
|
end
|
||
|
else
|
||
|
Result := inherited GetValue;
|
||
|
end;
|
||
|
|
||
|
|
||
|
{ TfrxTableNameProperty }
|
||
|
|
||
|
function TfrxTableNameProperty.GetAttributes: TfrxPropertyAttributes;
|
||
|
begin
|
||
|
Result := [paMultiSelect, paValueList, paSortList];
|
||
|
end;
|
||
|
|
||
|
procedure TfrxTableNameProperty.GetValues;
|
||
|
begin
|
||
|
inherited;
|
||
|
with TfrxADOTable(Component).Table do
|
||
|
if Connection <> nil then
|
||
|
frxADOGetTableNames(Connection, Values, False);
|
||
|
end;
|
||
|
|
||
|
procedure TfrxTableNameProperty.SetValue(const Value: String);
|
||
|
begin
|
||
|
inherited;
|
||
|
Designer.UpdateDataTree;
|
||
|
end;
|
||
|
|
||
|
|
||
|
{ TfrxIndexProperty }
|
||
|
|
||
|
function TfrxIndexNameProperty.GetAttributes: TfrxPropertyAttributes;
|
||
|
begin
|
||
|
Result := [paMultiSelect, paValueList];
|
||
|
end;
|
||
|
|
||
|
procedure TfrxIndexNameProperty.GetValues;
|
||
|
var
|
||
|
i: Integer;
|
||
|
begin
|
||
|
inherited;
|
||
|
try
|
||
|
with TfrxADOTable(Component).Table do
|
||
|
if (TableName <> '') and (IndexDefs <> nil) then
|
||
|
begin
|
||
|
IndexDefs.Update;
|
||
|
for i := 0 to IndexDefs.Count - 1 do
|
||
|
if IndexDefs[i].Name <> '' then
|
||
|
Values.Add(IndexDefs[i].Name);
|
||
|
end;
|
||
|
except
|
||
|
end;
|
||
|
end;
|
||
|
|
||
|
|
||
|
initialization
|
||
|
frxPropertyEditors.Register(TypeInfo(String), TfrxADODataBase, 'DatabaseName',
|
||
|
TfrxDataBaseNameProperty);
|
||
|
frxPropertyEditors.Register(TypeInfo(TfrxADODatabase), TfrxADOTable, 'Database',
|
||
|
TfrxDatabaseProperty);
|
||
|
frxPropertyEditors.Register(TypeInfo(TfrxADODatabase), TfrxADOQuery, 'Database',
|
||
|
TfrxDatabaseProperty);
|
||
|
frxPropertyEditors.Register(TypeInfo(String), TfrxADOTable, 'TableName',
|
||
|
TfrxTableNameProperty);
|
||
|
frxPropertyEditors.Register(TypeInfo(String), TfrxADOTable, 'IndexName',
|
||
|
TfrxIndexNameProperty);
|
||
|
|
||
|
end.
|