Delphi7如何新建一个form

在button的click事件中。。... 在button的click事件中。。 展开
 我来答
天马座的流星拳
2015-10-27 · TA获得超过3157个赞
知道大有可为答主
回答量:2756
采纳率:73%
帮助的人:886万
展开全部

首先,需要在当前单元里uses被调用的窗体单元,例如:

uses
  unit2;

然后,就是创建和操作那个窗体了,因为创建方法不同,就到到牵涉后面窗口释放问题,这里提供三种方法,具体看下面的代码和注释。

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    btn1: TButton;
    btn2: TButton;
    btn3: TButton;
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure btn3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

// 引用另一个窗体单元, 写上面的uses里也可以
uses
  Unit2;

{$R *.dfm}

// 方法1,用完就释放,开始
procedure TForm1.btn1Click(Sender: TObject);
begin
  Form2 := TForm2.create(nil);
  try
    Form2.ShowModal;
  finally
    FreeAndNil(Form2);
//    Form2.Free;  也可以只Free
  end;
end;
// 方法1,用完就释放,结束

// 方法2,用完后在当前窗口关闭时再判断并释放,开始
procedure TForm1.btn2Click(Sender: TObject);
begin
  // 由于Assigned()的判断,这种方法释放时必须使用FreeAndNil()
  if Assigned(Form2) then
    FreeAndNil(Form2);
  Form2 := TForm2.create(nil);
  try
    Form2.ShowModal;
  finally

  end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  // 当前窗口释放时,别忘记判断并释放被调用窗口
  if Assigned(Form2) then
    FreeAndNil(Form2);
end;
// 方法2,用完后在当前窗口关闭时再判断并释放,结束

// 方法3,用完后自动释放,开始
procedure TForm1.btn3Click(Sender: TObject);
begin
  // 由于Assigned()的判断,这种方法释放时必须使用FreeAndNil()
  // 因为要处理多次创建该窗口的情况,所以调用前还是需要手动释放的
  if Assigned(Form2) then
    FreeAndNil(Form2);

  // 自动释放,关键在这几行
  Form2 := TForm2.create(Application); // AOwner参数为Application时,表示该窗口在应用程序结束后会被释放
//  Form2 := TForm2.create(Self); // AOwner参数为Self时,表示该窗口在当前窗口释放时会被释放
//  Form2 := TForm2.create(nil); // AOwner参数为nil时,必须手动释放,切记!
  try
    Form2.ShowModal;
  finally

  end;
end;
// 方法3,用完后自动释放,结束

end.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式