禁止和允许数据刷新
当程序正在遍历整个数据集或者搜索一个特定的记录时,应当暂时禁止数据控件刷新数据,这样能加快遍历或搜索的速度,防止屏幕总是在闪烁。调用数据集的DisableControls可以暂时禁止连接这个数据集的数据控件刷新数据。DisableControls函数通常在循环操作前调用。等循环结束后,程序应当立即调用数据集构件的EnableControls函数重新允许刷新数据。为了确保最后总是能恢复刷新,建议采用Try...Finally结构。这样,即使在循环中出现异常,也可以保证总能调用EnableControls。
下面的代码演示了怎样调用DisableControls和EnableControls函数:
CustTable.DisableControls; Try CustTable.First; While not CustTable.EOF Do Begin ... CustTable.Next; End; Finally CustTable.EnableControls; End; |
手动刷新数据
调用数据集的Refresh可以读取数据集中最新的数据并刷新数据控件,这个功能在多用户环境尤其有用,因为其他用户有可能已改变了数据集中的数据。有时候,调用Refresh可能会导致意想不到的结果。例如,如果另一个用户已经删除了一条记录,调用Refresh后,这条记录将从数据控件中消失。
显示单个字段的数据控件
有的数据控件以数据库的一个或几个字段作为工作内容,如TDBText和TDBEdit,而有的数据控件以整个数据集为工作内容,如TDBGrid和TDBNavigator。显示单个字段的数据控件往往是从一个标准的Windows控件演化而来的,例如,TDBEdit构件就可以认为是TEdit的数据感知版本。
1、把数据作为标签显示
TDBText构件是一个只读的数据控件,它非常类似于TLabel构件和TStaticText构件。TDBText构件能够把数据作为标签显示,用来标注其他控件。例如,可以用一个TDBText构件显示名称(Common_Name字段)。
TDBText构件需要指定一个字段。当用户使用导航器或其他手段浏览记录时,TDBText构件显示的数据将自动变化,因为TDBText构件总是显示当前记录的数据。
TDBText构件的AutoSize属性一般要设为True,这是因为字段的内容长度可能是不同的。如果AutoSize属性设为False,有些较长的内容可能会被截断。
2、显示和编辑数据
TDBText构件只能显示数据,不能编辑数据。要既能显示数据,又能编辑数据,就要用到TDBEdit构件。TDBEdit可以认为是TEdit的数据感知(Data-Aware)版本。例如,有一个TDataSource构件叫CustomersSource,它的DataSet属性指向一个TTable构件叫CustomersTable。把一个TDBEdit构件放在窗体上,其DataSource属性设为CustomersSource,把它的DataField属性设为CustNo。这个TDBEdit构件马上就能显示CustNo字段的值。用户可以在编辑框中键入新的值。
显示和编辑多行文本
TDBMemo构件是TMemo构件的数据感知版本,可以显示dBASE和Paradox数据库中备注字段的内容。
与TDBEdit不同的是,TDBMemo能够以多行的形式显示文本,同时也允许用户键入多行文本。
默认情况下,TDBMemo允许用户修改它显示的文本。如果不想让用户修改文本,只要把ReadOnly属性设为True即可。
要允许用户在文本中插入一个制表符,应当把WantTabs属性设为True,否则,当用户按下Tab键,将把输入焦点移走,而不是插入制表符。要限制用户最多可输入的字符数,可以设置MaxLength属性。如果这个属性设为0,表示没有限制。
此外,ScrollBars属性可以设置要不要加上滚动栏,WordWrap属性可以设置是否允许自动绕回,Alignment属性可以设置文本的对齐方式。在运行期,您可以调用CutToClipboard和CopyToClipboard函数把选择的文本剪切和复制到剪贴板中,调用PasteFromClipboard能够粘贴剪贴板中的文本。
如果AutoDisplay属性设为True,当DataField属性所指定的字段的内容改变了时,TDBMemo构件会自动刷新。如果AutoDisplay属性设为False,TDBMemo构件上只显示字段名,用户必须双击这个构件或程序调用LoadMemo才能刷新数据。
以RTF格式显示文本
TDBRichEdit构件可以认为是TRichEdit构件的数据感知版本,用于以RTF格式显示BLOB字段中的格式化文本。它的用法类似于TDBMemo构件,也能显示多行文本。
注意:尽管TDBRichEdit构件能够显示RTF格式的文本,并且提供了很强的编辑功能,但是,它本身并没有提供用户界面,应用程序必须设计出相应的用户界面,才能把TDBRichEdit 构件强大的功能发挥出来。
默认情况下,TDBRichEdit构件允许用户键入新的文本。如果不想让用户修改文本,可以把ReadOnly属性设为True。要允许用户在文本中插入一个制表符,应当把WantTabs属性设为True,否则,当用户按下Tab键,将把输入焦点移走,而不是插入制表符。
要限制用户最多可输入的字符数,可以设置MaxLength属性。如果这个属性设为0,表示没有限制。如果AutoDisplay属性设为True,当DataField属性所指定的字段的内容改变了时,TDBRichEdit构件会自动刷新。如果AutoDisplay属性设为False,TDBRichEdit构件上只显示字段名,用户必须双击这个构件或程序调用LoadMemo函数才能刷新数据。