Delphi 中的 Application 对 象
TApplication 是用于 Delphi 应用程 序的类型,该类在单元 forms 中声明。 TApplication 是 Delphi 构造 Windows 应 用程序所需的类型,其方法和属性集中包 括了 Windows 操作系统中创建、 运行和销 毁应用程序等既定的基本操作和属性,因 此在用 Delphi 编写 Windows 应用程序时 简化了用户和 Windows 环境之间的借口。 TApplication 封装了以下功能: Windows 消息处理 上下文联机帮助 菜单加速和键盘处理 异常处理 管理由 Windows 操作系统为应用程序 定义的基本部分,如主窗口、窗口类等 每个 Delphi 应用程序自动声明一个 Application 变量作为应用程序的实例。 如果 Delphi 应用程序不是一个 Web 服务器 应 用 程 序 , 那 么 该 变 量 一 定 是 TApplication 类型。因此 TAppli-cation 不 需 要 出 现 在 组 件 选 择 板 (component palette) 中 , 并 在 窗 体 设 计 器 (form designer)中也不能对其进行可视化操作, 故 TApplication 不 具 有 发 布 属 性 (published properties) 。 不 过 , TApplication 的 公 共 属 性 (public properites)在设计时(design-time)是可 以设置或修改的,如在 Project|Options 对话框的 Forms 和 Application 页面中 下面就向大家介绍 TApplication 中 的大部分属性、方法和事件 属性 Active 属性 Active 指明了应用程序是否处 于活动状态且拥有焦点。定义如下: property Active: Boolean; Active 是只读属性。 当应用程序是活 动状态时 Active 为 True,否则为 False。 TApplica-tion 的 构 造 器 (constructor) 置 Active 为 True。如果窗口或应用程序 拥有焦点,那么该应用程序是活动的。当 其它应用程序的窗口成为活的时,当前应 用程序即为非活动的。应用程序关闭时
TApplication 的析构器(destructor) 置 Active 为 False 在应用程序中,可以用一个计时器 (TTimer)来检查属性 Active 的值, 从而确 定当前的应用程序是否是活动状态,以便 作出相应的处理。 也可以在事件 OnActive 和事件 OnDeactive 中定义指定的操作 属性 DialogHandle 属性 DialogHandle 提供使 Delphi 应 用程序使用非
Delphi 对话框的一种机制。 定义如下: property DialogHandle: HWnd; 当使用 API 函数 CreateDialog 创建一个非 模式化对话框时需要使用 DialogHandle, 并且需要查看应用程序消息循环中的消息 以进行相应的操作。比如,当一个非模式 化 对 话 框 收 到 一 条 激 活 消 息 (WM_NCACTIVATE)时可以将其句柄赋值到 DialogHandle,当对话框收到一条解除激 活消息时置 DialogHandle 为 0 属性 ExeName 属性 ExeName 包含了可执行的应用程序文 件名极其路径信息。定义如下:property ExeName: string;ExeName 是只读属性。 使用 ExeName 能够得到应用程序可执行文 件的文件名 这是一个很有用的属性。
例如,运行 光盘中的应用程序 f:\media\myapp.exe 时,可能需要访问目录 f:\media\data\ 中的文件或者确定应用程序所在的驱动器 盘符。 这时可以使用 Delphi 提供的函数 ExtractFilePath 和 ExtractFileName 对 属性 ExeName 进行解析, 从而得到需要的 信息 属性 Handle 属性 Handle 提供了对应用程序主窗 口 句 柄 的 访 问 。 定 义 如 下 : property Handle: HWND;当调用一个需要父窗口句 柄的 Windows API 函数时需要使用 Handle 属性。例如,应用程序中某个动态链接库 (DLL) 可能需要父窗口句柄以使得其自身 能够弹出并且显示在最前端。使用 Application.Handle 构成应用程序的若 干窗口,使得这些窗口在应用程序中能够 被最小化、恢复、有效或无效。注意:编 写一个使用 VCL 窗体的动态链接库时, 应 将主运行程序中主窗口的句柄赋值到该动
1
态链接库的 Application.Handle 属性。 这 样就使得动态链接库的窗体成为主应用程 序的一部分。需要特别指出的是,永远不 要 在 EXE 应 用 程 序 中 给 Application.Handle 赋值 属性 HelpFile 属性 HelpFile 指明了应用