if not Assigned(frm_a) then frm_a:=Tfrm_a.Create(application); frm_a.showmodal;
把要创建的窗体名读出来, procedure showform(formclass: tformclass;Fm_caption:string);//打开窗口设置标题过程 begin With FormClass.Create(application) do try if Fm_caption<>'' then caption:=Fm_caption; ShowModal; finally Free; end; end;
把所有的窗体都写成了这形势: TmyForm = class of TformN; TFormN = class(TForm)然后在腰调用的窗体里面的Create加上 RegisterClasses([TFormN]);然后 var a:Tform; begin a := Tmyform(GetClass('TFormN')).Create(nil); a.Show; end;嘿嘿,居然成功了!太好了,谢谢大家的捧场!发分了!
var form:Tform;if formName='TformHello' then from:=TFormHello.create(application) else if formname='TformBye' then form:=Tformbye.create(application) else .....
如果这个用户有这个按钮名称,那么以这个用户登录的,这个按钮就是可以用的状态,反之这个按钮就是不可以用的状态。局限就在于一个按钮只对应一个窗体的弹出。像你所说的呢,也可以,就是在按钮的click里,先声明一个要创建的窗体的类,再去数据库里取窗体name,如果有就创建,没有就不创建了!
frm_a.showmodal;
procedure showform(formclass: tformclass;Fm_caption:string);//打开窗口设置标题过程
begin
With FormClass.Create(application) do
try
if Fm_caption<>'' then
caption:=Fm_caption;
ShowModal;
finally
Free;
end;
end;
TmyForm = class of TformN;
TFormN = class(TForm)然后在腰调用的窗体里面的Create加上
RegisterClasses([TFormN]);然后
var a:Tform;
begin
a := Tmyform(GetClass('TFormN')).Create(nil);
a.Show;
end;嘿嘿,居然成功了!太好了,谢谢大家的捧场!发分了!
你的说方法还是只能显示那一个窗体
打个比方说按钮a的Click事件中,利用一个参数FormName来动态创建FormName所指定的窗体
如:如果FormName=‘TFormHello’,那么就创建TFormHello的实例窗体并显示
如果FormName=‘TFormBye’,那么就创建TFormBye的实例窗体并显示ball_24的意思是这样的
如何做?
所以RegisterClasses([TFormN])最好放到initialization段。
窗体的引用直接使用uses语句不可以了吗
为什么要注册后使用,同时使用注册还要使用Uses语句吗
form:Tform;if formName='TformHello' then from:=TFormHello.create(application)
else if formname='TformBye' then form:=Tformbye.create(application)
else .....