第4章 开发应用程序用户界面
使用C++Builder,可以通过将组件面板上的组件拖放到窗体中来建立用户界面(UI)。
4.1 理解TApplication、TScreen和TForm
TApplication、TScreen和TForm这几个VCL类通过对工程的控制而成为所有C++Builder应用程序的主干。TApplication通过提供属性和方法来封装标准的Windows应用,并由此形成Windows应用程序的基础。
TScreen通常用于在运行时记录已装入的窗体和数据模块,以及一些特定的信息。例如屏幕显示效果,可显示的字体等。TForm的实例用于创建应用程序的用户界面,此外,应用程序中的窗口对话框也基于TForm。
4.1.1 使用主窗体
TForm是创建WindowsGUI应用程序的关键类。缺省时,在工程中创建并保存的{dy}个窗体会成为工程的主窗体,也即运行时{dy}个生成的窗体。当在工程中加入窗体后,可能会决定指定另外的窗体作为应用程序主窗体。指定一个窗体为主窗体可在运行时很容易地测试出来,因为除非改变窗体的生成顺序,否则,主窗体总是运行程序时{dy}个显示的窗体。
若要改变工程的主窗体:
1) 选择Project│Options菜单项。然后选中Forms页。
2) 在MainForm组合框中选择欲作为工程主窗体的窗体名,并选择OK运行应用程序。如果此时运行程序,新选择的主窗体被首先显示。
4.1.2 加入其他窗体
选择File│NewForm菜单项,可以在工程中加入新的窗体。选择View│ProjectManager菜单项。可在工程管理器中查工程中包含的所有窗体及其单元文件的列表。
链接窗体
在工程中加入窗体的同时会将窗体引用加入工程文件,但不会加入其他单元文件。在编写引用新窗体的之前,应在引用该窗体的单元文件中加入对该窗体的引用。这个过程称之为链接窗体。
通常,链接窗体的原因通常是因为要提供访问该窗体中包含的组件。例如在一个包含数据访问组件的数据模块及一个包含数据感知组件的窗体之间,就经常要使用窗体链接。要将一个窗体链接到另一个窗体:
1) 选取需引用另一个窗体的窗体。
2) 选择File│IncludeUnitHdr菜单项。
3) 选择被引用窗体的单元文件名。
4) 选择OK。
将一个窗体链接到另一个只不过是在一个窗体的单元文件中加入另一个窗体单元的头文件。这表示被链接的窗体及其组件当前包括在链接窗体的范围内。
4.1.3 隐藏主窗体
在应用程序启动时可以不显示主窗体。为此,需用到全局变量Application(在下节介绍)要在启动时隐藏主窗体:
1) 选择Project│ViewSource菜单显示工程主文件
2) 在Application→CreateForm()调用之后及Application→Run()调用之前添加下列语句:
Application→Showmainform = false;
Form1→Visible = false; // the name of your main form differ
注意 隐藏窗体更好的方式是在设计时使用对象观察器将窗体Visible的属性设为false,而不是用上述方法在运行时设置。
4.1.4 工作在应用程序层
在所有基于VCL的Windows应用程序中都有TApplication类的全局变量Application。Application与应用程序封装在一起,并提供了许多工作于后台的功能函数。例如Application会处理如何利用菜单调用帮助文件。对于开发独立的应用程序与编写组件而言,理解TApplication如何工作对后者更加重要,不过,即使是开发独立的应用程序,在创建工程时,也应在Project│options菜单项的Application页面中设置Application处理的各个选项。
另外,Application还会接收许多作用于整个应用程序的事件。例如OnActivate可使你在应用程序启动时完成一些操作。OnIdle事件在应用程序空闲时处理后台操作,OnMessage事件可接收Windows消息等等。尽管不能在IDE中直接检查全局变量Application的属性和事件,但可使用另一组件TApplicationEvents来接收事件,并用IDE来提供事件处理程序。
4.1.5 处理屏幕
在创建工程时还会创建一个类型为TScrecn的全局变量Screen。Screen封装了应用程序运行时所在的屏幕的状态。Screen实现的常见任务包括确定光标外观。应用程序运行时的窗口大小。屏幕设备的可用字体列表以及多屏幕方式等。若应用程序运行于多个监视器上。Screen会维护一个监视器列表及它们的尺寸,以便有效的管理用户界面的布局。
4.1.6 管理布局
简单地说,管理用户界面的布局就是控制将控件放入窗体的方式,所选择的放置方式会反映在控件的Top、Left、Width和Height等属性中,在运行时,也可以通过改变这些属性值来改变控件的大小及在窗体中的位置。
控件还有很多其他的属性可用于根据其内容或容器进行自动的调整。这使得窗体的布局可被设置为各部分集成的一个整体。
有两个属性会影响控件相对于父代的大小及位置。
Align属性强制控件沿着父代的某特定边缘放置,或是在其他控件放置结束后填满剩下的整个客户区。
来源: