如我的VB代码,如何根据表单名SHOW出该表单?(100分)

  • 主题发起人 主题发起人 ht88th
  • 开始时间 开始时间
H

ht88th

Unregistered / Unconfirmed
GUEST, unregistred user!
DELPHI中能否根据表单名来打开该表单?就如我在VB中所做的一样,我的VB代码如下:
Private Sub Command1_Click()
'定义表单对象变量
Dim MyForm As Form
'Text1中输入的是某个已设计好的表单名
Set MyForm = Forms.Add(Text1.Text)
'将某个表单进行显示。
MyForm.Show
End Sub
请问DELPHI中如何实现此功能? 该功能可使模块、权限控制更灵活。
 
不熟悉VB,你的意思是不是根据类名(字符串)来显示Form?
如果是,就这样:

var
MyForm:TForm;
begin
MyForm:=FindExistingForm(Text1.Text);
MyForm.Show;
end;

function FindExistingForm(FFormName: string): TForm;
var
i: integer;
begin
Result := nil;
try
if FFormName = '' then raise Exception.Create('需要类名!');
with Application do
for i := 0 to ComponentCount - 1 do
if Components.ClassName = ('T' + FFormName) then begin
Result := TForm(Components);
Break;
end;
except
on E: Exception do
ShowMessage(E.Message)
else raise;
end;
end;
 
yostgxf,
感谢你的回答,该方法确实可解决同一工程中的Form调用问题;请问DLL中的表单能用此方法加以循环检测并返回对象,而后调用?
是否一定要用Application.Component进行循环检测部件类名,并在检测到后返回对象,有无更简单的代码?如果我的Application中有很多部件,岂不很费时间?
 
1。DLL中可能不行,我也在关注这个问题。
2。用Application.Component进行循环检测部件类名,主要是Form的类名,应该不会太多,不会化太多的时间。我没有更优的方法,除非你提供句柄。
 

Similar threads

D
回复
0
查看
952
DelphiTeacher的专栏
D
D
回复
0
查看
889
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
968
DelphiTeacher的专栏
D
后退
顶部