如何在delphi中创建、使用和关闭表单(create, use, and close forms in delphi)

在Delphi中,每个项目至少有一个窗口——程序的主窗口。Delphi应用程序的所有窗口都基于TForm对象。...

在Delphi中,每个项目至少有一个窗口——程序的主窗口。Delphi应用程序的所有窗口都基于TForm对象。

One Finger Typing

形式

表单对象是Delphi应用程序的基本构建块,是用户运行应用程序时与之交互的实际窗口。表单有自己的属性、事件和方法,您可以使用它们来控制其外观和行为。表单实际上是一个Delphi组件,但与其他组件不同,表单不会出现在组件调色板上。

我们通常通过启动一个新的应用程序(File | new application)来创建表单对象。默认情况下,这个新创建的表单将是应用程序的主表单——在运行时创建的第一个表单。

注意:要向Delphi项目添加其他表单,请选择文件|新表单。

出生

OnCreate在首次创建TForm时触发OnCreate事件,即仅触发一次。负责创建表单的语句位于项目的源代码中(如果表单设置为由项目自动创建)。当创建表单且其Visible属性为True时,以下事件按列出的顺序发生:OnCreate、OnShow、OnActivate、OnPaint。

例如,您应该使用OnCreate事件处理程序来执行初始化杂务,如分配字符串列表。

OnCreate事件中创建的任何对象都应该由OnDestroy事件释放。

OnCreate -> OnShow -> OnActivate -> OnPaint -> OnResize -> OnPaint ...

OnShow此事件表示正在显示表单。OnShow是在窗体显示之前调用的。除了主窗体之外,当我们将forms Visible属性设置为True,或者调用Show或ShowModal方法时,也会发生此事件。

OnActivate当程序激活窗体时,即窗体收到输入焦点时,调用此事件。如果控件不是所需的控件,则使用此事件更改实际获得焦点的控件。

OnPaint、OnResizeEvents(如OnPaint和OnResize)总是在最初创建表单后调用,但也会重复调用。OnPaint在绘制窗体上的任何控件之前发生(用于窗体上的特殊绘制)。

生活

一个形体的诞生并不像它的生与死那样有趣。创建表单时,所有控件都在等待事件处理,程序将一直运行,直到有人试图关闭表单!

死亡

事件驱动的应用程序在其所有窗体关闭且没有代码执行时停止运行。如果在关闭最后一个可见窗体时隐藏窗体仍然存在,则应用程序将显示为已结束(因为没有任何窗体可见),但实际上将继续运行,直到关闭所有隐藏窗体为止。试想一种情况,主窗体很早就被隐藏,而所有其他窗体都被关闭。

... OnCloseQuery -> OnClose -> OnDeactivate -> OnHide -> OnDestroy

OnCloseQuery当我们试图使用close方法或通过其他方式(Alt+F4)关闭表单时,将调用OnCloseQuery事件。因此,此事件的事件处理程序是拦截表单关闭并阻止其关闭的位置。我们使用OnCloseQuery询问用户是否确实希望表单关闭。

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean) ; begin if MessageDlg('Really close this window?', mtConfirmation, [mbOk, mbCancel], 0) = mrCancel then CanClose := False; end;

OnCloseQuery事件处理程序包含一个CanClose变量,该变量确定是否允许关闭窗体。OnCloseQuery事件处理程序可以将CloseQuery的值设置为False(通过CanClose参数),从而中止Close方法。

OnCloseQuery如果OnCloseQuery指示表单应该关闭,则调用OnClose事件。

OnClose事件为我们提供了最后一次阻止表单关闭的机会。OnClose事件处理程序有一个Action参数,具有以下四个可能的值:

  • 佳能。不允许关闭该窗体。就像我们在OnCloseQuery中将CanClose设置为False一样。
  • 卡希德。隐藏表单而不是关闭表单。
  • 卡弗里。表单是关闭的,因此Delphi会释放它分配的内存。
  • 卡米尼化。表单被最小化,而不是关闭。这是MDI子窗体的默认操作。当用户关闭Windows时,将激活OnCloseQuery事件,而不是OnClose。如果要防止Windows关闭,请将代码放入OnCloseQuery事件处理程序中,当然CanClose=False不会这样做。

OnDestroy处理OnClose方法并关闭表单后,将调用OnDestroy事件。将此事件用于与OnCreate事件中的操作相反的操作。OnDestroy用于释放与表单相关的对象并释放相应的内存。

当项目的主窗体关闭时,应用程序终止。

  • 发表于 2021-09-15 04:03
  • 阅读 ( 218 )
  • 分类:IT

你可能感兴趣的文章

windows pc的20个最佳快捷键和热键提示

...划任务的单独快捷方式来实现的。下面的文章向您展示了如何在WindowsVista中执行此操作,但它也应该在Windows7中工作。 在Windows7或Vista中创建没有UAC提示的管理员模式快捷方式 创建快捷方式以禁用/启用屏幕保护程序 How often has th...

  • 发布于 2021-04-13 09:23
  • 阅读 ( 263 )

使用delphi的键入文件文件创建数据库

...t record} Seek(F, FileSize(F)) ; 更改和更新 您刚刚学会了如何编写和读取整个成员数组,但如果您只想查找第10个成员并更改电子邮件,该怎么办?下一个过程正是这样做的: procedure ChangeEMail(const RecN : integer; const NewEMail : str...

  • 发布于 2021-09-06 15:11
  • 阅读 ( 174 )

理解delphi项目和单元源文件

...供了在软件后台出现的许多功能。 例如,应用程序处理如何从程序菜单调用帮助文件。 DPROJ是Delphi项目文件的另一种文件格式,但它以XML格式存储项目设置。 pas文件 PAS文件格式保留用于Delphi单元源文件。您可以通过项目...

  • 发布于 2021-09-06 15:15
  • 阅读 ( 175 )

如何在运行时移动和调整控件大小(在delphi应用程序中)(move and resize controls at run time (in delphi applications))

下面介绍如何在应用程序运行时使用鼠标拖动和调整控件大小(在Delphi窗体上)。 运行时的表单编辑器 在窗体上放置控件(可视组件)后,可以调整其位置、大小和其他设计时特性。但是,在某些情况下,您必须允许应用...

  • 发布于 2021-09-10 20:45
  • 阅读 ( 196 )

在delphi的tdbgrid中显示和编辑备注字段

...会在DBGrid单元格中显示备注字段的内容。 本文提供了如何解决这个TMemoField问题的想法(还有一些技巧)。。。 特默菲尔德 备注字段用于表示长文本或文本与数字的组合。使用Delphi构建数据库应用程序时,TMemoField对象用于...

  • 发布于 2021-09-10 20:47
  • 阅读 ( 168 )

德尔福单元剖析(德尔福初学者版)

如果您打算成为一名优秀的Delphi程序员,那么“接口”、“实现”和“使用”等词需要在您的编程知识中占有特殊的位置。 德尔福项目 当我们创建一个Delphi应用程序时,我们可以从一个空白项目、一个现有项目或Delphi的一...

  • 发布于 2021-09-10 20:53
  • 阅读 ( 181 )

如何自定义dbnavigator(customize the dbnavigator)

...个值标识TDBNavigator对象上的不同按钮。现在,让我们看看如何破解DBNavigator: 增强型dbnavigator​ 首先,通过放置至少一个DBNavigator、一个DBGrid、一个DataSoure和一个您选择的Dataset对象(ADO、BDE、dbExpres等),设置一个简单的数据...

  • 发布于 2021-09-10 22:21
  • 阅读 ( 220 )

如何构建没有gui的控制台应用程序(build console applications with no gui)

...只是控制台应用程序。 新:控制台应用程序 下面介绍如何快速构建在没有图形界面的情况下运行的控制台应用程序。 如果您的Delphi版本高于4,那么您所要做的就是使用Console应用程序向导。Delphi5介绍了控制台应用程序向导...

  • 发布于 2021-09-10 22:34
  • 阅读 ( 251 )

优化delphi程序的内存使用

...活动,最终降低计算机的速度。 02 2006年 何时在delphi应用程序中创建表单 假设您要设计一个包含主窗体和两个附加(模态)窗体的程序。通常,根据您的Delphi版本,Delphi将把表单插入到项目单元(DPR文件)中,并包...

  • 发布于 2021-09-15 03:43
  • 阅读 ( 199 )

如何用delphi显示最顶层的系统模式消息框(display a topmost system modal message box with delphi)

...些操作已完成,或者通常是为了引起用户的注意。 在Delphi中,有几种向用户显示消息的方法。您可以使用RTL中提供的任何现成的消息显示例程,如ShowMessage或InputBox;或者您可以创建自己的对话框(供重用):CreateMessageDialog。...

  • 发布于 2021-09-15 03:45
  • 阅读 ( 228 )
宇之忉
宇之忉

0 篇文章

相关推荐