zoukankan      html  css  js  c++  java
  • 窗体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;
  • 相关阅读:
    第九章、硬件抽象层:HAL
    第八章、让开发板发出声音:蜂鸣器驱动
    第七章、LED将为我闪烁:控制发光二极管
    第六章、第一个Linux驱动程序:统计单词个数
    第五章、搭建S3C6410开发板的测试环境
    Android深度探索(卷1)HAL与驱动开发
    第三次月考
    第二次月考
    Android深度探索(卷1)HAL与驱动开发
    第六章 集合运算
  • 原文地址:https://www.cnblogs.com/rogge7/p/5945225.html
Copyright © 2011-2022 走看看