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);

  • 相关阅读:
    Reaper自定义模板
    c#3.0 特性
    C#中下载文件出现410错误。
    使用Create task with ContentType创建任务的时候,必须先在task list中加上该ContentType
    tsmmc.msc 远程桌面
    工作流的ReplicatorActivity
    关于Windows2003的远程桌面链接数量。
    【手绘】A old painting ,drawed in middle school ,grade 8
    【Notepad++】Notepad ++ plugin Compare
    【资讯】Fight for this goal ,and better than this~
  • 原文地址:https://www.cnblogs.com/MaxWoods/p/3171997.html
Copyright © 2011-2022 走看看