Events

LKGLKG
отредактировано 03:46 Раздел: FastScript
Есть ещё вопрос.
Кусок кода для запуска скрипта с подлинковкой обработчиков событий по имени функции. Он прелестно работает для 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 ...

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.