提供Form的名称的字符串,有没有好的办法能够取得该窗口的实例?
比如:我有2个窗口Form2,From3var
F: TForm;
begin F := getFormInstance('Form2');
F.ShowModal;
F.Free; F := getFormInstance('Form3');
F.ShowModal;
F.Free;
end;那么取得Form实例可以这么写
Function getFormInstance(FormName: String): TForm;
begin
if FormName='Form2' then
Result := TFrom2.Create
else if FormName='Form3' then
Result := TFrom3.Create ;
end;
上面的方式虽然可以,但如果有100个Form就要写100个if ,有没有其他方便的方法可以
根据Form的名字取得实例
比如:我有2个窗口Form2,From3var
F: TForm;
begin F := getFormInstance('Form2');
F.ShowModal;
F.Free; F := getFormInstance('Form3');
F.ShowModal;
F.Free;
end;那么取得Form实例可以这么写
Function getFormInstance(FormName: String): TForm;
begin
if FormName='Form2' then
Result := TFrom2.Create
else if FormName='Form3' then
Result := TFrom3.Create ;
end;
上面的方式虽然可以,但如果有100个Form就要写100个if ,有没有其他方便的方法可以
根据Form的名字取得实例
解决方案 »
- 遍历当前目录获取文件信息,调试过程中发现dwFileAttributes出现各种奇怪的值
- wise怎么设置某个文件夹安装到我的文档?
- 关于Form的OnDestroy方法的问题
- 哪位大虾有reportbuilder for delphi7 安装文件的密码 鄙人不胜感激! 高分酬谢!
- 大侠请进,这两个语句是什么意思呀?
- 让IE死掉的5行代码,可以看看;
- 做专业些的数据库程序时使用数据感知控件还是标准控件
- 关于@的介绍
- 怎样利用TStream读取可执行文件中的图片?如一些安装程序,屏幕保护程序等。
- delphi DBGRID 怎么没有循环求和
- 求个取字符串函数
- 之前问的问题,没人回,加些分看那位大哥可以帮我呀.
initialization
//注册,我做的例子中只有form2,form3两个辅助窗体,如果你还有其他的,使用的时候记得都要注册
RegisterClasses([TForm2,TForm3]);unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementationuses Unit2, Unit3;{$R *.dfm}procedure CreateClass(const AClassName : string);
var
tm : TForm;
t : TFormClass;
begin
t := TFormClass(FindClass(AClassName));
tm := t.Create(nil);
try
tm.ShowModal;
finally
tm.Free;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
CreateClass('TForm3');
end;initialization
//注册类
RegisterClasses([TForm2,TForm3]);end.
能解释下
CreateClass这个不用定义么?
initialization
RegisterClasses
两个什么意思?
给xk2y解释下
RegisterClasses在Classes单元,具体意思看源码就了解了,
CreateClass这个不用定义么?这个不明白你到底想问什么,我估计你是不是奇怪这个函数
为什么没有在Private和Public里提前定义,在这个实例程序中不需要定义,这是因为在
CreateClass方法中没有引用 TForm1 类里的任何元素,因此不需要提前定义.