当前位置:主页>销售管理软件> 列表

我在一个主窗体中点击一[按钮]时动态创建一个窗体(不是MD 找财务管理软件

企业管理软件版1楼: 我在一个主窗体中点击一[按钮]时动态创建一个窗体(不是MDI子窗体),现在想在主窗体的点击另一[按钮]时关闭这个动态创建的窗体。不知如何实现?如何可以使创建的窗体是唯一的(即不能创建多个相同的窗体)?

2楼: 在窗口类中声明动态窗体,然后在一个按钮上使用assigned()判断,值为false则创建窗体
.另一个按钮上也使用assigned()判断,值为true则释放窗体 如财务管理软件

3楼: gulang: 你的方法我也曾经试过但不能通过。

我的代码基本如下:(form1为主窗体、 form2为动态生成的窗体)
procedure TForm1.Button1Click(Sender: TObject); //动态生成窗体
var
fm2:Tform2;
begin
if not assigned(form2) then
begin
fm2:= Tform2.Create(self);
fm2.Show; //不是用ShowModal
end;
end;

procedure TForm1.Button2Click(Sender: TObject); //关闭动态生成的窗体
begin
if Assigned(form2) then form2.Close;
end;

4楼: 使用一个标识符表示一个窗口已经创建,下次创建时根据此标识符判断是否已经创建了此窗口!或者楼主可以在关闭时即释放该窗口,然后再重新创建。

5楼: unit Unit1;



interface

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

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
form2:Tform2;
end;

var
Form1: TForm1;

implementation


{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
if not assigned(form2) then
begin
form2:=Tform2.Create(self);
form2.Show;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if assigned(form2) then
freeandnil(form2);
end;

end.

6楼: 本人用D7做的一个示例,XP环境下测试通过,可以参考:

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
fForm2:TForm;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
if not Assigned(fForm2) then
fForm2:=TForm.Create(nil)
else
ShowMessage(''动态窗体已经创建'');
fForm2.Show;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if fForm2=nil then
ShowMessage(''不存在动态窗体'')
else
begin
fForm2.Close;
fForm2 := nil;
end;
end;

end.

企业管理软件版7楼: var
frm:TForm;//窗体变量

//创建和显示窗体
procedure TButton1Onclick();
begin
frm:=Tform.creat(application);
frm.show;
end;
//释放窗体
procedure TButton2Onclick();


begin
if frm<> nil then
frm.free;
end;

8楼: 你这里是两个问题哦。

9楼: 1 你有窗口变量,用上面的。
2. 用单例类。