AddForms
Добрый день
Существует следующий текст на дельфи
procedure TForm1.ButtonClick(Sender: TObject);
var Form:TForm;
begin
fsScript.Clear;
fsScript.Parent:=fsGlobalUnit;
if Assigned(Application.FindComponent('Form'))
then Application.FindComponent('Form').Free;
Form:=TForm.Create(Application);
Form.Name:='Form';
with TButton.Create(Form) do
begin
Parent:=Form;
Name:='Button1';
end;
fsScript.AddForm(Form);
fsScript.Lines:=Memo1.Lines;
if fsScript.Compile then fsScript.Execute
else ShowMessage(fsScript.ErrorMsg);
end;
и Скрипт
begin
Form.Button1.Caption:='QQ';
Form.ShowModal;
end.
При первом вызове скрипта Заголовок кнопки изменяется, при следующих нет.
Чем это можно объяснить и как это избежать?
Заранее благодарен за ответ
Существует следующий текст на дельфи
procedure TForm1.ButtonClick(Sender: TObject);
var Form:TForm;
begin
fsScript.Clear;
fsScript.Parent:=fsGlobalUnit;
if Assigned(Application.FindComponent('Form'))
then Application.FindComponent('Form').Free;
Form:=TForm.Create(Application);
Form.Name:='Form';
with TButton.Create(Form) do
begin
Parent:=Form;
Name:='Button1';
end;
fsScript.AddForm(Form);
fsScript.Lines:=Memo1.Lines;
if fsScript.Compile then fsScript.Execute
else ShowMessage(fsScript.ErrorMsg);
end;
и Скрипт
begin
Form.Button1.Caption:='QQ';
Form.ShowModal;
end.
При первом вызове скрипта Заголовок кнопки изменяется, при следующих нет.
Чем это можно объяснить и как это избежать?
Заранее благодарен за ответ
Комментарии
Ограничение по добавлению
динамических форм можно обойти следующим образом
procedure TForm1.ButtonClick(Sender: TObject);
var Form:TForm;
begin
fsScript.Clear;
fsScript.Parent:=nil;// Это важно тогда он не будет искать в глобал юните
if Assigned(Application.FindComponent('Form'))
then Application.FindComponent('Form').Free;
Form:=TForm.Create(Application);
Form.Name:='Form';
with TButton.Create(Form) do
begin
Parent:=Form;
Name:='Button1';
end;
fsScript.AddClass(Form.ClassType);
fsScript.AddForm(Form);
fsScript.Parent:=fsGlobalUnit
fsScript.Lines:=Memo1.Lines;
if fsScript.Compile then fsScript.Execute
else ShowMessage(fsScript.ErrorMsg);
end;
и Скрипт
begin
Form.Button1.Caption:='QQ';
Form.ShowModal;
end.