关闭窗体和动态Show窗体的问题(20)

  • 主题发起人 主题发起人 Flashcqxg
  • 开始时间 开始时间
F

Flashcqxg

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在的代码如下:procedure TFrmState.btnOKClick(Sender: TObject);begin FrmLogin.Show; Self.Close;end;现在我想将FrmLogin换成一个动态的变量传递进来,可以为任意的Form,我传入的是哪个Form的名字,就将哪个Form show出来,谢谢!
 
好像都不会除非就这样procedure TFrmState.btnOKClick(Sender: TObject);begin if fmstr='fmlogin' then FrmLogin.Show else if fmstr='fmlogin1' then fmlogin1.Show else ........自己处理啦 Self.Close;end;
 
TFormClass = class of TForm;var AForm: TForm; AFormClass: TFormClass;begin try AFormClass := TFormClass(GetClass('动态的变量')); AForm := AFormClass.Create(nil); AForm.Show; finally AForm.Free; end;end;
 
可以把Form当作普通变量一样传递。
 
这个 似乎 是类引用的意思。
 
Procedure ShowMyForm(AForm:TForm); begin AForm.Show; end;procedure TFrmState.btnOKClick(Sender: TObject);begin ShowMyForm(FrmLogin); Self.Close;end;
 
楼上貌似可以哦。呵呵
 
wql的也不行呀。不是说代码不行,是实现不了我的要求。或者这样说吧。能不能判断btnOK是否被触发,如果是,则SHOW出我想要的窗体,关闭当前窗体。
 
“wql的也不行呀。不是说代码不行,是实现不了我的要求。或者这样说吧。能不能判断btnOK是否被触发,如果是,则SHOW出我想要的窗体,关闭当前窗体。”不明白你什么意思,没有看到wql是在btnOK的点击事件中才调用的那个过程吗?是不是说ShowMyForm(AForm:TForm)中的参数传不进?那你可以用全局变量就好了var showForm: TForm;procedure TFrmState.btnOKClick(Sender: TObject);begin showForm.Show; Self.Close;end;
 
楼主描述的太不清楚了。把你的想法描述的清楚一点。大家才好出点子。
 
我再说一下我的需求吧:这里是FrmLogin中的一些代码;这里执行 FrmState.Show;同时FrmLogin.Hide;如果点了FrmState上的OK这个button则FrmLogin.Show,FrmState.Close;因为FrmState是一个显示状态或进度的窗体,我需要用的地方比较多,所以想做成一个比较通用的,以便需要使用的地方都使用它。谢谢!
 
后退
顶部