一个困扰很久的问题,一直没有解决
这个字符串可能是和对象有关也可能无关,如
s:='showmessage(''ok'')' 或
s:='button1.caption:=xx'
s:='button1.SetFoucs'
s:='with dbgrid1.columns.add do
begin
caption:=''abc'';
fieldname:=''ccc'';
end;';
如何在程序运行期执行这个字符串呢?
希望知道的朋友公布答案,感激不尽!
这个字符串可能是和对象有关也可能无关,如
s:='showmessage(''ok'')' 或
s:='button1.caption:=xx'
s:='button1.SetFoucs'
s:='with dbgrid1.columns.add do
begin
caption:=''abc'';
fieldname:=''ccc'';
end;';
如何在程序运行期执行这个字符串呢?
希望知道的朋友公布答案,感激不尽!
s := StringReplace(s,'''','',[rfReplaceaa]);
这样你就把你的字符串还原成程序代码了
不知道
这样楼主满不满意?
比如一个窗体上放一个TEdit,一个TButton,TEdit输入要执行的代码,按button执行edit中的代码
Delphi 2009好象有反射机制可以实现,不过我不太明白,VB中可用ScriptControl来实现,换成delphi代码如下:
use ComObj;
procedure TForm1.Button1Click(Sender: TObject);
var
v:Variant;
dp:IDispatch;
begin
v:=CreateOleObject('ScriptControl');
v.Language:='VBscript';
//如可传递dp?把form1转成IDispatch?
v.AddObject('form1',dp);
v.ExecuteStatement(Edit1.Text);
v:=Unassigned;
end;
可惜ReportBuilder没源码,得去好好读一读FastReport的源码了
哪位高人来指点一下?
TMS和JVCL能实现,不知有否这样的传说?