首页 > 代码库 > 窗体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 遇到的奇怪异常-->进阶问题