Form名保存在字段Fname中,请问如何调用?
我是将FORM的名称保存在数据库里的,现在我在当前单位引用了其单元,
但为什么我用强制转换其为TFormClass时,确出错吗?
如何请...请问...
//显示窗体函数
function ExecuteForm(AFormClass:TFormClass):Boolean;Overload;
begin
Screen.Cursor:= crHourGlass;
with AFormClass.Create(Application) do
begin
Screen.Cursor:= crDefault;
Position:=poScreenCenter;
ShowModal;
end;
end;
...
LabelFName:=VarToStr(FieldValues['FName']);
//ExecuteForm(TDateWinForm);//可以调用的Form
ExecuteForm(TFormClass(LabelFName));//为什么这里会调用失败
...
[解决办法]
LabelFName是不是TFormClass的同类或子类
[解决办法]
留个爪子,以后来翻
[解决办法]
貌似曾经在C++Builder版曾经出现过类似的问题,也有人回答过。
不过使用对象的名称,这个是没有办法的,除非你从Application当中去枚举,并且还需要这个对象曾经已经存在,并且还需要保证就是你所需要的,因为任何对象都可以具备你所说的名称。一个人可以叫小黄,一条狗也可以叫小黄,一头小牛也同样可以。
但是换做是类型名,就又有点不一样。而人们所能做的也就只是将类名称映射为具体的类,然后再去创建对象,估计这才是楼主所需要的。详见:Creating a Delphi Form from a String