怎么样灵活显示Form???(100分)

  • 主题发起人 主题发起人 babyboom
  • 开始时间 开始时间
B

babyboom

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在有几十个form,我想实现灵活显示的功能。
比如说:有一个edit窗口,在里面输入form1,点显示,就显示form1.输入form2就显示form2.
怎么样实现???
 
来晚了。也可能用showmodal这样好
 
实际上就是个条件而已阿
 
procedure TForm1.Button1Click(Sender: TObject);
begin
try
Tform(self.FindComponent(edit1.Text)).Show;
except
end;
end;

這樣試應該是可以的,不過不知為啥不行,我正在測.等等有答案了我再說吧.
 
用CASE判断就行了呀。

show方法和showmodal方法不同的是:前者没有排父性,而后者有。看你的需要了。

to sydan:你的不行可能是在使用show 方法前没有构造form类,不知到是不是这个原因。
 
DFW不至于堕落到这种地步吧?yy2001的也能算程序吗?对于字符串类型的变量能用CASE语句
吗?真是服了你们!!
procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
begin
for i:=0 to Screen.FormCount-1 do begin
if UpperCase(Screen.Forms.Name) = UpperCase(Edit1.Text) then begin
Screen.Forms.Show;
break;
end;
end;
end;
 
同意楼上!
 
字符串类型自然不能用作CASE的判断变量,不过可以用char,byte等有序类型,窗体名称有规律,
如:form1,form2...,那用case也没什么不好。
 
教父, 你的程序有我的的意思了,但是我现在有几十个,甚至上百个,是存在bpl包里面的,
是在需要调用它的时候才创建这个form。能不能改进一下???
 
同意教父意见
 
我只提供思路,不可能帮你完成项目吧?!
 
var
i : Integer;
begin
for i:=0 to application.ComponentCount-1 do begin
//注意大小写的匹配
if Application.Components.Name=Edit1.text then
(Application.Components as TForm).show;
//Tform(application.Components).Show; //用此行也可
end;
 
procedure button1click(sender:Tobject);
var
FormClass:TformClass;
CurrForm:TForm;
begin
formClass:=GetClass(Edit1.text);
if FormClass<>nil then
begin
CurrForm:=FormClass.Create(Application);
CurrForm.show;
end;
end;
在主窗体的create事件中,调用
registclasses,把要用到的所有类窗体类注册,否则,用getClass得不到结果!注意
edit中输入的要为窗体的类名,如Tform1,Tform2.如果一定要输入form1这样的
可以用getclass('T'+edit1.text)
 
看这里

http://www.delphibbs.com/delphibbs/dispq.asp?lid=372236
 
后退
顶部