使用TDBGrid
TDBGrid构件以栅格的形式显示和编辑数据集中的数据 它的外观很大程度上取决于下面三个因素 l 一是永久的列对象 二是永久的字段对象 三是数据集构件的ObjectView属性将影响ADT和数组字段的显示方式 对于TDBGrid构件来说 最重要的属性是Columns 这是一个TDBGridColumns对象 用于管理一组TColumn对象 在设计期 可以打开一个编辑器建立永久的列对象 然后在对象观察器中设置列对象的属性
动态的列对象
如果TDBGridColumns的State属性设为csDefault 列是动态生成的 列的属性取决于字段的属性 当字段的属性发生变化时 列的属性也跟着变化 让列动态生成的好处是 可以在运行期动态地选择其他数据集 而不用担心栅格是否适合于显示新的数据集 例如 可以用同一个TDBGrid构件先显示一个Paradox表 再显示查询另一个数据库的结果 在设计期 无法直接修改动态列对象的属性 只能修改字段对象的属性 从而间接地修改动态列对象的属性
动态列对象的生存期也取决于字段对象的生存期 如果数据集没有建立永久的字段对象 那么 当数据集关闭时 所有的动态列对象也将消失 注意 如果在运行期把TDBGridColumns的State属性设为csDefault 将删除所有的列对象 然后根据数据集中的字段对象重建列对象
要能够在设计期自定义栅格 就要用到永久的列对象 建立了永久的列对象后 如果TDBGridColumns的State属性设为csCustomized 就可以独立设置每一列的属性 例如 默认情况下 列的标题显示字段的标签即DisplayLabel属性 通过修改TColumnTitle的Caption属性可以重新指定列的标题 而TField的DisplayLabel属性则不会受到影响 TDBGridColumns的State属性设为csCustomized适合于那些数据集的结构是固定不变的情况 如果需要在运行期切换不同的数据集 就不能把State属性设为csCustomized 要创建永久的列对象 首先要在窗体上选择TDBGrid构件 然后对象观察器中单击Columns属性边上的省略号按钮将打开编辑器
刚开始的时候 这个编辑器是空白的 这是因为 默认情况下 栅格中的列对象都是动态生成的 还没有永久的列对象 要基于数据集中的每一个字段分别创建一个永久的列对象 可以单击鼠标右键 在d出的菜单中选择 Add All Fields 命令 要创建一个独立的永久列对象 可以单击工具栏上的(Add New)按钮 选择这个刚创建的列对象 然后在对象观察器中设置FieldName属性指定一个字段 设置Caption属性指定列的标题 要删除一个列对象 可以单击工具栏上的(Delete Selected)按钮 如果把永久的列都删掉 栅格反而能显示数据集中所有的字段 这是因为 永久的列删掉以后 Delphi 会自动把TDBGridColumns的State属性设为csDefault并且动态生成所有的列
要调整列在栅格中显示的顺序 可以用鼠标把列对象前移或后移 对于永久的列对象来说 它的属性的默认值仍然取自于字段 除非您修改了永久列对象的属性 例如 默认的情况下 列的标题就是字段的DisplayLabel属性 如果修改字段的DisplayLabel属性 列的标题将随之改变 但是 一旦您修改了列对象的Caption属性 列的标题不再与字段的DisplayLabel属性存在联动关系 它们彼此是独立的
前面讲过 创建一个永久的列对象时 需要设置FieldName属性指定一个字段 不过 您也可以让FieldName属性为空 此时 TColumn对象的Field属性将返回NULL 并且该列在栅格中是空白的 空白的列往往用于用户显示一些自定义的内容 如图像或图表等 几个列对象的FieldName属性可以设为同一个字段 由此可见 TDBGrid的FieldCount属性可能小于栅格的列数
数据源
TDataSource构件是一个非可视的构件 它充当了数据集和数据控件之间的桥梁 每一个数据控件都必须指定一个数据源(TDataSource构件) 相应地 TDataSource构件的DataSet属性必须指定一个数据集 下面简单介绍一下TDataSource构件的属性和事件 DataSet属性用于指定一个数据集 在设计期 可以在对象观察器中为DataSet属性选择一个数据集 在运行期 可以通过代码动态地选择数据集 程序示例如下
With CustSource DoBeginIf DataSet = Customers thenDataSet := Orders ElseDataSet := Customers End
也可以指定另一个窗体上的数据集构件 例如
Procedure TForm FormCreate (Sender : TObject)BeginDataSource Dataset := Form Table End
一般情况下 TDataSource构件的名称是无关紧要的 不过 TDataSource构件的名称应当能反映它所连接的数据集 例如 假设TDataSource构件连接的数据集叫Customers 相应地 TDataSource构件的名称最好叫CustomersSource
Enabled属性用于控制TDataSource构件是否与数据集连接 设为True表示连接 设为False表示暂时断开连接 如果Enabled属性设为False 凡是连接于这个数据源的数据控件将变成空白 如果AutoEdit属性设为True 当用户在数据控件中键入字符时 数据集就自动进入dsEdit状态 如果AutoEdit属性设为False 程序必须调用Edit函数才能进入dsEdit状态
lishixinzhi/Article/program/Delphi/201311/8450
delphi怎样调用外部EXE文件? uses WinProcs begin WinExec(……) end 和调用Pascal库函数没什么两样
Delphi hint的字体和色彩如何改变 Delphi中Tapplication的属性有HintColor及HintPause 可以通过设置HintColor改变应用程序中的Hint的颜色 通过设置HintPause改变触发Hint的时间 但遗憾的是 Delphi中Hint的字体不可以改变
Delphi里如何计算日期 算时间在delphi中是最容易的 如下
var ss : TDateTime
其实Tdatetime是一个双精度的浮点数 它的小数点前表示天数 如 ss := ss + 表示从ss开始向后 天 如果 ss = 它就表示 天 当然是从公元 年开始计算的!
如何用Delphi编ScreenSaver? (null) 屏幕保护程序无非是扩展名换成了 SCR的可执行程序 它接受两种命令行参数 s 运行命令参数 c 配置命令参数 Windows通过向程序发 s命令行参数来启动程序 要注意的是 程序的窗口是无边框和标题 窗口大小应与屏幕大小一样 还要注意窗口的事件的处理
Delphi 中如何改目录的名字 调用RenameFile函数 如: RenameFile( c:wang emp c:wang mp )
DELPHI显示JPEG图像文件
只要 uses中加入 JPEG就行 JPEG单元里是有一个TJPEGImage类 可定义一变量如Jpeg 用LoadFromFile调入某个JPEG文件 然后用Form的Canvas Draw(x y Jpeg)即可显示
Delphi中对Jpeg格式文件的处理…
( ) 在 Uses 中加入 JPEG 单元
( ) 定义一个全程变量 例如 var AJPEG : TJPEGImage
( ) 在 Form 的 OnCreate 事件中加入 :
Canvas Pen Color:=clBlackCanvas Pen Style:=psSolidCanvas Brush color:=clBtnFaceCanvas Brush Style:=bsSolid//此上是设置 Canvas 的一些属性 便于以后 //Clear Form and Load a new JPEG fileAjpeg:=TJpegImage Create//动态生成AjpegAjpeg LoadFromFile( D:Temp jpg ) //生成 Ajpeg 后 调入 JPEG 文件
( ) 在 Form 的 OnPain 事件中加入Canvas Rectangle( )//画一个黑框的矩形将图片围住x:= y:= Form Canvas Draw(x y Ajpeg)//以(x y)为左上角输出 JPEG 文件//实际上其作用是当图形被破坏是使图形恢复
( ) 在 Load 或 Browse 按钮的 onClick 事件中加入:
begin if OpenPictureDialog Execute then begin Ajpeg Free//释放旧AjpegAjpeg:=TJpegImage Create//产生一个新的AjpegAjpeg LoadFromFile(OpenPictureDialog Filename)//载入JPEG文件endCanvas Rectangle( )//将Form Clearx:= y:= Form Canvas Draw(x y Ajpeg)//显示新的Ajpegend
DELPHI 启动画面
lishixinzhi/Article/program/Delphi/201311/25017
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)