zoukankan      html  css  js  c++  java
  • Delphi中,除了应用程序主窗口会显示在任务栏上,其它窗口默认都不会显示在任务栏.

    Delphi中,除了应用程序主窗口会显示在任务栏上,其它窗口默认都不会显示在任务栏. Delphi中,除了应用程序主窗口会显示在任务栏上,其它窗口默认都不会显示在任务栏.
    没有MS开发环境中的ShowInTaskBar属性.

    解决办法:
    1.重载窗口 CreateParams 方法以实现,ShowInTaskBar效果
       procedure CreateParams(var Params: TCreateParams);override;
       procedure Tform1.CreateParams(var Params:TCreateParams);
       begin
         inherited CreateParams(Params);
         Params.WndParent := GetDesktopWindow;
       end;
      
       能实现显示在任务栏,但是,会有个令人不快的麻烦,如果你在这个窗口上
       启用 ShowHint 功能(类似ShowToolTip),并设置 相关控件的 Hint,则会在
       显示此提示内容时,   窗口会自动失去焦点,置于主窗口之后,(像是被 SentToBack 了)
       莫名其妙,花了我半个小时,将两个窗口对比,才发现是,重载窗口 CreateParams
        造成的.这才想到用API来作,(不熟悉Delphi,也不知道还有什么方法)

    2.使用API函数 SetWindowLong 实现;
       SetWindowLong在delphi Windows 单元已经作了申明,可直接使用;
       procedure Tform1.FormCreate(Sender: TObject);
       begin
         SetWindowLong(self.Handle, GWL_EXSTYLE, WS_EX_APPWINDOW);
       end;

       终于不再有 重载窗口 CreateParams 方法实现后的 ShowHint 问题.  

    Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=2009731

     

    另选:

    在你的FORM中重载一个函数就行 
    protected 
    procedure CreateParams(var Params: TCreateParams); override; 
    public 

    procedure TForm1.CreateParams(var Params: TCreateParams); 
    begin 
    inherited CreateParams(Params);

  • 相关阅读:
    java List转换为字符串并加入分隔符的一些方法总结
    jackson 实体转json 为NULL或者为空不参加序列化
    马云告别演讲
    Linux chmod命令
    Linux执行shell脚本的方法
    2019第36周日
    2019第36周六
    eclipse中的maven插件
    SpringBoot要点之使用Actuator监控
    eclipse隐藏的列编辑
  • 原文地址:https://www.cnblogs.com/MaxWoods/p/3171997.html
Copyright © 2011-2022 走看看