Addclass. Ошибка"unknown Type: 'myclass'"
**********Delphi
TtmpClass = class(TPersistent) //Создание класса
published
procedure MyShowMsg (a: String);
function GetSomeString: String;
end;
procedure TtmpClass.MyShowMsg(a: String);
begin
ShowMessage(a);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
with fsGlobalUnit.AddClass(TtmpClass, 'TPersistent') do //Добавление класса в скрипт
begin
AddMethod('procedure MyShowDlg(a: String)', CallMethod);
AddMethod('function GetSomeString: String', CallMethod);
end;
Tree.UpdateItems; // Класс появляется в дереве
end;
**********FastScript
procedure Page1OnBeforePrint(Sender: TfrxComponent);
var
s: TtmpClass;
begin
s.MyShowMsg('ffff');
end;
begin
end.
*******************
При выполении скрипта вылезает ошибка "Unknown Type: 'MyClass' "
Что-то не так?*
TtmpClass = class(TPersistent) //Создание класса
published
procedure MyShowMsg (a: String);
function GetSomeString: String;
end;
procedure TtmpClass.MyShowMsg(a: String);
begin
ShowMessage(a);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
with fsGlobalUnit.AddClass(TtmpClass, 'TPersistent') do //Добавление класса в скрипт
begin
AddMethod('procedure MyShowDlg(a: String)', CallMethod);
AddMethod('function GetSomeString: String', CallMethod);
end;
Tree.UpdateItems; // Класс появляется в дереве
end;
**********FastScript
procedure Page1OnBeforePrint(Sender: TfrxComponent);
var
s: TtmpClass;
begin
s.MyShowMsg('ffff');
end;
begin
end.
*******************
При выполении скрипта вылезает ошибка "Unknown Type: 'MyClass' "
Что-то не так?*
Комментарии
procedure TForm1.Button3Click(Sender: TObject);
begin
with fsGlobalUnit.AddClass(TtmpClass, 'TPersistent') do //Добавление класса в скрипт
begin
AddMethod('procedure MyShowMsg(a: String)', CallMethod);
AddMethod('function GetSomeString: String', CallMethod);
end;
Tree.UpdateItems; // Класс появляется в дереве
end;
При выполении скрипта вылезает ошибка "Unknown Type: 'TtmpClass' "
Что-то не так?*
[/quote]
А ты в Delphi-коде перед вызовом своего скрипта не забыл сделать
fsScript.Parent := fsGlobalUnit ?
Нет.
Не забыл
Script.SyntaxType := 'PascalScript';
Script.Parent := fsGlobalUnit;
with Script.AddClass(TtmpClass, 'TPersistent') do
..................
+ изменил fsGlobalUnit.AddClass() на Script.AddClass()
все то же((
Script.SyntaxType := 'PascalScript';
Script.AddRTTI;
with Script.AddClass(TtmpClass, 'TPersistent') do
Ошибка та же
*******
Еще раз
Delphi
procedure TForm1.Button3Click(Sender: TObject);
begin
Script.SyntaxType := 'PascalScript';
Script.AddRTTI;
with Script.AddClass(TtmpClass, 'TPersistent') do
begin
AddMethod('procedure MyShowMsg(a: String)', CallMethod);
AddMethod('function GetSomeString: String', CallMethod);
end;
Tree.UpdateItems;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
with Report do
begin
Script.Clear;
ShowReport;
end;
end;
FSScript
var
s: TtmpClass;
begin
s := TtmpClass.Create;
s.MyShowMsg('ff');
end.
Мда....
Действительно))
На форму положил TfsScript и работал с ним(((
А обращался к Report.Script
Спасибо за наводящий вопрос!!
ошибку исправил
Появилась новая проблема
Script
var
s: TtmpClass;
begin
s := TtmpClass.Create;
s.MyShowMsg('ff');
end;
Если пишу его в дизайнере - вызывается то, что написано в CallMethod (вроде бы правильно)
Если пишу так:
Delphi
Script.Lines.Text := SyntaxMemo.Lines.Text;
ShowReport;
Появляется ошибка
Script Error at 2:1: 'BEGIN' expected
Report.ScriptText.Assign(SyntaxMemo.Lines);
Report.ShowReport;
Спасибо!
Работает так!!