//窗体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);