★★★关于弹出窗口的简单问题~~~~~

suihu 2006-09-01 08:56:23
弹出窗口有两个方法,Show和ShowModal。

现在我想同时弹出多个窗口,无疑就是用Show方法了。

而创建一个窗口时也有两种方式,一是设置其属主,二是nil。

--------------------------------------------------------------------------------

现在有两个窗口,TForm1和TForm2,TForm1是应用程序的主窗口,TForm2是一个普通的窗口

实现的功能是:点击TForm1上的按钮,弹出TForm2窗口。

现在的问题是:如果我把主窗口最小化了,那么TForm2窗口也跟着最小化了

怎样才能使两个窗口互不影响呢(除了关闭应用程序)。

--------------------------------------------------------------------------------
...全文
110 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
andyzhou1101 2006-09-01
  • 打赏
  • 举报
回复
代码

-------------------------------
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure WMSysCommand(var Msg:TWMSysCommand);message WM_SYSCOMMAND;
public
{ Public declarations }
procedure CreateParams(var Params: TCreateParams); override;
end;

var
Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
if not Assigned(Form2) then
Form2 := TForm2.Create(nil);
Form2.Show;
end;

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.ExStyle := WS_EX_APPWINDOW;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
SetWindowLong(Application.Handle,GWL_EXSTYLE,
GetWindowLong(Application.Handle,GWL_EXSTYLE) or WS_EX_TOOLWINDOW);
end;

procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);
begin
if Msg.CmdType=SC_MINIMIZE then
begin
DefaultHandler(Msg);
WindowState:=wsMinimized;
end
else
inherited;
end;

end.


--------------------------------------
--------------------------------------

unit Unit2;

interface

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

type
TForm2 = class(TForm)
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure CreateParams(var Params: TCreateParams); override;
end;

var
Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.ExStyle := WS_EX_APPWINDOW;
end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;

procedure TForm2.FormDestroy(Sender: TObject);
begin
Form2 := nil;
end;

end.

828

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧