窗体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;
时间: 2024-11-05 18:54:21

窗体Showmedol 遇到的奇怪异常-->进阶问题的相关文章

3.Java异常进阶

3.JAVA异常进阶 1.Run函数中抛出的异常 1.run函数不会抛出异常 2.run函数的异常会交给UncaughtExceptionhandler处理 3.默认的UncaughtExceptionHandler为空   Thread.setUncaughtExceptionHandler(new UncaughtExceptionHandler(){-...}) 4.启动线程 Thread.start() 例子 UncaughtExceptionTask task=new Uncaught

PyQt通过resize改变窗体大小时ListWidget显示异常

前几天开始的pygame音乐播放器Doco,做的差不多了,上午做到了歌词显示和搜索页面.遇到bug,即通过resize改变ui大小时ListWidget显示异常 #目的: 增加一部分窗口用来显示歌词和搜索页面.也就是在原来播放器的基础上通过resize增加窗口宽度,然后增加相应的内容. #test 由于Doco代码过于臃肿,笔者来一个test来描述上午遇到的问题吧. 首先,欲改变ui宽度,则想到resize Test.resize(852, 714) #设置高和宽 Test.setFixedSi

[转]Eclipse下开发Struts奇怪异常:org.apache.struts.taglib.bean.CookieTei

今天早上开始在Eclipse下学习struts,于是按照李兴华老师的<struts入门视频教程>一步一步地充满快乐的学习,等把登陆程序写完,打开浏览器准备运行的时候,奇怪的异常产生了,异常显示500错误,如下: HTTP Status 500 - -------------------------------------------------------------------------------- type Exception report message description Th

ArcGIS Server SOE开发之奇怪异常:

添加之后结果显示如下:fjsontokenezkBvir0Tj5q31UEst7pTFPwrwocmHklCajKeh-xXM91qWdBXDuQMmtGcaHaaXCJ 具体如下: 该SOE扩展在另一台机器上测试时可以正常添加,不知道为什么,在此台机器上添加时就出现如下异常. 请教群里大神,大神建议换个浏览器试试,换成IE在添加扩展,竟然成功了 大神说:可能是dojo上传组件在chrome浏览器存在bug

druid连接池使用过程遇到的一个奇怪异常

某天日志中连续都是如下的异常: 2017-09-06 21:39:52.936 ERROR [DruidDataSource.java:1974] create connection holder error org.postgresql.util.PSQLException: ERROR: current transaction is aborted, commands ignored until end of transaction block at org.postgresql.core.

ArcEngine奇怪异常:HRESULT:0x80040351

错误如图 根据该博客,http://blog.csdn.net/u011609113/article/details/51155116, 显示该错误为Duplicate Field Names within Table. 直译过来就是:表中存在重复字段 咋可能重复呢,表是我通过ArcCatalog建的,在ArcMap中可以正在打开,新建要素的呀 按照提示,说是字段的问题,我逐个排查了一下,发现字段中,如果有“县”,则弹出这个问题,如果没这个“县”字段,则可以正常运行. 搞不懂 出错时字段如下:

awk 的一个奇怪异常

awk: cmd. line:1: (FILENAME=- FNR=192) fatal: print to "standard output" failed (No space left on device)1045827 awk: cmd. line:1: (FILENAME=- FNR=218) fatal: print to "standard output" failed (No space left on device) 硬盘1.4T  还有400+G 

手机卫士08_应用程序的flags_PopupWidnow悬浮窗体

1,应用管理的ui界面 条目界面的参考ui ①然后显示在ListView上即可(记得优化,程序大小的格式化等) ②获取ListView需要花费一定时间,所以放在子线程,再通过runOnUiThread()更新ui即可 ③创建一个FrameLayout,包含ListView,然后设置一个等待框,在获取的时候显示在页面上. 2,应用程序的flags (可以区分应用程序的安装位置,系统和用户安装的程序等) 2.1 ①在遍历每一个包信息的时候packInfo.application.flags(可能是多

编写高质量代码改善C#程序的157个建议——建议66:正确捕获多线程中的异常

建议66:正确捕获多线程中的异常 多线程的异常处理需要采用特殊的方式.一下这种方式会存在问题: try { Thread t = new Thread((ThreadStart)delegate { throw new Exception("多线程异常"); }); t.Start(); } catch (Exception error) { MessageBox.Show(error.Message + Environment.NewLine + error.StackTrace);