AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > Delphi

第十六章 数据浏览部件的应用及编程(二)

51自学网 http://www.51zixue.net

 

 

16.4.2 TDBGrid部件的事件及应用

 

TDBGrid部件在具有很多重要属性的同时,Delphi也为它赋予了一些事件,以用于控制用户在TDBGrid部件中的操作,我们通过为其中的一些事件编写处理程序,可以有效地控制TDBGrid部件的行为。因为在TDBGrid部件中一次是显示多条记录和记录中的多个字段,也许在实际应用中,不同的用户各有自己特殊的需要,如只想改变其中某一列的值或者控制用户每次只能进出网格中指定的列等等。表16.7列出了TDBGrid部件的主要事件及目的用途。

 

表16.7 TDBGrid部件中的主要事件

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

事 件 名 目 的 用 途

────────────────────────────────

OnColEntor 当用户进入网格各列时,触发该事件

OnColExit 当用户离开网格各列时,触发该事件

OnDblClick 当用户在网格中双击鼠标左键时,触发该事件

OnDragDrop 当用户在网格中用鼠标进行拖放操作时,触发该事件

OnDragOver 当用户在网格中用鼠标拖动网格时,触发该事件

OnDrawDataCell 用于定制绘制网格中各网格单元,当向网格中填充数

据时触发该事件

OnEndDrag 当用户停止拖动网格时,触发该事件

OnEnter 当网格获得焦点时,触发该事件

OnExit 当网格失去焦点时,触发该事件

OnKeyDown 当用户在网格中按下任何键或组合键时,触发该事件

OnKeyPress 当用户在网格中按了任何一个数字键或字母键时,触

发该事件

OnKeyUp 当用户在网格中释放任何被按下的键时,触发该事件

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 

上述这些事件在我们开发实际的应用程序时,是很有用处的,读者们可以仔细地研究这些事件的用途,并参看联机帮助信息。

例如,我们可以为TDBGrid部件的OnDblClick事件编写处理程序,当用户在网格中双击鼠标左键时,弹出一个列表框供用户为网格中某一列选择一个字段值。在例16.1中我们创建如图16.5所示的应用,在Object Inspector中设置各字段部件的Visible属性,在网格中只显示CustNo、Company、Country和City字段。我们为DBGrid编写OnDblclick事件处理过程,当用户编辑修改Country字段时,双击鼠标左键便弹出一个列表框ListBox1,其中显示“中国”、“美国”、“日本”、“英国”、“法国”、“俄罗斯”供用户选择,用户单击其中的国家名称后,将相应的洲名选入网格中。 

其中ListBox1的Items属性写入上述国家的名称,并且设置其Visible属性为False。

6.5 TDBNavigator部件及其应用 

TDBNavigator 部件主要用于在数据集中进行记录导航和为用户操纵数据集中的记录提供了一组简单明了的控制按钮。TDBNavigator部件中包含一组控制按钮,用户单击其中的按钮可以向前向后移动记录指针、插入记录、修改现存记录、投寄对记录的修改、取消修改、删除记录;以及刷新记录的显示等。

图16.7为TDBNavigator部件中的控制按钮。 

下表描述了TDBNavigator部件中的各个控制按钮。 

表16.8 TDBNavigator部件中的控制按钮

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

按钮名称 主 要 功 能

─────────────────────────────────

First 将当前记录指针移到数据库表中第一条记录处

Prior 将记录指针移到当前记录的前一条记录处

Next 将记录指针移到当前记录的后一条记录处

Last 将当前记录指针移到数据库表中最后一条记录处

Insert 调用数据集部件的Insert方法,在当前记录的前面

插入一条新记录,并将数据集部件置为插入状态

Delete 删除当前记录,如果TDBNavigator部件的ConfirmDelete

属性设置为true时,会弹出删除确认对话框

Edit 将数据集部件置为编辑状态,以便用户修改当前的记录

Post 投寄对当前记录的修改

Cancel 取消对当前记录的修改,并将数据集部件置为浏览状态

Refresh 清除数据浏览部件的显示缓冲区,并用与其相连的数据

集部件(TTable或TQuery)中的记录刷新显示缓冲区。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 

TDBNavigator部件的属性较少。下面我们作一简单的介绍:TDBNavigator部件的一个重要属性是VisibleButtons属性,该属性中包含着多个可选的扩展子属性,主要用于选择TDBNavigator部件中各个控制按钮的显示与否的。因为在实际的应用当中,我们并不需要那么多的控制按钮。如在一个浏览数据库表的应用中,我们一般只需要First、Prior、Next、Last四个按钮就行了,那么我们便在VisibleButtons属性中设置其它的按钮为False即可。

ShowHint属性:该属性是布尔型属性,它用于控制是否显示TDBNavigator部件中各按钮的动态提示信息。缺省情况下该属性的值为False,当设置它的值为True时,当用户将鼠标光标停留在TDBNavigator部件中某一个控制按钮上,超过1秒钟时间后,Delphi便会自动显示有关该控制按钮的提示信息。

Hints属性:在缺省情况下,TDBNavigator部件中的各控制按钮都有相应的动态提示信息,如First、Prior、Next、Last等,用户可以根据自己的需要,通过设置Hints属性可以为各控制按钮设置其他的动态提示信息,用户自己设置的动态提示信息会覆盖原来的提示信息。 

16.6 TDBMemo部件及其应用

 TDBMemo部件主要用于显示和编辑数据库表中的大二进制(BLOB)类型的字段值。TDBMemo部件能够显示多行文本,也允许用户在其中输入和修改多行文本信息,它是Delphi中用来显示和编辑数据库表中的大二进制类型的文本字段的唯一的数据浏览部件。

TDBMemo部件的主要属性和作用如下:

ReadOnly属性:这是布尔型属性,为True时,用户只能在TDBMemo部件中显示BLOB型文本信息,如Paradox和dBASE数据库表中的备注型字段。当为False时,用户在TDBMemo 部件中不仅可以显示BLOB文本信息而且还允许用户编辑修改其中的文本信息。

MaxLength属性:该属性是整数型属性,设置该属性的值用于限制用户向TDBMemo 部件中输入字符的个数。若设置该值为0时,表示输入字符的个数没有限制。

SCrollBar属性:说明TDBMemo部件是否显示滚动条。

WordWrap属性:说明在TDBMemo部件中输入文本信息时,输入到右边界时,是否自动换行。

Alignment属性:说明文本信息在TDBMemo部件中的对齐方式,有三种可选值:taLeftJustify、taCenter和taRightJustify。其含义分别是左对齐,居中和右对齐。

在运行过程中,用户对TDBMemo部件中显示的文本信息是不能够进行剪切、拷贝和粘贴操作的,要想具备这些功能,用户必须编程调用CutToClipboard、CopyToClipboard 和PasteFromClipboard方法分别来实现剪切,拷贝和粘贴操作。

AutoDisplay属性:因为TDBMemo部件中包含着大量的文本信息。应用程序在运行过程中要显示其中的信息需要花费很多的时间,特别是当用户移动记录指针时,都要更新TDBMemo部件中显示的信息,这样会大大减慢程序的运行速度。为此Delphi为TDBMemo部件设定了AutoDisplay属性,用来控制是否自动显示表中的备注型字段。当AutoDisplay设置为False时,在TDBMemo部件中只显示其对应表中的字段名而不显示字段中的文本信息,用户如果想浏览字段中的文本信息,用鼠标左键双击TDBMemo部件的内部即可;当设置AutoDisplay属性为True时,在TDBMemo部件中会自动地显示其对应数据库表中的字段值。

这里要注意的是,TDBMemo部件中显示和编辑文本信息的最大字节数为32K,在使用过程中不要超过这一限制。

图16.8是TDBMemo显示数据库表中备注型字段的情形。该例子在C:/Delphi/DEMOS/DA子目录中,项目名称为FashFact.dpr。 

用TDBMemo部件显示备注型字段 

16.7 TDBImage部件及其应用

 TDBImage部件与TDBMemo部件具有很多相似的属性,它是用来显示和编辑数据库表中的BLOB类型的位图图像字段的。

图16.8中同时也使用了一个TDBImage部件来显示数据库表中的位图图像。

缺省情况下,在TDBImage部件中是允许用户对位图图像进行编辑的,如将图像剪切或拷贝到剪帖板上或从剪帖板上粘帖到TDBImage部件中等操作,同时也可以在程序中调用CutToClipboard、CopyToClipboard和PasteFromClipboard方法来实现剪切、拷贝、粘帖操作,当然要进行上述操作必须确保TDBImage的ReadOnly属性值为False。

TDBImage部件也具有一个AutoDisplay属性,该属性的控制和作用与TDBMemo 部件的AutoDisplay属性是一样的。 

16.8 数据浏览部件中的列表框和组合框 

在数据浏览部件中有四个部件类似于标准部件中的列表框和组合框,这些列表框和组合框主要是在数据库应用程序中为用户提供一系列的可选择的字段值。注意这些部件只能与TTable部件配合使用,而不能与TQuery部件配合使用。 

表16.9 数据浏览部件中的列表框和组合框

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

部 件 名 用 途

──────────────────────────────────

TDBlistBox 在用户修改当前记录中指定的字段值时,可用该部件显示

一个字段值列表供用户选择

TDBComboBox 把一个TDBEdit部件与一个可选的字段值列表结合在一起,

当用户修改当前记录中的字段时,可以直接从部件中输入

新的字段,也可以打开下拉式列表框选择其中的一个可选项。

TDBLookapList 当用户要编辑修改数据库表当前记录的指定字段时,使用

该部件提供多个可选项,这多个可选项是从相关的其它数

据库表中读取的,且以列表框的形式提供给用户

TDBLookupCombo 该部件结合了TDBEdit部件和TDBComboBOx部件的功能,用

户可以直接向该部件中输入字段值,也可以从下拉式列表

框中选择一个可选项,只是下拉式列表框中的可选项是从

相关的其他数据库表中读取来的。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

16.9 TDBComboBox部件

TDBComboBox部件中包含了TDBEdit部件的全部功能,它们具有相似性,不同的是在运行过程中TDBComboBox部件同时有一个下拉式列表框,在下拉式列表框中有一组可供选择的项供用户选择,这些可选项是在设计阶段由程序设计人员提供给TDBComboBox部件的Items属性的。图16.9是TDBComboBox部件的下拉式列表框中的内容,注意TDBComboBox部件一定要对应数据库表中的一个字段。 

图16.9 TDBComboBox部件在运行过程中 

TDBComboBox部件的一个重要的属性是Items属性,该属性中包含着TDBComboBox部件在运行过程中下拉式列表框中的可选项,Items中的内容可以在设计阶段指定。

如果一个TDBComboBox部件对应着数据库表中一个字段,那么当用户要编辑修改该字段中的值时,可以打开下拉式列表框,从中选择一个可选项作为字段值,也可以自己在TDBComboBox部件中输入一个其他的字段值。

TDBComboBox部件还有下列一些重要的属性,主要用来控制TDBComboBox部件的显示模式和风格的。

Style属性:控制TDBComboBox部件列表框的显示格式的,当它的取值为:

● CSDropDown

缺省情况下为此值,显示一个下拉式列表框和一个编辑框,下拉式列表框中的可选项都是字符串且各选择项占居的高度一样。

● CsSimple

只显示一个列表框,列表框中的可选项都是字符串,且各选项占居一样的高度。

● CSDropDownList

显示一个下拉式列表框和一个编辑框,但用户不能向编辑框中输入一个在列表框中没有的值。

● CSOwnerDrawFixed和CSOWnerDrawVariable

在列表框中不仅有字符串选项而且还允许有其他类型的选项,如位图图像等,这方面的详细信息请参看联机帮助。 

DropDownCount属性:允许列表框中显示可选项的最大数目,当可选项数目大于该属性值时,用户可以用滚动条察看全部的可选项,当可选项数小于该属性值时,列表框会自动调整其大小以足够显示全部可选项。

ItemHeight属性:当TDBComboBox部件的Style属性被设置为CSOwnerDrawFixed时,用此属性来设置列表框中每个可选项占居的高度。

Sorted属性:布尔型属性,它决定列表框中的可选项是否按字母的排列顺序排序。 

16.10 TDBListBox部件 

TDBListBox部件的基本功能与TDBComboBox部件基本上是一样的,它们的不同之处在于TDBListBox部件没有下拉式列表框而是一个列表框,在列表框中显示一组供用户选择的可选项,在运行过程中,用户单击其中的可选项可以为TDBListBox 部件对应的字段赋一个字段值,但用户不能自己从键盘上输入一个列表框中不存在的字段值。

如果在应用程序中,TDBListBox对应数据库表中一个具体的字段,那么当在数据集中移动记录指针时,当前记录中对应TDBListBox部件的字段的值在TDBListBox部件的列表框中将以高亮度显示,如果当前记录的该字段值不在列表框中,那么列表框中的可选项没有一项是高亮度地显示的。

TDBListBox的几个属性:

IntegralHeight属性:该属性是用来控制TDBListBox部件中的列表框的显示格式的。当该属性值为True(缺省情况下为此值)时,列表框底部的可选项自动地移到上一次被选用过的可选项的上面。当该属性的值为False时,列表框底部的可选项的显示方式取决于TDBListBox部件的ItemHeight属性,并且列表框底部可选项可能不能被全部地显示出来。

 
 

上一篇:第十七章 SQL编程(一)  下一篇:第十六章 数据浏览部件的应用及编程(一)