⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 子窗口显示任务条.txt

📁 大量Delphi开发资料
💻 TXT
字号:
unit Unit2;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm2 = class(TForm)
 private
   { Private declarations }
 protected
   procedure CreateParams(var Params: TCreateParams); override;
 public
   { Public declarations }
 end;

var
 Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.CreateParams(var Params: TCreateParams);
begin
 inherited CreateParams(Params);
 Params.WndParent := GetDesktopWindow;
end;

end. 

  一个ShowModal窗体的问题    
    
问题提出:

我想让我做的应用的各个子窗口都单独打开,而不是MDI或SDI(简单地说就象IE这样),因此我在窗口利用了这个函数

procedure Tfrm_form1.CreateParams(VAR Params: TCreateParams);

// 单独打开窗口

begin

Inherited CreateParams(Params);

Params.WndParent := GetDesktopWindow;

end;

这样打开的窗口,在任务栏中是单独的窗口了。

但是如果我在这个窗口中再打开对话框(也是自己做的form)的话,对话框总是出现在应用的主窗口,怎么才能让对话框弹出在Tfrm_form1的前面呢。

也就是说:我的主程序窗口是frm_main, 从frm_main会打开一个窗口frm_form1,frm_form1是单独打开的,从任务栏上看是单独的图标。 现在,我在frm_form1中showmodal打开一个窗口form2,这个form2会出现在应用主窗口frm_main的前面。而我要的是form2出现在frm_form1前面。

答:

Kingron也曾经为了这个问题头疼了好久,后来终于解决掉了:

关键在于Form2,你必须同时重载Form2的CreateParams,同样,修改Params.WndParent为Frm_Form1.Handle即可。

这个问题到此就可以解决,如果你的Form2还需要在其他地方使用,那么就必须采取动态创建的方法,而且必须修改它的CreateParams,把它的Param.WndParent设置为GetActiveWindow即可。
 
   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -