首页 > 代码库 > 窗体Showmedol 遇到的奇怪异常-->进阶问题
窗体Showmedol 遇到的奇怪异常-->进阶问题
procedure SetTransparentForm (popupFrm:TForm;Color:TColor;AlphaBlendValue:Integer);var FrmTransparent: TFrmTransparentForm;begin if not Assigned(FrmTransparent) then FrmTransparent:=TFrmTransparentForm.Create(nil); FrmTransparent.fPopupForm :=popupFrm; // FrmTransparent.Color :=TColor(Color); //clTeal;// FrmTransparent.AlphaBlendValue:=AlphaBlendValue; FrmTransparent.FormStyle := fsNormal; FrmTransparent.Visible := False; FrmTransparent.ShowModal; //弹出透明窗体 FreeAndNil(FrmTransparent);end;//以上代码在 exe中没有任何问题,当把代码移到公共包中后://出现局部变量赋值异常(线程或主进程调用),各种调试测试,发现奇葩问题点,做以下调整和解释://局部变量和全局变量 若不首先赋值 :=nil 都会有异常。procedure SetTransparentForm (popupFrm:TForm;Color:TColor;AlphaBlendValue:Integer);var FrmTransparent: TFrmTransparentForm;begin //------------方法一 FrmTransparent := nil;//用私有变量,若没有此句,此段会异常,估计局部变量引起的 。^_^ if not Assigned(FrmTransparent) then FrmTransparent:=TFrmTransparentForm.Create(nil); FrmTransparent.fPopupForm :=popupFrm; // FrmTransparent.Color :=TColor(Color); //clTeal;// FrmTransparent.AlphaBlendValue:=AlphaBlendValue; FrmTransparent.FormStyle := fsNormal; FrmTransparent.Visible := False; FrmTransparent.ShowModal; //弹出透明窗体 FreeAndNil(FrmTransparent); //------------方法二 {FrmTransparentForm:=nil; //用全局变量,没有此句 会偶尔出现 cannot make a visible window model;估计线程原因。 if not Assigned(FrmTransparentForm) then FrmTransparentForm:=TFrmTransparentForm.Create(nil); FrmTransparentForm.fPopupForm :=popupFrm; // FrmTransparentForm.Color :=TColor(Color); FrmTransparentForm.AlphaBlendValue:=AlphaBlendValue; FrmTransparentForm.FormStyle := fsNormal; FrmTransparentForm.Visible := False; FrmTransparentForm.ShowModal; //弹出透明窗体 FreeAndNil(FrmTransparentForm); }end;
窗体Showmedol 遇到的奇怪异常-->进阶问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。