用Delphi编写一个小程序

用Delphi编写一个小程序,第1张

procedure TForm1FormCreate(Sender: TObject);

begin

label1Caption:='HELLO WORD!';

end;

在这一章里我们主要介绍Delphi的数据访问部件的层次结构 多部件之间的关系 部件的属性 方法 事件以及各部件的应用 这些部件包括

● TSession部件

● 数据集部件(TTable和TQuery)

● TDatasource部件

字段对象TField

● 字段编辑器的使用

● TReport部件和TBatchMove部件

我们对这些部件的属性 方法和事件进行一般性的描述 读者在实际使用Delphi开发应用程序时 还可以通过联机帮助获得有关部件更详细的信息

Delphi数据访问部件的层次结构

Delphi提供了强大的开发数据库应用程序的能力 它给用户提供了大量的数据访问部件 以方便程序设计人员开发数据库应用程序 这些部件中 有些部件继承了另一些部件的属性 方法和事件 也就是说多部件之间存在着继承和被继承的关系 各部件的这种关联便构成了一个层次结构

TSession是全局性的部件 在应用程序运行时 它自动地建立 在设计阶段和运行过程中它是一个不可见的部件

TDatabase部件是为开发客户/服务器数据库应用程序时 设置登录的数据库的有关参数的 它在数据访问部件页上

TDataset部件是不可见的 TTable和TQuery部件是由它派生而来的 这两个部件一般被称为数据集部件 它们在数据访问部件页上

TDatasource部件是连接数据集部件和数据浏览部件的桥梁 它在数据访问部件页上

TFields部件对应于数据库表中的实际字段 它既可以在应用程序的运行过程中动态地生成也可以在程序设计阶段用字段编辑器创建 它是不可见的部件 在程序中我们可以通过TField部件来访问数据库记录的各个字段值

Tsession部件及其应用

TSession部件一般用得较少 但它对于一些特殊的应用是很有用的 在每一个数据库应用程序运行时Delphi自动地创建一个TSession部件 程序设计人既不能看见该部件也不能显示地创建一个TSession 部件 但是我们可以在应用程序中全局性地使用TSession部件的属性 方法

TSession部件的重要属性及作用

TSession部件的许多重要属性是用于控制数据库应用程序与数据库的连接的 在一个应用程序中 可以全局性地设置TSession的有关属性值 对与之相连接的磁盘上的数据库进行控制 TSession部件主要有下列属性

Database属性 是TSession中可以进行连接的所有数据库的数据库名字列表 这些数据库的名字常常是实际数据库的别名 包括数据库的路径 用户名 用户登录口令等参数

DatabaseCount属性 是TSession中可以进行连接的所有数据库的数量 它是一个整数

KeepCounnections属性 是一个布尔型属性 用它说明应用程序是否保持与一个非活动数据库的连接 因为对于一个数据库 当该数据库中没有相应的数据集部件(TTable或TQuery)被打开时 该数据库将自动地变成非活动的数据库 缺省情况下 KeePcounnections的值是True 就是说应用程序总是保持着与数据库的连接 即使数据库变成了非活动的数据库时 也是如此 如果将KeepConnections属性设置成False 那么当数据库由活动状态变成非活动状态时 应用程序与该数据库的连接也随之中断

NetFileDir属性 说明BDE网络控制文件的路径名

PrivateDir属性 说明存取临时文件的路径名

TSession部件的方法

TSession部件中的大部分方法是用于向用户提供与应用程序相连接的数据库的信息 如数据库的名字及别名 数据库中的表名以及数据库引擎BDE的有关参数等 在设计数据库应用程序时 想要获取有关数据库的信息 调用TSession部件的下列方法 将会大大简化程序的设计

GetAliasNames方法 调用该方法 我们可以获得数据库引擎BDE中定义的数据库别名

GetAliasParams方法 该方法主要用于获取我们在BDE中定义数据库别名时所说明的参数值 如BDE所在的目录路径以及实际名称等

GetDatabaseNames 方法 调用该方法可以帮助我们获得当前应用程序可以进行连接的所有数据库的名字 数据库的名字是用户使用BDE工具定义的实际数据库的别名

GetDriverNames方法 数据库引擎BDE可以与多种数据库管理系统相连接 如客户/服务器数据库管理系统Oracle Sybase以及本地数据库管理系统dBASE Paradox等 BDE与每一种数据库管理系统进行连接时 都有相应的驱动程序 而且这些驱动程序都可以选择地安装 通过调用GetDriverNames方法 我们可以获得当前BDE安装的数据库驱动程序的名字

GetDriverParams方法 BDE的数据库驱动程序中包含着多个参数 如支持的民族语言 DBMS的版本号 文件块大小等 对于服务器上的DBMS 还有数据库服务器的名字等等

GetTableNames方法 因为每一个数据库都是由多个数据库表组成的 我们通过说明数据库名 然后调用GetTableNames方法 便可以获得该数据库中全部的数据库表的名字

上述这些方法在调用时都需要一个字符串列表作为参数 而且都返回一个字符串列表的值

TSession部件还有一个叫DropConnections的方法用于控制应用程序与数据库的连接 当调用DropConnections方法时 应用程序与所有的数据库的连接将会切断

TSession部件应用举例

例 :我们创建一个应用程序 通过调用TSession有关的方法获取当前应用程序可以进行连接的数据库的名字以及获取其中任意一个数据库中的全部数据库表的名字

通过TSession部件获取数据库的有关信息

窗体中主要使用了两个列表框 其中列表框DatabaselistBox用于显示数据库的名字 列表框TablelistBox用于显示数据库中的表名 程序运行完后数据库的名字显示在DatabaselistBox列表框中 当用户单击DatabaselistBox列表框中的数据库名时 该数据库全部的数据库表的名字将会显示在TablelistBox列表框中 有关的程序代码如下

lishixinzhi/Article/program/Delphi/201311/25161

Delphi的编程语言是以Pascal为基础的 Pascal语言具有可读性好 编写容易的特点 这使得它很适合作为基础的开发语言 同时 使用编译器创建的应用程序只生成单个可执行文件( EXE) 正是这种结合 使得Pascal成为Delphi这种先进开发环境的编程语言

    本章中 我们将讨论Object Pascal的主要特点 并讲解如何在事件处理过程和其他应用程序中 使用它来编制程序代码 本章将讲解Delphi应用程序中最常用的Object Pascal语法 而不是Pascal语言的一切细节 如果您完全不熟悉Pascal编程 请参阅一些基础的Pascal教程 如果您具有编程经验 并能熟练地使用其他流行程序语言 您将在本章的Object Pascal中发现一些相同的概念 如果您已经熟悉了Borland Pascal 就可以快速浏览或跳过本章

编写Object Pascal程序代码 

在本章中 我们将从熟悉Pascal编程的角度 配合实例 讲解Object Pascal编程的基本方法

在编写自己的Object Pascal程序时 要注意程序的可读性 Pascal语言是英式结构语言 在程序中选择合适的缩排 大小写风格 并在需要时将程序代码分行 会使得程序代码能够很容易地被自己和他人读懂 一般的程序员都有这样的体验 如果不给程序加上适当的注解 一段时间后 自己也难以理清程序的流程 给程序及时地加上注释是良好的编程习惯 Delphi的注释需要加注在{}之间 编辑器会把它们处理成为空白 Delphi保留了Borland Pascal编辑器的风格 关键字采用黑体字 被注释的部分会变暗 这使得编程风格良好 易读易写

编写赋值语句 

        在事件处理过程中 最常用到的工作就是把一个新值赋给一个属性或变量 在设计用户界面时 可以使用Object Inspector(Object Inspector)来改变其属性 但有时需要在程序执行时改变属性的值 而且有些属性只能在执行时改变 这些属性在Delphi的在线帮助的 Proprety 主题中被标为执行期属性 进行这种改变 就必须使用赋值语句

       下文的赋值语句表征一个OnClick事件 当按钮按动后 将编辑框部件Edit 的Color属性置为clRed:procedure TForm Button Click(Sender: TObject);beginEdit Color := clRed;end; 

        当按动按钮后赋值语句被执行 编辑框变成红色

        在语句中 部件的名称在属性前 中间用 表示属性的所属关系 这样就准确地指定了要将clRed值赋给哪一部件的哪一属性 赋值号为 := 不论给属性还是给变量赋值 都是将右边的值赋给左边的属性或变量

当将一个属性值 变量 常量或文本数据赋给属性或变量时 所赋值的类型和接受此值的属性或变量的类型应相同或兼容 一个属性或变量的类型定义了此属性或变量的可能值集合 也定义了程序代码可以执行的运算 在前边的例程中 编辑框部件的Color属性和clRed的类型都是TColor 可以在在线帮助中找到一个属性的类型 另外一种方法是在Object Inspector中选定该属性值段 并按下F 键 则类型将在属性说明的结尾处列出 例如Color属性列出下边的语句

Property Color : TColor; 

有些属性是只读(Read Only)的 它们只能被读取 不能被改变 请查阅在线帮助 在Delphi中这些只读属性都有注解

标识符的说明与使用 

标识符是Delphi应用程序中一些量的名称 这些量包括变量(var) 常量(const) 类型(type) 过程(procedure) 方法(Method)及其他 Object Pascal 在应用标识符时 必须首先说明它们 Object Pascal是强类型语言 它的编译器可以检查确保赋给变量或属性的值是正确的类型 以便于您改正错误 因为Object Pascal是编译语言 所以Delphi的执行速度要比使用解释语言快得多 在使用标识符前说明它们 可以减少程序错误并增加代码的效率

变量

变量是程序代码中代表一个内存地址的标识符 而此地址的内存内容在程序代码执行时可以被改变 在使用变量前必须对它进行说明 即对它进行命名 并说明它的类型 在所有变量说明以前加上保留字var 变量说明左边是变量的名称 右边则是该变量的类型 中间用(:)隔开

varValue Sum : Integer;Line : String; 

在窗体中加入一个名称为Edit 的编辑框 再加入一个名称(属性Name)为Add的按钮部件 并建立如下的事件处理过程

procedure TForm addClick(Sender: TObject);varX Y: Integer;beginX := ;Y := ;Edit Text := IntToStr(X + Y);end; 

在本例中 当按动ADD按钮时 编辑框中显示值 在Object Pascal中 必须确保变量或属性被赋予类型相同或兼容的值 您可以尝试将赋给X的值改为 或去掉IntToStr函数 在编译时会出现类型不匹配的错误 这也说明了Object Pascal强类型语言的特点 Object Pascal有多个预定义的数据类型 您可以说明任何这些类型的变量

整形 Integer的范围是 到 占 字节的内存 Shortint从 到 占 字节内存 Longint从 到 占 字节内存 Byte从 到 占 字节 Word从 到 占 字节内存 它们都是没有小数部分的数字

实型 Single可以包含 到 位有效小数部分 占用 字节的内存 Double类可以包含 到 位有效小数部分 占用 字节的内存 Extended类型包含 到 位有效小数部分 占用 字节内存 Comp可以包含 到 位有效小数部分 占用 字节内存 以上实数类型只有在 / 选项[N+]打开才可以使用 Real可以包含 到 位有效小数部分 占用 字节内存 它只有在和以前Borland Pascal兼容的情况下才使用 否则应使用Double或Extended

布尔型 Boolean 只包含true或False两个值 占用 字节内存

       字符型 Char 一个ASCII字符 字符串类型String一串最长可达 个ASCII字符

指针型 Pointer 可以指向任何特定类型

       字符串型 PChar 是一个指向以零结尾的字符串的指针

除了预定义类型外 Delphi还有自行定义的类型 上述例程的TColor就是这种类型 此外 用户还可以定义自己的数据类型 这部分内容将在下文中详细讲述

整型类别和实型类别都各有五种类型 同一类别中 所有的类型与其他同类别的都相容 您可以将一种类型的值赋给相同类别中不同类型的变量或属性 而只需要这个值的范围在被赋值的变量或属性的可能值范围内 例如 对于一个Shortint型的变量 可以接受在 到 范围内的任意整数 例如Shortint类型的 您不能将 赋给它 因为 已经超出了Shortint的范围了 将范围检查功能打开(选用Options|Project 并在Compiler Options Page中选择Range Checking) 将会检查出一个范围错误 如果Range Checking没有被打开 那么程序代码将可以执行 但被赋值的值将不是您期望的值

在一些情况下 您可以进行不同类型的变量或属性的赋值 一般来说 可以将一个较小范围的值赋给一个较大范围的值 例如 您可以将整型值 赋给一个接受实型值的Double属性而使得值成为 但如果将一个Double类型的值赋给整形变量 则会出现类型错误 如果您不清楚类型的兼容性 可以参阅Delphi的在线帮助中 Type Compatibility and Assignment Compatibility 主题

常量 

       常量在说明时就被赋予了一个值 在程序执行过程中是不可改变的 下面的例子说明了三个常量

constPi = ;Answer = ;ProductName = Delphi ; 

象变量一样 常量也有类型 不同的是 常量假设其类型就是常量说明中其所代表的值的类型 上文的三个常量的类型分别是real型 整形 字符串型 常量用 = 表示两边的值是相等的

过程与函数 

lishixinzhi/Article/program/Delphi/201311/8549

(1)Basic简单易学,很容易上手。

(2)VisualBasic提供了强大的可视化编程能力,可以让你轻松地做出漂亮的程序。

(3)众多的控件让编程变得象垒积木一样简单。

(4)VisualBasic的全部汉化让我们这些见了English就头大的人喜不自禁。

;   本实例将演示在程序运行过程中如何循环地播放一个指定的声音文件

    首先在程序的uses段中添加MMSYSTEM 然后在窗体的初始化过程中添加以下代码

    procedure TForm FormCreate(Sender: TObject);    begin    SndPlaySound( c:\RECYCLE WAV SND_ASYNC or SND_LOOP);    end;

    这样 在程序运行的初期 程序就会通过SndPlaySound函数循环不断地播放声音文件c:\RECYCLE WAV

    程序代码如下

    unit Unit ;    interface    uses    Windows Messages SysUtils Variants Classes Graphics Controls Forms     Dialogs MMSYSTEM;    type    TForm = class(TForm)    procedure FormCreate(Sender: TObject);    private    { Private declarations }    public    { Public declarations }    end;    var    Form : TForm ;    implementation    {$R dfm}    procedure TForm FormCreate(Sender: TObject);    begin    SndPlaySound( c:\RECYCLE WAV SND_ASYNC or SND_LOOP);    end;    end

    保存文件 然后按F 键运行程序 在程序运行过程中 程序会不间断地播放声音文件

lishixinzhi/Article/program/Delphi/201311/24722

增加字段部件

字段编辑器Fields Editor中的Add Fields菜单项用于向数据集部件中增加字段部件的 单击Add Fields菜单项时便会打开增加字段部件对话框 如图 所示 Available Fields列表框中显示出数据集部件TTable或TQuery中当前可以用于创建永久字段部件的全部的字段 也就是说Available Fields列表框中显示字段是数据库表中实际存在的字段 而且还没有为这些字段创建相应的永久性的字段部件 在缺省状态下所有的字段都被选择用于创建相应的永久性的字段部件 用鼠标单击其中的字段名可以有选择地创建其相应的永久性的字段部件 选择好有关的字段名之后 单击OK按钮便可以创建永久性的字段部件

字段编辑器的增加字段部件对话框

删除字段部件

用字段编辑器Fields Editor为数据集部件创建好的字段部件都会显示在字段编辑器的Fields列表框中 如果用户认为其中的一些字段部件不合适或不再需要时 可以单击这些不需要的字段部件 然后单击鼠标右键d出一佣d出式菜单 从d出式菜单中选择Delete菜单项 便可删除相应的字段部件 如果在d出式菜单中单击Select All菜单项 然后选择Delete菜单项 这样会删除已创建好的所有的字段部件 某一个字段部件被删除以后 通过单击Add Fields菜单项可以重新创建 只是先前为该字段部件设定的一些属性将不复存在

定义新的字段部件

字段编辑器Fields Editor中的d出式菜单中New Fields菜单项是用来为数据集部件TTable或TQuery创建用于显示目的的新的字段部件 我们可以用它来为数据库表中实际存在的字段创建新的字段部件(如改变字段的数据类型 使它的字段值被显示时不再需有关的类型转换) 但是我们使用New Fields菜单项创建新的字段部件主要是创建计算字段 计算字段并不与数据库表中实际存在的字段对应 它的字段值是根据表中其它的字段值计算而来的 具体的计算表达式由用户为TTable部件或TQuery部件的OnCalCFields事件编写程序代码时决定

定义(创建)计算字段的过程如下

单击字段编辑器中的New Fields菜单项 定义字段对话框如图 所示

在FieldName编辑框中输入新字段部件的名字 或者从下拉式列表框中选择一个已存在的字段部件的名字

在FieldType列表框中为新字段部件选择一个字段类型

单击Calculated检查框 确认定义的新字段部件是计算字段

单击ok按钮 创建上述定义的计算字段部件 此时该字段部件的名字会自动地加入到字段编辑中的Fields列表框中

创建新的计算字段

新的计算字段创建好了之后 它是没有任何字段值的 我们必须要编写相应的程序代码 根据数据库表中实际存在的字段的字段值为计算字段的宝定义字段值 我们为计算字段所在数据集部件的OnCalcFields事件编写代码来为计算字段赋值 其步骤如下

选择数据集部件TTable或TQuery

单击数据集部件的事件页

双击OnCalcFields事件为TTable或TQuery部件编写事件处理过程

TReport部件及其应用

在一般的数据库应用程序中都包含着为最终用户提供输出报表的功能 使用Delphi开发数据库应用程序时 可以使用一个叫TReport的部件来执行报表功能的 报表的具体格式和内容是由Delphi提供的一个专用报表生成工具ReprotSmith创建的 它报表的具体格式和内容生成一个报表文件 然后为TReport部件设置相应的属性参数 由TReport部件执行报表功能

我们可以在设计阶段双击TReport部件 调用ReportSimith工具或者在Delphi程序组内双击ReportSmith图标来调用ReportSmith工具来创建一个报表文件 具体的 *** 作步骤和设计方法请参看ReportSimth工具的使用说明

我们在使用TReport部件执行报表功能时 要设置TReport部件的一些的一些属性 这些属性是

ReportName属性 说明报表文件的名字 就是用ReportSmith创建的报表文件

ReportDir属性 说明报表文件所在的途径名

PreView属性 这是一个布尔型属性 若它的值为True 那么在执行报表功能时 只是在屏幕上显示报表 若它的值为False 则报表内容将在缺省的打印机打印出来

AutoUnload属性 布尔型属性 它的值为True时 在执行完一个报表功能后 自动地从内存中卸出ReportSmith工具 它的值为False时 在运行完一个报表功能后 不从内存中卸出ReportSmith工具 一般情况下 如果应用程序只有一个报表或者只有较少的报表要输出时 应设置AutoUnload属性为True 如果应用程序一次要输出多个报表 那么要应设置AutoUnload属性为False

InitialValues属性 这是一个字符串类型的属性 它是说明报表文件中使用的变量 每一条说明一个变量 如

ReportVAR := Value;

要详细了解创建和使用报表变量的过程请参看创建报表一节

TReport部件要真正执行报表功能以输出一个报表需要调用Run方法 如下所示

Report Run;

TReport部件所具有的重要方法如表 所示

表 TReport部件的方法

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

方法 功 能

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

Run 执行报表功能 输出报表

RunMacro 发送一个宏命令给Reportimith工具

Connect 预先连接报表文件和数据库 在输出报表时不需要登录到数据库

SetVariable 改变说明的报表变量

ReCalcReport 当报表变量改变以后 重新输出报表

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

还有一些其他的数据访问部件如TBatchMove部件 它主要用在两个数据库表之间移动或拷贝帆数据记录 具体的使用请参看本地SQL服务器的使用

应用举例 多个窗体显示同一个数据库表

在应用当中 我们常常需要以不同的视图显示同一个数据库表中的内容 例如要在两窗体中同时显示一个数据库表中一个记录的不同字段时 我们必须要想办法使两个窗体中的数据浏览部件同步地显示数据库表中的同一条记录的不同字段的值 要想做到以不同的视图显示同一个数据库表中的记录 下面两条规则是很重要的

● 多个TDataSource部件能够同时访问同一个数据集部件

● 在多个窗体中显示同一个表时 必须为每个窗体设置一个TDataSource部件 只须为其中的一个窗体设置一个TTable部件

例如 如果想在窗体Form 和Form 中同时显示一个数据库表的记录 最简单可行的办法是 为Form 和Form 各设置一个TDataSource部件叫DataSource DataSource 并在Form 中设置一个TTable部件Table 连接Form 中的Datasource 和Table 在程序运行过程中设置Form 中的DataSource 的DataSet属性为Form 中的Table 代码如下

Format DataSource Dataset := Form Table ;

这样 当Table 被打开时 两个窗体中便可以同步地显示数据库表中的同一条记录了

一个名叫OForms DPR的例子在C:\Delphi\DEMos\DB\TwoForms中(如果Delphi安装在其它的磁盘驱动器中 从相应的磁盘驱动器中可以找到该例子) 它演示了在两个窗体中显示同一个数据库表的记录 应用程序在第一个窗体中打开Contry DB表 并在窗体中显示Name Captial和Continent字段 在第二个窗体中显示Area和Population字段 在第一个窗体中有一个按钮用于打开第二个窗体 两个窗体中都有TDBNavigator部件 用于记录的导航

返回目录 DELPHI基础教程

       编辑推荐

       Java程序设计培训视频教程

       J EE高级框架实战培训视频教程

Visual C++音频/视频技术开发与实战

Oracle索引技术

ORACLE G数据库开发优化指南

Java程序性能优化 让你的Java程序更快 更稳定

C嵌入式编程设计模式

Android游戏开发实践指南

lishixinzhi/Article/program/Delphi/201311/25156

以上就是关于用Delphi编写一个小程序全部的内容,包括:用Delphi编写一个小程序、DELPHI基础教程:数据访问部件的应用及编程(一)[1]、Delphi面向对象的编程方法(一)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10107411.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存