其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

Delphi数据库控件使用入门(一)


发布日期:2023年07月07日
 
Delphi数据库控件使用入门(一)

在数据库应用程序中数据控件是经常要用到的数据控件都是可视的也就是说如果修改了这些构件的属性能在窗体上马上反映出来如果这些构件的Enabled属性设为True并且数据集的Active属性也设为True在设计期就可以看到数据

下面就来介绍一下这些控件的简单应用

指定一个数据源

数据控件必须通过TDataSource构件连接数据集TDataSource构件扮演的角色实际上就是数据控件与数据集之间的桥梁首先把一个数据集构件放到窗体或数据模块上设置它的DatabaseName属性指定要访问的数据库设置它的TableName属性指定要访问的表接着把一个TDataSource构件放到窗体或数据模块上设置它的DataSet属性指定数据集然后把一个数据控件放到窗体上设置它的DataSource属性指定TDataSource构件而这个TDataSource构件的DataSet属性已经指定了一个数据集最后设置数据控件的DataField属性指定要显示的字段不过对于TDBGridTDBCtrlGrid和TDBNavigator构件来说不需要设置DataField属性因为这几个控件是以整个数据集为工作内容的

编辑和更新数据

除了TDBNavigator构件外其他数据控件都是用来显示和编辑数据的这里要介绍怎样编辑数据

要使用户能编辑数据数据集必须进入dsEdit状态如果TDataSource的AutoEdit属性设为False用户不能直接编辑数据除非程序调用Edit函数

要使用户能够在数据控件中修改数据必须把数据控件的ReadOnly属性设为False如果ReadOnly属性设为True数据控件中显示的数据就是只读的一般情况下TDataSource构件的Enabled属性设为True如果这个属性设为False数据控件就无法显示数据更不能修改数据

如果数据集构件的ReadOnly属性设为True数据集就是只读的用户在数据控件中所作的修改不能写到数据集中除了TDBGrid构件外当用户修改了一个字段的值还需要把输入焦点移走新的数据才写到数据集中在移走输入焦点之前用户随时可以按ESC键取消修改在TDBGrid构件建立的栅格中当用户修改了一个字段的值还需要把输入焦点移到另一条记录上新的数据才写到数据集中

禁止和允许数据刷新

当程序正在遍历整个数据集或者搜索一个特定的记录时应当暂时禁止数据控件刷新数据这样能加快遍历或搜索的速度防止屏幕总是在闪烁调用数据集的DisableControls可以暂时禁止连接这个数据集的数据控件刷新数据DisableControls函数通常在循环操作前调用等循环结束后程序应当立即调用数据集构件的EnableControls函数重新允许刷新数据为了确保最后总是能恢复刷新建议采用TryFinally结构这样即使在循环中出现异常也可以保证总能调用EnableControls

下面的代码演示了怎样调用DisableControls和EnableControls函数

CustTableDisableControls;

Try

CustTableFirst;

While not CustTableEOF Do

Begin

CustTableNext;

End;

Finally

CustTableEnableControls;

End;

手动刷新数据

调用数据集的Refresh可以读取数据集中最新的数据并刷新数据控件这个功能在多用户环境尤其有用因为其他用户有可能已改变了数据集中的数据有时候调用Refresh可能会导致意想不到的结果例如如果另一个用户已经删除了一条记录调用Refresh后这条记录将从数据控件中消失

显示单个字段的数据控件

有的数据控件以数据库的一个或几个字段作为工作内容如TDBText和TDBEdit而有的数据控件以整个数据集为工作内容如TDBGrid和TDBNavigator显示单个字段的数据控件往往是从一个标准的Windows控件演化而来的例如TDBEdit构件就可以认为是TEdit的数据感知版本

把数据作为标签显示

TDBText构件是一个只读的数据控件它非常类似于TLabel构件和TStaticText构件TDBText构件能够把数据作为标签显示用来标注其他控件例如可以用一个TDBText构件显示名称(Common_Name字段)

TDBText构件需要指定一个字段当用户使用导航器或其他手段浏览记录时TDBText构件显示的数据将自动变化因为TDBText构件总是显示当前记录的数据

TDBText构件的AutoSize属性一般要设为True这是因为字段的内容长度可能是不同的如果AutoSize属性设为False有些较长的内容可能会被截断

显示和编辑数据

TDBText构件只能显示数据不能编辑数据要既能显示数据又能编辑数据就要用到TDBEdit构件TDBEdit可以认为是TEdit的数据感知(DataAware)版本例如有一个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属性如果这个属性设为表示没有限制

此外ScrollBars属性可以设置要不要加上滚动栏WordWrap属性可以设置是否允许自动绕回Alignment属性可以设置文本的对齐方式在运行期您可以调用CutToClipboard和CopyToClipboard函数把选择的文本剪切和复制到剪贴板中调用PasteFromClipboard能够粘贴剪贴板中的文本

如果AutoDisplay属性设为True当DataField属性所指定的字段的内容改变了时TDBMemo构件会自动刷新如果AutoDisplay属性设为FalseTDBMemo构件上只显示字段名用户必须双击这个构件或程序调用LoadMemo才能刷新数据

上一篇:C语言代码套用在Delphi编程中[5]

下一篇:Delphi 5 Enterprise版10大特点