Group Box(群组框)、Radio Group(选项按钮组)部件都可以将部件分类、成组。它们都有标题,可以用文字表征成组部件的标题或信息。Radio Group可以进行Column和Item属性的设定,以决定其上的无线按钮的提示文本及显示格式。Panel部件也可以达到将部件分组的目的。通过编程向窗口加一个操作板部件,以书写提示和帮助信息,也不失为一种好方法。以上三个部件都在Standard页。
Menu Designer中还有一个弹出式菜单,它提供了高频菜单创建命令,并可以对模板选项进行快速访问。在菜单设计器窗口中单击右键,或将光标停在菜单设计器上,按Alt-F10,可以调出Menu Designer的弹出式菜单。使用Menu Designer的弹出式菜单可以向菜单增加菜单项、删除菜单项等操作,还可以对标准主菜单模板进行增加、删除、插入等操作。
在一些情况下,您可以进行不同类型的变量或属性的赋值。一般来说,可以将一个较小范围的值赋给一个较大范围的值。例如,您可以将整型值10赋给一个接受实型值的Double属性而使得值成为10.0,但如果将一个Double类型的值赋给整形变量,则会出现类型错误。如果您不清楚类型的兼容性,可以参阅Delphi的在线帮助中“Type Compatibility and Assignment Compatibility”主题。
当您在这个事件处理过程中编写赋值语句时,开发人员并不知道用户会放入哪一个标签,只有通过参考这个标签的名称(Source as TLabel)用户才能知道,并把标签类型赋给Memo1.TFont。Source包含了用户拖放控制部件的名称,只有当Source是一个标签时,这个事件处理过程才允许这个赋值发生。
现在介绍两个应用程序,其中MemoEdit.dpr 是多文档界面的文本编辑器,作为OLE自动化服务器,AutoFrom.dpr是自动化控制器。运行AutoForm前,在Delphi集成开发环境中单击菜单(run | parameters),Delphi弹出运行参数对话框,如图8.5,输入参数后运行状态如图8.6。AutoForm窗体的多个按钮。可对MemoEdit进行操作;如按Creat按钮,MemoEdit产生三个子窗体,如图8.7,按"AddText",子窗体将出现"This text was added through OLE Automation"的字符串“
在应用程序开发中如何检测、处理程序的运行错误是一个很重要的问题。在 Delphi 的集成开发环境( IDE )中提供了一个完善的内置调试器,可以帮助你发现大部分程序错误。但并不是所有的错误都可以被发现,而且当程序涉及到与外设的数据交换或操作外设,如要求用户输入、读写磁盘等时,错误的发生是程序无法控制的,如输入非法字符、磁盘不能读写等。这些情况不仅会导致应用程序异常中止而且可能引起系统的崩溃。针对这些问题,Delphi同时提供了一套强大的异常处理机制。巧妙地利用它,可以使你的程序更为强健,使用更为友好。
Table1.Active设置为True时,Delphi会打开Table1.TableName所指定的数据库表。如果这个数据库表不存在(或表中什么也没有, 即空表), Delphi 会弹出出错信息并且Table1.Active变成False。当Table1.Active被设置成True之后,Table1 部件的一些属性就不能再修改了,如Table1.DatabaseName和Table1.Tablename属性。若要修改它们, 必须首先要将Table1.Active属性设置为False,然后再进行修改,否则,Delphi会弹出错误信息“Cannot perform this operation on an open database”。当看到这个错误信息时,只需把Table1.Active置成False,完成相关的修改后,再把 Table1. Active 属性设置为True。
窗体中其余的部件都是TDBEdit和TLabel部件,它们用于显示Customer.DB中的字段值和Order.DB中的字段值。在该例子中,总共连接了三个表, Customer. DB 表是主要表,Orders.DB表在窗体中起到了双重作用,它既是Customer.Db表的明细表,同时又是Items.DB表的主要表,Items.DB表是Orders.DB表的明细表。
TTable部件中MasterSource属性和MasterFields属性是用于定义两个数据库表的一对多的关系。MasterSource属性指定主表对应的TDataSource部件,MasterFields属性指定主表和明细表之间建立联系的字段,主表和明细表之间建立一对多关系时,可能不只是基于一个字段,可能有多个字段。如果有多个字段,那么在说明MasterFields属性时,多个字段之间要用分号隔开。如Table1.MasterFields := 'OrderNo;CustNo'。在设计阶段可以使用字段连接设计器(Field Link Designer)为两上表创建一对多的关系,在Object Inspector 中双击TTable部件的MasterFields便可以打开Field Link Designer,进行一对多关系的创建。 如创建Customer.DB表和Order.DB表之间的一对多关系时,使用Field Link Designer 如图15.5所示。
图15.5 使用Field Link Designer创建一对多关系
Field Link Designer提供了一种可视化的方法来创建主要──明细表之间的一对多关系。图中Available Indexes组合框中存放着明细表中的关键字段和索引字段,可以选择索引字段进行连接。在主表中选择一个用于连接的关键字段,然后将其与明细表中相应的关键字段连接,单击Add按钮,主要──明细表的连接字段将显示在Joined Fields列表框中,如:
在70年代初,E.E.Codd首先提出了关系模型。70年代中期,IBM公司在研制 SYSTEM R关系数据库管理系统中研制了SQL语言,最早的SQL语言(叫SEQUEL2)是在1976 年 11 月的IBM Journal of R&D上公布的。1979年ORACLE公司首先提供商用的SQL,IBM公司在DB2 和SQL/DS数据库系统中也实现了SQL。
在服务器上执行的计算称为后端处理(back-end processing)。后端硬件(back- end hardware)是一台管理数据资源并执行数据库引擎功能(如存储、操作和保护数据)的计算机。在大型机环境下,后端网络(back-end network)提供大型计算机至大容量存储设备、控制器以及文件服务器的连接。在识别、评价和选择适当的服务器平台时,必须考虑将由该平台提供的服务。例如,一个数据库服务器可能需要快速处理能力。其他可能需要执行的网络服务有通信、应用程序、文件访问以及只读存储器(CD-ROM)服务。随着新的应用技术的广泛使用,可被提供的潜在服务还将继续增加。
Delphi 的数据库特性使你能很容易构造数据库应用程序。这些应用程序能访问Visual dBASE、Paradox、Local InterBase Server for Windows等本地数据库和Oracle、Sybase、Informix、SQL Server和Remote InterBase Server等客户/服务器数据库。
BDE是Borland公司支持Delphi 2.0 Client/Server Suite、Paradox for Windows、Visual dBASE for Windows等产品的核心数据库引擎和互连软件。BDE 提供了丰富和强壮的特性支持客户/服务器应用的开发。
① 在部件单元的interface部分增加一个Register过程。Register不带任何参数,因此声明很简单:
procedure Register;
如果你在已有部件的库单元中增加部件,因为已有Register 过程,因此不须要修改声明。
② 在库单位的implementation部件编写Register过程为每一个你想注册的部件调用过程RegisterComponents,过程RegisterComponents带两个参数:Component Palette的页名和部件类型集。例如,注册名为TNewComponent的部件,并将其置于Component Palette的Samples页,在程序中使用下列过程:
在Delphi可视化设计环境中,允许程序员在代码编辑器中以文本的方式浏览和修改DFM文件内容。当用File/Open命令直接打开DFM文件或者选择窗体设计窗口的弹出式菜单上的View as Text命令时,就会在编辑器中出现文本形式的信息。我们姑且将这种文本形式称之为窗体设计脚本。Delphi提供的这种脚本编辑功能是对Delphi可视化设计的一大补充。当然这个脚本编辑能力是有限制的,比方说不能在脚本任意地添加和删除部件,因为代码和DFM脚本是紧密相连的,任意添加和修改会导致不一致性。然而在动态生成的DFM文件中,就不存在这一限制,后面会介绍DFM动态生成技术的应用。