怎么把数据库取出的字符串转换成窗口的name值并show出来?

孙月魂 2011-05-18 03:43:15
我想把MDI的子窗口的name值存到数据库里面,然后再在程序里面取出来打开相应的窗口~
这是我打开MDI子窗口的代码:

procedure tform17.OpenA(sender:TObject);
begin
if not Assigned(Form1) then //判断子窗体是否已打开
begin
Form1:=TForm1.Create(Self);
Form1.Show;
end
else Form1.BringToFront;
end;

麻烦帮我改改,主要是form1和字符串怎么匹配~谢谢了
...全文
127 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
孙月魂 2011-05-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gobiz 的回复:]
首先,在每个MDI窗体单元最下面添加如下语句来注册窗体类(假设类名为TForm1)。

Delphi(Pascal) code
initialization
RegisterClass(TForm1);

end.


然后,在需要根据窗体类名创建窗体的地方做如下操作。

Delphi(Pascal) code
var
FClass: TPersistentCla……
[/Quote]
那要怎么把这个方法赋给动态加载的菜单项了?
孙月魂 2011-05-20
  • 打赏
  • 举报
回复
gobiz太谢谢你了!解决了我这个纠结了一天的问题,拯救了我好多脑细胞啊!谢谢了!
yyu423 2011-05-20
  • 打赏
  • 举报
回复
上面的楼主差不多都讲到了。你这样做是按类名动态创建。
首先 RegisterClass(); 定义类名。
然后按照 反射模式创建即可。
至于反射怎么写, 网上搜下一大堆
gobiz 2011-05-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 speak13579 的回复:]
那要怎么把这个方法赋给动态加载的菜单项了?
[/Quote]

首先定义一个函数
procedure TForm1.MyMenuItemClick(Sender: TObject);
var
FClass: TPersistentClass;
FForm : TForm;
begin
FClass := FindClass((Sender as TMenuItem).Hint);
if Assigned(FClass) then
begin
FForm := TFormClass(FClass).Create(Self);
//……你可以随便处理这个根据类名创建出来的窗体。
end
else
ShowMessage('类TForm1未注册!');
end;

然后你在动态创建菜单项的地方,把这个类名(例如:TMyForm1)传递给这个菜单项的Hint属性。
var
FItem: TMenuItem;
begin
FItem := TMenuItem.Create(MainMenu1);
FItem.Caption := '测试';
FItem.Hint := 'TMyForm1';
//……
FItem.OnClick := MyMenuItemClick;
MainMenu1.Items.Add(FItem);
end;

如果,这样你还无法理解的话,我真的就无话可说了……
gobiz 2011-05-19
  • 打赏
  • 举报
回复
首先,在每个MDI窗体单元最下面添加如下语句来注册窗体类(假设类名为TForm1)。
initialization
RegisterClass(TForm1);

end.


然后,在需要根据窗体类名创建窗体的地方做如下操作。
var
FClass: TPersistentClass;
FForm : TForm;
begin
FClass := FindClass('TForm1');
if Assigned(FClass) then
begin
FForm := TFormClass(FClass).Create(Self);
//……你可以随便处理这个根据类名创建出来的窗体。
end
else
ShowMessage('类TForm1未注册!');
end;


大概就是这个样子了。
bdmh 2011-05-18
  • 打赏
  • 举报
回复
GetClass,根据名字找到窗体类

5,392

社区成员

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

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