• 窗体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;
  • 相关阅读:
    如何面试前端工程师!
    CSS实现背景透明,文字不透明(各浏览器兼容)
    IE6中伪类:hover的使用及BUG
    jQuery UIdraggable参数学习
    PHP与正则表达式 2 :一些修饰符与preg_match_all
    通过apktool获取apk package name(包名)以及activity name
    jquery.ui.draggable中文文档
    无法加载php_curl.dll解决办法
    ubuntu命令查询版本和内核版本
    linux zip, unzip命令详解[ubuntu]
  • 原文地址:https://www.cnblogs.com/rogge7/p/5945225.html
Copyright © 2020-2023  润新知