美文网首页
Delphi窗体创建

Delphi窗体创建

作者: 寄居他乡 | 来源:发表于2019-07-23 15:59 被阅读0次

Delphi窗体创建,主要分为模态创建和非模态创建窗体,区别在于当显示模式窗体的时候你是不能操作本程序的其他窗体的,你不能把焦点从模式窗体转到其他窗体上。而非模式窗体则没有这种限制,你可以从一个非模式窗体切换到另外一个非模式窗体上。
一、模态窗体创建。

procedure TForm1.btn1Click(Sender: TObject);
begin
With TForm2.Create(Application) do
Try
   ShowModal;
finally
   free;
end;
end;

要注意的是这样创建出来的窗体的属主是Application,因为Application也是组件对象,它是TComponent的派生类。它的Notification方法不仅会调用其所属组件对象(直接影响),还会波及到该Form对象的所属组件对象。(间接影响)比较好的写法

with TForm.Create(nil) do
try
  ShowModal;
finally
  Free;
end;

如果创建的组件对象生命期较长,而且不是在同一个地方管理,比如在FormCreate方法中创建,在FormDestory方法中销毁,则此时在中间过程使用该组件应判断是否存在该组件

if Assigned(AComponent) then
  begin
  ...
  end;

在销毁时候

AComponent.Free;
AComponent := nil;

或者

freeandnil(AComponent);

二、非模态窗口创建

procedure TForm1.btn2Click(Sender: TObject);
begin
  if not assigned(Form2) then
  begin
    Form2:=TForm2.Create(nil);
    Form2.Show;
  end
end;
//第二种方式创建的的窗体需要在FORM2里释放资源
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   Form2:=nil;           //Form对象指向空地址
  Action := cafree;     //Form关闭后释放占用的内存
end;

相关文章

  • Delphi窗体创建

    Delphi窗体创建,主要分为模态创建和非模态创建窗体,区别在于当显示模式窗体的时候你是不能操作本程序的其他窗体的...

  • Delphi 7:将窗体封装成DLL

    一、首先来一个封装了窗体的DLL 打开 Delphi 7 主窗体,File -> New -> Other -> ...

  • 理解Delphi中Sender用法

    理解Delphi中Sender用法 解析:Procedure是过程,TForm是窗体类,加上数字就是某个窗体,像T...

  • Delphi 7:操作DLL

    一、编写DLL 打开 Delphi 7 主窗体,File -> New -> Other -> DLL Wizar...

  • C# 弹出窗口,TextBox控件交互,不同窗体参数传递

    主窗体是Form1,现在欲创建一个子窗体,并将子窗体上用户输入的数据传给主窗体。 创建新窗体 将该窗体命名为Par...

  • [IDEA插件从零开始系列]-2.创建带GUI的对话框并修改文件

    [TOC] 1. 通过IDEA GUI设计器创建窗体 新建 GUI窗体 填写窗体基本信息image-2021122...

  • 2.4 系统主界面的操作

    系统主界面的制作 MDI窗口的制作 1、创建一个窗体,然后添加子窗体,将一个MDI容器窗体作为父窗体将多个子窗体包...

  • 2.4

    系统主界面的制作 MDI窗口的制作 1、创建一个窗体,然后添加子窗体,将窗体的IsMdiContainer属性设置...

  • C#如何创建MDI子窗体

    C#中怎样创建MDI子窗体?在MDI主窗体的【属性】对话框中,将MDI主窗体的IsMdiContainer属性设为...

  • 创建非矩形 WinForm 窗体

    创建非矩形窗体的过程有两个要素:创建成形的窗体,并编写某些编程逻辑的代码以允许移动和关闭窗体。 第二个步骤是必要的...

网友评论

      本文标题:Delphi窗体创建

      本文链接:https://www.haomeiwen.com/subject/yghalctx.html