📄 034.htm
字号:
<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=GB2312"><TITLE>-->DELPHI基础教程-->第十四章 简单数据库应用的创建及MASTAPP介绍(二)</TITLE>
<META NAME="keywords" CONTENT=" DELPHI基础教程 第十四章 简单数据库应用的创建及MASTAPP介绍(二)">
<META NAME="description" CONTENT=" - DELPHI基础教程 - 第十四章 简单数据库应用的创建及MASTAPP介绍(二)">
<style>
<!--
#page {position:absolute; z-index:0; left:0px; top:0px}
.tt3 {font: 9pt/12pt "宋体"}
.tt2 {font: 12pt/15pt "宋体"}
a {text-decoration:none}
a:hover {color: blue;text-decoration:underline}
-->
</style>
</HEAD>
<body text="#000000" aLink=#9900ff link=#006699 vLink=#006699 bgcolor="#FFFFFF" leftmargin="3" topmargin="3" marginheight="3" marginwidth="3">
<TABLE WIDTH="100%" CELLPADDING=10 CELLSPACING=0 BORDER=0>
<TR>
<TD CLASS="tt3" VALIGN="top" width="8%" bgcolor="#e0e0e0"><strong><A HREF="035.htm"><FONT style="FONT-SIZE: 9pt">后一页</font></A><BR>
<A HREF="033.htm"><FONT style="FONT-SIZE: 9pt">前一页</font></A><BR>
<A HREF="index.html"><FONT style="FONT-SIZE: 9pt">回目录</font></A><BR>
<A HREF="../../../../index.htm"><FONT style="FONT-SIZE: 9pt">回首页</font></A><BR>
</strong>
</TD>
<TD class="tt2" bgcolor="#F5F8F8" width="84%"><center><B><FONT style="FONT-SIZE: 16.5pt" COLOR="#FF6666" FACE="楷体_GB2312">第十四章 简单数据库应用的创建及MASTAPP介绍(二)</FONT></B></center>
<hr color="#EE9B73" size="1" width="94%">
<p><font size="3"><strong>5</strong></font>、改变字段的显示顺序。单击LastInvoiceDate
字段并将它拖放到字段列表框中的第三行,即处于Company和Phone字段之间。此时窗体中显示Customer.DB
表中记录的字段将按新的顺序显示。</p>
<p>6、选择Close按钮,关闭字段编辑器Fields Editor。</p>
<p>7、按F9,运行上述程序。</p>
<p>14.4.2 字段对象的属性设置 </p>
<p>
虽然字段对象是不可见的对象,但是它同样具有很多的属性。在程序设计阶段,我们通过一定的方式可以设置它的有关属性,下面是设置字段对象的属性的方法和步骤。</p>
<p>1、选择窗体中的table1。</p>
<p>2、双击table1,打开字段编辑器Fields Editor。</p>
<p>3、选择要设置属性的字段。</p>
<p>4、在Object Inspector中修改字段对象的属性。</p>
<p> 我们可以按上述方法设置Table1中各字段对象的有关属性,当我们选择Custno字段并修改其属性,窗体内会出现对话</p>
<p> 字段对象的属性</p>
<p> 修改字段CustNo的Alignment属性为taCenter,此时网格中显示的CustNo
字段值由原来的右对齐变成了居中。</p>
<p>表14.5中列出了字段对象在设计阶段可以修改的属性以及属性说明 </p>
<p>表14.5 字段对象的重要属性</p>
<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>
<p>属 性 注 释</p>
<p>─────────────────────────────────</p>
<p>Alignment 说明字段值的显示方式:左对齐、右对齐、居中</p>
<p>─────────────────────────────────</p>
<p>Calculated 当该属性值为True时,表明该字段的值是根据其它字</p>
<p>段的值计算得来的。否则该字段是数据库表中的字段</p>
<p>─────────────────────────────────</p>
<p>DisplayLabel 说明字段在网格部件中显示时的标题,缺省情况下字</p>
<p>段的标题就是字段名</p>
<p>─────────────────────────────────</p>
<p>DisplayWidth 说明字段在网格中显示时所点的列宽度,即字符数</p>
<p>─────────────────────────────────</p>
<p>DisplayFormat 说明字段在显示和编辑状态下的显示格式和输入的过</p>
<p>and EditMask 滤条件(限定用户输入字段值的范围)。</p>
<p>─────────────────────────────────</p>
<p>FieldName 在数据库表中对应于该字段对象的字段名称</p>
<p>─────────────────────────────────</p>
<p>Index 指定该字段对象在数据集部件中的逻辑位置,如Table1</p>
<p>中的第一个字段对象的Index值为0</p>
<p>─────────────────────────────────</p>
<p>Name 字段对象的名称,缺省情况下,它是TTable、TQuery</p>
<p>部件的名称加上字段的名称。如上例中的CUSTNO字段</p>
<p>对象的Name属性值为Table1CUSTNO,通过字段对象的</p>
<p>Name属性可以访问该字段的值,如Table1CUSTNO.Value</p>
<p>─────────────────────────────────</p>
<p>ReadOnly 说明该字段是否能被修改,当该属性值为True时,该</p>
<p>字段的不能被修改</p>
<p>─────────────────────────────────</p>
<p>Visible 当该属性值为True时,在与之相连的网格部件中将不</p>
<p>显示该字段</p>
<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>
<p> 根据表14.5中的属性,
我们可以修改上例中一些字段的某些属性, 使网络中显示表Customer.DB中的记录更符合我们的工作习惯。修改的属性如表14.6所示,
经过修改后的程序运行结果如图14.10所示。</p>
<p>表14.6 修改后的字段对象的属性</p>
<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>
<p>字 段 属 性 属 性 值</p>
<p>─────────────────────────────</p>
<p>CustNo DisplayLabel 客户编号 </p>
<p>─────────────────────────────</p>
<p>Company DisplayLabel 公司名称</p>
<p>─────────────────────────────</p>
<p>Phone DisplayLabel 电话号码</p>
<p>─────────────────────────────</p>
<p>LastInvoiceDate DisplayLabel 购买日期</p>
<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>
<p> 修改字段对象的属性 </p>
<p>14.4.4 字段对象的访问 </p>
<p>
字段对象在应用程序中有动态生成的,也有通过字段编辑器Fields
Editor
创建的永久性的,它们虽然在设计和运行阶段都是不可见,但是它们跟其他的对象一样都拥有自己的属性、方法和事件,因此我们在应用程序中是可以对字段对象进行控制和访问的。</p>
<p>因为动态字段对象是没有自己的名字的,永久性的字段对象有自己的名字,所以对这两种字段对象的访问方法是不一样的。</p>
<p>14.4.4.1 动态字段对象的访问</p>
<p> 动态字段对象存在于数据集部件TTable和TQuery部件中,它们是随着磁盘上的数据库文件的打开而动态生成的,并且每一个字段对象对应于数据库表中的一个字段(即记录的一列),TTable或TQrery部件中所有的字段对象存在属性Fields列表中,Fields列表中的字段对象就像数组元素一样拥有自己的索引号,我们可以用这个索引号来访问字段对象。索引号在程序运行时赋值,从0开始,表中最左边的一列(第一个字段)的索引号为0,紧接着右边一个为1,以此类推。访问这些属性的方法和处理其他对象一样。 </p>
<p>Table1.Fields[0].DisplayLabel:='标识符' </p>
<p> 上述代码让我们访问与Table1相连的数据库表中的第一个字段,并为该字段指定一个标题,这是通过设置它的DisplayLabel属性值为一个特定的标识符来实现的。</p>
<p> 通过索引号来访问Fields属性中的字段在使用For循环对列号进行迭代时会非常有用。但是在大多数简单应用程序中,通过列名(字段名)来访问字段会更加明白而且易读。在TTable部件中,提供了一个名为FieldByName的方法以便让我们通过列名访问字段对象。</p>
<p>Table1.FieldByName('CustNo').DisplayLabel:='标识符'</p>
<p>通过这种途径同样可以访问CUSTOMER.DB表中的CustNo字段,
并为该字段指定一个标题信息。</p>
<p>
现在我们可以建立一个允许用户通过字段名和索引号来访问Customer.DB
表中的字段对象的简单窗体。</p>
<p> 字段对象的访问</p>
<p>
在该应用窗体的运行过程中,我们通过程序来访问其中的字段对象并设置有关的属性,这一控制过程我们放在窗体的OnCreate事件处理过程中。</p>
<p>例14.1 在窗体的Oncreate事件处理过程中访问字段对象。 </p>
<p>procedure TForm1.FormCreate(Sender:TObject);</p>
<p>Begin</p>
<p>with Table1 Do</p>
<p>begin</p>
<p>{通过索引号访问字段对象}</p>
<p>Field[0].DisplayLabel:='客户编号';</p>
<p>{通过字段名访问字段对象}</p>
<p>FieldByName('Company').DisplayLabel:='公司名称'; </p>
<p>FieldByName('Phone').DisplayLabel:='电话号码'; </p>
<p>FieldByName('LastInvoiceDate').DisplayLabel:='购买日期'; </p>
<p>end;</p>
<p>end; </p>
<p>在程序运行过程中访问字段对象 </p>
<p>14.4.4.2 永久性字段对象的访问 </p>
<p> 通过字段编辑器Fields Editor
建立的永久性字段对象的访问相对于动态字段对象的访问要简单得多,我们在程序中可以直接通过字段对象的名称(即Name属性)进行访问。</p>
<p>例如:</p>
<p>Table1CustNo.DisplayLabel:='客户编号';</p>
<p>Table1CustNo.DisplayWidth:=12; </p>
<p>14.4.4.3 字段对象的读取和赋值 </p>
<p> 通过字段对象的Value属性,我们可以读取字段对象的值,例如在如图14.13所示的窗体中,单击Read按钮便可以将Customer.DB表中当前记录的COMPANY字段的值读取到编辑框Edit1中。 </p>
<p> 读取字段对象的字段值</p>
<p>窗体中各部件的属性如表14.7所示 </p>
<p>表14.7 各部件的属性 </p>
<p>━━━━━━━━━━━━━━━━━━━━━━━━</p>
<p>部件的属性 属 性 值</p>
<p>────────────────────────</p>
<p>Button1.Caption &Read</p>
<p>Button1.Name Button1</p>
<p>Label1.Caption 字段值</p>
<p>Label1.Name Label1</p>
<p>Edit1.Text </p>
<p>Edit1.Name Edit1</p>
<p>━━━━━━━━━━━━━━━━━━━━━━━━</p>
<p> </p>
<p>其它部件的的属性跟前面的例子一样。</p>
<p>为Read按钮编辑的OnClick事件处理过程如下: </p>
<p>procedure Form1.TButton1Click(Sender:TObject);</p>
<p>begin</p>
<p>Edit1.Text:=Table1Company.Value;</p>
<p>end; </p>
<p>
在这里要注意的是:从字段对象中读取字段值时必须要将它赋给与之数据类型相匹配的变量,否则会出错。在上面的程序代码中,Table1Company的类型是TStringField
即是字符串类型的字段,而编辑框Edit1的属性Text的类型也是字符串型的,
因而它们是匹配的。如果类型不匹配,则要经过一定的转换才能够相互赋值。如: </p>
<p>Edit1.Text:=Table1CustNo.Value </p>
<p> 这条代码在运行过程中将会出错,因为TablelcustNo是TFloatField
类型即是数值型数据,要在编辑框Edit1中显示数值型数据要经过下列转换: </p>
<p>Edit1.text:=Table1CustNo.AsString; </p>
<p> AsString是字段对象的属性,通过字段对象的AsString属性可以读取字段值并且将它转换成字符串类型。字段对象的字段值可以转换成以下几种类型的数据:</p>
<p>AsString: 将字段值转换成字符串数据</p>
<p>AsBoolean: 将字段值转换成布尔型数据</p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -