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;
相关文章
- Microsoft Visual Studio 2010 遇到了异常,可能是由某个扩展导致的。 转载
- PADS Layout VX.2.3 出Gerber文件时遇到一个奇怪的现象
- java导出excel遇到的异常
- Hadoop与HBase中遇到的问题(续)java.io.IOException: Non-increasing Bloom keys异常
- oledb 写入 office2010 以及发布到iis 遇到的奇怪问题总结
- 总结最近遇到的一些异常处理
- Android sharedpreferences遇到一个奇怪的问题,请大神解释下
- Windows窗体应用程序中异常处理的最佳实践?
- java 中遇到的一些异常
- 使用动态Linq实体框架查询抛出的奇怪异常