TClientDataSet
alexgold
Москва
Как из скрипта достучаться к компонентам TClientDataSet? Нужно самому добавлять
этот класс и все его свойства и методы?
этот класс и все его свойства и методы?
Комментарии
interface
uses
DB, DBClient, MConnect,
fs_iinterpreter, fs_itools;
implementation
type
TFunctions = class(TObject)
private
function CallMethod(Instance: TObject; ClassType: TClass;
const MethodName: String; var Params: Variant): Variant;
public
constructor Create;
destructor Destroy; override;
end;
var
Functions: TFunctions;
{ TFunctions }
constructor TFunctions.Create;
begin
with fsGlobalUnit do
begin
AddedBy := Self;
AddClass(TDataSet,'TComponent');
AddClass(TCustomClientDataSet,'TDataSet');
with AddClass(TClientDataSet,'TCustomClientDataSet') do
begin
AddMethod('procedure AppendData(const Data: OleVariant; HitEOF: Boolean)',CallMethod);
AddMethod('procedure SaveToFile(const FileName: string)',CallMethod);
AddMethod('procedure LoadFromFile(const FileName: string)',CallMethod);
AddMethod('procedure CreateDataSet',CallMethod);
end;
AddedBy := nil;
end;
end;
destructor TFunctions.Destroy;
begin
if fsGlobalUnit <> nil then
fsGlobalUnit.RemoveItems(Self);
inherited;
end;
function TFunctions.CallMethod(Instance: TObject; ClassType: TClass;
const MethodName: String; var Params: Variant): Variant;
begin
if ClassType=TClientDataSet then
begin
if MethodName='APPENDDATA' then
TClientDataSet(Instance).AppendData(Params[0],Boolean(Params[1]))
else if MethodName='SAVETOFILE' then
TClientDataSet(Instance).SaveToFile(Params[0])
else if MethodName='LOADFROMFILE' then
TClientDataSet(Instance).LoadFromFile(Params[0])
else if MethodName='CREATEDATASET' then
TClientDataSet(Instance).CreateDataSet
end
end;
initialization
Functions := TFunctions.Create;
finalization
Functions.Free;
end.
Это излишне, TDataSet уже проимортили в модуле fs_idbrtti со всеми его свойствами и методами...