窗体Showmedol 遇到的奇怪异常: cannot make a visible window model

时间:2023-03-08 20:49:46
//窗体Showmedol 遇到的奇怪异常: cannot make a visible window  model
//背景:ShowModal A窗体,A窗体再ShowModal B窗体;A是透明背景窗体,B是提示窗体; //第一次使用该全局变量,使用完毕后,FreeAndNil,目的是不影响第二次使用(和重新初始化属性)
if not Assigned(frmAd) then
frmAd := TfrmAd.Create(nil);
frmAd.SetUrl(r46002.Data.URL);
if not Assigned(FrmChangePWTransparent) then
FrmChangePWTransparent:=TFrmChangePWTransparent.Create(nil);
FrmChangePWTransparent.fPopupForm :=frmAd;
//FrmChangePWTransparent.FormStyle := fsNormal;
//FrmChangePWTransparent.Visible := False;
FrmChangePWTransparent.ShowModal;
FreeAndNil(FrmChangePWTransparent); //第二次使用
if not Assigned(frmRemind) then
frmRemind := TfrmRemind.Create(nil);
if not Assigned(FrmChangePWTransparent) then
FrmChangePWTransparent:=TFrmChangePWTransparent.Create(nil);
FrmChangePWTransparent.fPopupForm :=frmRemind;
//FrmChangePWTransparent.FormStyle := fsNormal;
//FrmChangePWTransparent.Visible := False;
FrmChangePWTransparent.ShowModal; //弹出透明窗体
FreeAndNil(FrmChangePWTransparent);
//但是会弹出异常 cannot make a visible window model ,
//百度了解:http://blog.sina.com.cn/s/blog_4b5f4fbc0100kt5p.html
//修改:加多两句,如上面去掉注释。
FrmChangePWTransparent.FormStyle := fsNormal;
FrmChangePWTransparent.Visible := False;
//还是无法解决问题。 //解决:后来想既然是 make a visible window model,猜想第一次使用完后 FrmChangePWTransparent 全局变量没有完全释放【很奇怪】,
//别人就 另立 一个变量,解决问题。经验呀。 var FrmTransparent: TFrmChangePWTransparent; if not Assigned(frmRemind) then
frmRemind := TfrmRemind.Create(nil);
if not Assigned(FrmTransparent) then
FrmTransparent:=TFrmChangePWTransparent.Create(nil);
FrmTransparent.fPopupForm :=frmRemind; //
FrmTransparent.FormStyle := fsNormal;
FrmTransparent.Visible := False;
FrmTransparent.ShowModal; //弹出透明窗体
FreeAndNil(FrmTransparent);