原文地址:delphi依据变量值来打开相应的Form作者:xxhh
当我们只知道Formname的名称,如何动态依据名称来打开相应的Form呢?
首先:调用界面必须Use所有需要打开的Form单元。第二:被调用的Form必须经过初始经,才可被GetClass打开。
// 主界面Form
procedure TForm1.CreateForm(AClassName: string); //打开已创建的Form
begin
if FindFormByClassName(AClassName)<>nil Then
Begin
if GetClass(AClassName)<>nil then
TFormClass(FindClass(AClassName)).Create(self).ShowModal;
end
else
ShowMessage('Can''t find class');
end;
function TForm1.FindFormByClassName(sClassName: string): TForm; //查找此Form在工程中是否存在?
var
I: Integer;
begin
Result := nil;
for I:=0 to Screen.FormCount-1 do
begin
if not (Screen.Forms[I].ClassNameIs(sClassName)) then
Continue;
Result := Screen.Forms[I];
Break;
end;
end;
//被调用需打开的Form2
initialization
RegisterClass(TForm2);