TChart AddXY
Hi to all,
I've tried to add the AddXY method or a TChartSeries with following results:
[FIRST TEST]
In the MainProgram:
When I execute the program, the AddMethod call gives an Access violation error.
[Second test -this works- : modify source unit fs_ichartrtti.pas]
On Row 84:
How should I use AddMethod in my program instead of altering FsScript source code (and loose my code on each fsScript upgrade) ???
I think fsScript is great, really, but I think also that with al little more effort (adding ALL the methods and properties) this would be GREAT.
I'm waiting for response.
Ciao,
Geppo Darkson.
I've tried to add the AddXY method or a TChartSeries with following results:
[FIRST TEST]
In the MainProgram:
procedure TChartTestFrm.BitBtn1Click(Sender: TObject);
begin
  fsScript1.Clear;
  { script text }
  fsScript1.Parent := fsGlobalUnit;
  fsScript1.Lines := fsSyntaxMemo1.Lines;
  fsScript1.AddForm(ChartTestFrm);
  with fsScript1.AddClass(TChartSeries, 'TComponent')
//////////////////////////////////////////////////////////
  do AddMethod('function AddXY(Const AXValue, AYValue: Double; Const AXLabel: String; AColor: TColor) : Longint',CallMethod); // This gives error
//////////////////////////////////////////////////////////
  If Not fsScript1.Compile Then
  Begin
    Exit;
  End;
  fsScript1.Execute;
end;
(...)
function TChartTestFrm.CallMethod(Instance: TObject; ClassType: TClass;const MethodName: String; var Params: Variant): Variant;
begin
 Result := 0;
 if ClassType = TChartSeries then
 begin
  if MethodName = 'CLEAR' then
  else if MethodName = 'ADDXY' then
   TChartSeries(Instance).AddXY(Params[0], Params[1], Params[2], Params[3]) //Carlo
 end
end;
When I execute the program, the AddMethod call gives an Access violation error.
[Second test -this works- : modify source unit fs_ichartrtti.pas]
On Row 84:
  with AddClass(TChartSeries, 'TComponent') do
  begin
   AddMethod('procedure Clear', CallMethod);
   AddMethod('procedure Add(const AValue: Double; const ALabel: String; AColor: TColor)', CallMethod);
//////////////////////////////////////////////////////////
   AddMethod('function AddXY(Const AXValue, AYValue: Double; Const AXLabel: String; AColor: TColor) : Longint',CallMethod); //Carlo
//////////////////////////////////////////////////////////
  end;
(...)
function TFunctions.CallMethod(Instance: TObject; ClassType: TClass;
 const MethodName: String; Caller: TfsMethodHelper): Variant;
begin
 Result := 0;
 if ClassType = TChartSeries then
 begin
  if MethodName = 'CLEAR' then
   TChartSeries(Instance).Clear
  else if MethodName = 'ADD' then
   TChartSeries(Instance).Add(Caller.Params[0], Caller.Params[1], Caller.Params[2])
//////////////////////////////////////////////////////////
  else if MethodName = 'ADDXY' then
   TChartSeries(Instance).AddXY(Caller.Params[0], Caller.Params[1], Caller.Params[2], Caller.Params[3]) //Carlo
//////////////////////////////////////////////////////////
 end
How should I use AddMethod in my program instead of altering FsScript source code (and loose my code on each fsScript upgrade) ???
I think fsScript is great, really, but I think also that with al little more effort (adding ALL the methods and properties) this would be GREAT.
I'm waiting for response.
Ciao,
Geppo Darkson.