关于窗体创建的几个小问题?大家进来看看!帮帮我!

Sunniness 2004-10-30 10:50:02
大家能不能帮我看一下这个过程,要怎样修改好!
我只传个[窗体名]和[窗体类名](都是字符串类型)怎样的方法动态创建窗体比较好!大家能不能给你例子!

procedure TForm1.MenuClickEvents(Sender: Tobject);
function FindForm(FormName: string): TForm;
var
i: Integer;
begin
Result := nil;
for i := 0 to MDIChildCount-1 do
if MDIChildren[i].Name= FormName then
begin
Result := MDIChildren[i];
Exit;
end;
end;
var
Frm: TForm;
Frs: TPersistentClass;
pck: HModule;
Cxm: string;
begin
Cxm:= 'Form2';
pck := LoadPackage('问题1');
Frm := FindForm(Cxm);
if Frm = nil then
begin
Frs := GetClass('F'+Cxm); //问题2
Frm := TForm(TComponentClass(Frs).Create(Application)); //问题3
Frm.Show;
end
end

1、LoadPackage() 的参数应填写什么值,LoadPackage,是什么意思,为什么要LoadPackage;
2、不知道为什么Frs 取的是nil值
3、在创建窗体时会出错,不知为什么?

大家帮帮我解决下这个问题,小弟我万分感谢!
...全文
126 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hottey 2004-11-02
  • 打赏
  • 举报
回复
var
TheClass: TPersistentClass;
MyForm: TForm;
begin
RegisterClasses([TForm2]);
TheClass := GetCLass('TForm2');
MyForm := TForm(TheClass.Create).Create(nil);
MyForm.Show;
end;
pengxuan 2004-11-01
  • 打赏
  • 举报
回复
学习。
hottey 2004-11-01
  • 打赏
  • 举报
回复
哈哈
Sunniness 2004-11-01
  • 打赏
  • 举报
回复
为什么Frs取到的值是nil呢!我应怎样才能取到这个窗体所属的类呢!
Sunniness 2004-11-01
  • 打赏
  • 举报
回复
linzhengqun(风。为菜鸟服务) ,你好!
你说的FindClass,GetClass注册,该怎样注册啊!
Sunniness 2004-11-01
  • 打赏
  • 举报
回复
lihao_ningxia(耗子) 你好!

你上面说的XXX和XXXX都是字符串类型,虽说是反回TFORM,但肯定编译不过的啊!

Sunniness 2004-11-01
  • 打赏
  • 举报
回复
var
Frs: TPersistentClass;
begin
Frs := GetClass('这里该填什么啊!');
end
Sunniness 2004-11-01
  • 打赏
  • 举报
回复
大家帮我忙!救命啊!
linzhengqun 2004-10-30
  • 打赏
  • 举报
回复
FindClass,GetClass,
不过这些得先有注册,RegisterClass
上海老李 2004-10-30
  • 打赏
  • 举报
回复
function createform(xxx,xxxx):TFROM;
begin
xxx:=xxxx.create(self);
result:=xxx;
end;

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧