Events
Есть ещё вопрос.
Кусок кода для запуска скрипта с подлинковкой обработчиков событий по имени функции. Он прелестно работает для TButton.OnClick, а для TMyButton.OnClick пишет "Undeclared identifier: OnClick" хотя в документации четко сказано: "AddClass - Это делает все published свойства доступными..."
Ну и разве OnClick не published для всех потомков TButton ?
PS: Кстати это я имел ввиду насчёт добавленния функций. Не добавление функций основной программы для доступа из скрипта (что прекрастно описано в доке), а добавления функции - обработчика в виде текста в сам скрипт с последующей его перекомпиляцией и запуском на выполнение.
PPS: Задача вообще-то проста написать интерпритатор Delphi ...
Кусок кода для запуска скрипта с подлинковкой обработчиков событий по имени функции. Он прелестно работает для TButton.OnClick, а для TMyButton.OnClick пишет "Undeclared identifier: OnClick" хотя в документации четко сказано: "AddClass - Это делает все published свойства доступными..."
Ну и разве OnClick не published для всех потомков TButton ?
function ExecScript(Script: TfsScript) : Boolean;
begin
Result := False;
Script.Clear;
Script.AddForm(Script.Owner);
Script.AddObject('Self', Script.Owner);
Result := Script.Compile;
if Result then
begin
Script.Execute;
lScript := TfsScript.Create(Application);
try
lScript.Parent := Script;
lScript.Lines.Add('Begin');
for i := 0 to Script.Lines.Count -1 do
begin
s := Script.Lines.Strings[i]; j := Pos(' __ev__', s); k := Pos('(', s);
if j <> 0 then
begin
b := Copy(s,j+7,k-j-8); b[Pos('_On',b)] := '.'; e := Copy(b,1,Pos('.',b)-1);
lScript.AddClass(Script.Owner.FindComponent(e).ClassType,
Script.Owner.FindComponent(e).ClassParent.ClassName)
lScript.AddObject(e, Script.Owner.FindComponent(e));
lScript.Lines.Add('Self.' + b + ' := @' + Copy(s, j +1, k - j - 2) + ';');
end;
end;
lScript.Lines.Add('end.');
Result := lScript.Compile;
if Result then lScript.Execute;
finally lScript.Free; end;
end;
PS: Кстати это я имел ввиду насчёт добавленния функций. Не добавление функций основной программы для доступа из скрипта (что прекрастно описано в доке), а добавления функции - обработчика в виде текста в сам скрипт с последующей его перекомпиляцией и запуском на выполнение.
PPS: Задача вообще-то проста написать интерпритатор Delphi ...