DELPHI基础教程:Delphi形像编程(一)[1]

针对当前热议的DELPHI基础教程:Delphi形像编程(一)[1]话题,我们进行了深入调研和信息整合,力求为您呈现全面客观的内容分析。

 在Delphi中 专门定义了一组对象和部件用以绘制图形 完成一些简单的图像功能 利用这些对象 部件的方法 可以方便地绘制各种常用图形 通过设置它们的属性 能得到不同风格的图形 另外 通过对鼠标事件的定义 可以方便的设计图形绘制程序

 本章将介绍以下内容

  TCanvas TPen TBrush TColor对象的方法及属性

  绘图功能的实现

  TImage TPicture TBitBtn TBitmap部件的方法及属性

  图像观测及处理

 Graphex dpr是一个简单的图形图像应用程序 是对以上这些对象和组件的具体应用 本章将结合此程序进行讲述

  图形对象概述

  TCanvas Object(画布对象)

 TCanvas对象是一个用于绘图的表面 在这个区域上 程序可实现各种绘图功能 很多部件(如TIMage TMemo)的Canvas属性就是TCanvas对象 在部件上绘制图形就是在部件的画布上绘制 TCanvas的Brush Pen Font属性分别是TBrush TPen TFont对象 它们用于定义绘制图形的风格 关于TBrush TPen对象 下节中将详细介绍

 画布的笔的位置定义在PenPos属性中 可用MoveTo方法来移动笔 如果要在画布上输出文本 可用Textout方法

 TCanvas有对象很多方法 可完成常用的绘图功能 现将方法及功能简介

  Arc Arc(x y x y x y x y : Integer)

 Arc方法在椭圆上画一段弧 椭圆由(x y ) (x y ) 两点所确定的椭圆所决定 弧的起点是椭圆圆周和椭圆中心与(x y )连线的交点 弧矩形终点是椭圆圆周和椭圆中心与(x y )连线的交点 以逆时针方向画弧

  Chord Chord(x y x yx x y x y : Integer)

 Chord方法连接椭圆上的两点 椭圆由(x y ) (x y ) 两点所确定的矩形决定 (x y )是始点 (x y )是终点

  Brushcopy Brushcopy(const Dest : TRect;Bitmap : TBitmap;const Source TRect;Color : TColor)

 Brushcopy方法把位图的一部分复制到画布的某个矩形区域 并用画笔的当前颜色替换位图的颜色 参数Dest定义画布的一个矩形区域 该矩形用以填充位图 Bitmap定义位图 Source定义位图中的矩形区域 该区域上的位图将被复制 Color定义画笔中 用以替换位图的颜色

  CopyRect CopyRect(Dest : TRect;Canvas : TCanvas; Source TRect)

 此方法从另一个画布对象上复制部分图像到该画布 Canvas表示源画布 Source是源画布上要复制的图像区域 Dest表示目标画布上将接受复制图像的矩形区域

  Draw Draw(x y : Integer;Graphic : TGraphic)

 此方法在画布给定的象素点坐标(x y)处画Graphic所给的图像 该图像可以是位图 图标或元位图

  Ellips Ellips(x y x y : Integer)

 Ellips方法在画布指定的矩形边界上画一个椭圆 (x y )是矩形左上角的象素坐标 x y 是矩形右下角的象素坐标 如果矩形形成一个区域 将出现一个椭圆

  LineTo LineTo(x y : Integer)

 LineTo从当前位置画一条线至(x y)所指定的位置 并把笔的位置移至(x y)

  MoveTo MoveTo(x y : Integer)

 MoveTo 将笔的当前位置设置到点(x y)处 笔的当前位置在PenPos属性中 改变笔的当前位置使用MoveTo方法 不要设法改变PenPos的值

  Die Die(x y x y x y x y : Longint)

 Die方法绘制椭圆的一部分 椭圆由点(x y ) (x y )所指定的矩形所决定 制的那部分由椭圆中心到(x y ) (x y )两点的两条辐射线所决定

  Polygon Polygon(Points : array of TPrint)

 Polygon方法在画布上绘制一系列的点 各点依次连成线 最后将首尾两点相接形成一个区域 并用当前笔刷填充此区域

  Polyline Polyline(Ports : array of TPort)

 Polyline方法在画布上用当前画笔绘制一系列的点 各点依次连成线

  StretchDraw StretchDraw(Const Rect : TRcct : Graphic : TGraphic)

 此方法在Rect参数指定的矩形内画一图像 图像延伸改变大小以适应矩形

  Rectangle Rectangle(X y x y : Integer)

 Rectangle方法在画布上用当前画刷绘制矩形 (x y )是矩形的左上角 (x y )是矩形的右下角

  RomlRect RomlRect((x y x y x y : Integer)

 DrawFocuseRect

 DrawFocusRect(Const Rect : TRect)

 此方法绘制一矩形以指示此矩形获得焦点 此方法是异或(XOR)函数 第二次调用时原有矩形将消失 DrawFocuseRect绘制的矩形不能滚动 要实现滚动功能则先调用此方法使矩形消失 待滚动过后重新绘制

lishixinzhi/Article/program/Delphi/201311/25247

DELPHI基础教程:Delphi拖放编程[2]

  OnSetName事件

 声明

property OnSetName: TSetNameEvent;

 OnSetName事件发生在Read对象设置部件的Name属性前 OnSetName事件处理过程的var参数Name参数是一个var参数 因此 事件处理过程再将Name赋给部件前 可以修改Name的值 这对于想过滤窗体中部件的名字是很有帮助的

 下面的OnSetName事件处理过程 命名了名字中包含 Button 的部件 并用 PushButton 替代

 procedure TForm ReaderSetName(Reader: TReader; Component: TComponent;

 var Name: string)

 var

 ButtonPos: Integer;

 begin

 ButtonPos := Pos( Button Name)

 if ButtonPos <> then

 Name := Copy(Name ButtonPos ) + PushButton +

 Copy(Name ButtonPos + Length(Name))

 end;

  ReadValue方法

 声明

function ReadValue: TValueType;

 ReadValue方法读取流中紧著的项目的类型 函数返回后 流的指针移到值类型指示符之后

 TValueType是枚举类型 存储在Filer对象的流中的每个项目之前都有一个字节标识该项目的类型 在读每个项目之前都要读取该字节 以指导调用哪个方法来闱取项目 该字节的值就TValuetype定义的值类型之一

  NextValue方法

 声明

function Nextvalue: TValuetype;

 Nextvalue方法的作用也是返回Reader对象流中紧接着的项目的类型 它与ReadValue的区别在于并不移动指针位置

  ReadBoolean方法

 声明

function ReadBoolean: Boolean;

 ReadBoolean方法从Reader对象的流中读取一个布尔值 并相应地移动流位置指针

  ReadChar方法

 声明

function ReadChar: char;

 ReadChar方法从Reader对象的流中读取一个字符

ReadFloat方法

 声明

function ReadFloat: Extended;

 ReadFloat方法从流中读取浮点数

  ReadIdent方法

 声明

function ReadIdent: string;

 ReadIdent方法从流中读取标识符

  ReadInteger方法

 声明

function ReadInteger: Longin

 ReadInteger方法从流中读取整型数字

  ReadString方法

 声明

function Read String: string;

 ReadString方法从Reader对象的流中读取一个字符串 并返回字符串中的内容 该字符串是由Writer对象的WriteString方法写入

  TReader对象的实现

 Filer对象的作用主要是Delphi用来在DFM文件中读写各种类型的数据(包括部件对象) 这些数据的一个本质特征是变长 而且Filer对象将读写数据操作抽象化 包装成对象提供了大量的读写方法 方便了程序的调用 因此在应用程序中可以广泛使Filer对象 充分利用Delphi的面向对象技术 而且Filer对象与Stream对象捆绑在一起 一方面可以在各种存储媒介中存取任意格式的数据 另一方面 由于充分利用面向对象的动态联编 各种读写方法的使用方法是一致的 因此 方法调用很简单 下面我们着重介绍Reader 对象中与读写数据操作有关的属性和方法的实现

TReader属性的实现

 在TReader对象的属性实现中我们重点介绍Position的实现

 Position属性的定义了使用了读写控制 它们分别是GetPosition和SetPosition方法

 TReader = class(TFiler)

 private

 …

 function GetPosition: Longint;

 procedure SetPosition(Value: Longint)

 public

 …

 property Position: Longint read GetPosition write SetPosition;

 end;

 Postition的读写控制方法如下

 function TReader GetPosition: Longint;

 begin

 Result := FStream Position + FBufPos;

 end;

 procedure TReader SetPosition(Value: Longint)

 begin

 FStream Position := Value;

 FBufPos := ;

 FBufEnd := ;

 end;

 在TReader的父对象TFiler对象中介绍过FBufPos和FBufEnd变量 Filer对象内部分配了一个BufSize大小的缓冲区FBufPos就是指在缓冲区中的相对位置 FBufEnd是指在缓冲区中数据结束处的位置(缓冲区中的数据不一定会充满整个缓冲区)

 在GetPosition方法中可以看到Reader对象的Position值和Stream对象的Position值是不同的 Reader对象多了一个FButPos的编移量

  Defineproperty和DefineBinaryproperty方法的实现

 这两个方法是虚方法 在TFiler中是抽象方法 在TReader和riter对象中才有具体的实现

 它们在TReader中的实现如下

 procedure TReader DefineProperty(const Name: string; ReadData: TReaderProc;

 WriteData: riterProc; HasData: Boolean)

 begin

 if CompareText(Name FPropName) = then

 begin

 ReadData(Self)

 FPropName := ;

 end;

 end;

 procedure TReader DefineBinaryProperty(const Name: string;

 ReadData WriteData: TStreamProc; HasData: Boolean)

 var

 Stream: TMemoryStream;

 Count: Longint;

 begin

 if CompareText(Name FPropName) = then

 begin

 if ReadValue <> vaBinary then

 begin

 Dec(FBufPos)

 SkipValue;

 FCanHandleExcepts := True;

 PropValueError;

 end;

 Stream := TMemoryStream Create;

 try

 Read(Count SizeOf(Count))

 Stream SetSize(Count)

 Read(Stream Memory^ Count)

 FCanHandleExcepts := True;

 ReadData(Stream)

 finally

 Stream Free;

 end;

 FPropName := ;

 end;

 end;

 在两个方法都将Name参数值与当前的属性名比较 如果相同则进行读操作 在DefineBinaryproperty中 创建了一个内存流 先将数据读到内存流中然后调用ReadData读取数据

  FlushBuffer的实现

 FlushBuffer方法用于清除Reader对象的内部缓冲区中的内容 保持Reader对象和流在位置(Position)上的同步 其实现如下

 procedure TReader FlushBuffer;

 begin

 FStream Position := FStream Position (FBufEnd FBufPos)

 FBufPos := ;

 FBufEnd := ;

 end;

  ReadListBegin ReadListEnd和EndOfList方法

 这三个方法都是用于从Reader对象的流中读取一连串的项目 并且这些项目都由WriteListBegin写入的标志标定开始和WriteListEnd写入标志 标定结束 在读循环中用EndOfList进行判断 它们是在Reader对象读取流中数据时经常用于的 它们的实现如下

 procedure TReader ReadListBegin;

 begin

 CheckValue(vaList)

 end;

 procedure TReader ReadListEnd;

 begin

 CheckValue(vaNull)

 end;

 function TReader EndOfList: Boolean;

 begin

 Result := ReadValue = vaNull;

 Dec(FBufPos)

 end;

 项目表开始标志是VaList 项目表结束标志是VaNull VaList和VaNull都是枚举类型TValueType定义的常量

lishixinzhi/Article/program/Delphi/201311/25093

DELPHI基础教程:Delphi自定义部件开发(一)[2]

  拖放方法

 拖放方法有三个

 ●BeginDrag : 人工方式下开始一个拖动

 ●EndDrag : 结束一个拖动

 ●Dragging : 判断一个控件是否正被拖动

 这三个方法都被源控件使用

 当DragMode置为dmManual时 拖动必须调用控件的BeginDrag方法才能开始 BeginDrag有一个布尔参数Immediate 如果输入参数为True 拖动立即开始 光标改变到DragCursor的设置 如果输入参数为False 直到用户将光标移动了一定的距离( 个象素点)后才改变光标 开始拖动 这就允许控件接受一个OnClick事件而并不开始拖动操作

 EndDrag方法中止一个对象的被拖动状态 它有一个布尔参数Drop 如果Drop设置为True 被拖动的对象在当前位置放下(能否被接受由目标控件决定) 如果Drop设置为False 则拖动就地被取消

 下面一段程序表明当拖动进入一控制面板时拖动被取消

 procedure TForm Panel DragOver(Sender Source: TObject; X Y: Integer;

 State: TDragState; var Accept: Boolean)

 begin

 Accept := False;

 if (Source is TLabel) and (State = dsDragEnter) then

 (Source as TLabel) EndDrag(False)

 end;

 Draging方法判断一个控件是否正被拖动 在下面的例子中当用户拖动不同的检查框时窗口改变为不同的颜色

 procedure TForm FormActivate(Sender: TObject)

 begin

 CheckBox DragMode := dmAutomatic;

 CheckBox DragMode := dmAutomatic;

 CheckBox DragMode := dmAutomatic;

 end;

 procedure TForm FormDragOver(Sender Source: TObject; X Y: Integer;

 State: TDragState; var Accept: Boolean)

 begin

 if CheckBox Dragging then

 Color := clAqua;

 if CheckBox Dragging then

 Color := clYellow;

 if CheckBox Dragging then

 Color := clLime;

 end;

  开发拖放功能的一般步骤

 拖放作为Windows提供的一种方便操作对象的功能 在Delphi中可以很容易地开发出来 根据拖放操作的过程可以把开发步骤划分为四个阶段 即

 ● 开始拖动操作

 ● 接收拖动项目

 ● 放下拖动项目

 ● 终止拖动操作

 在介绍过程中我们将结合一个TabSet(标签集)的拖放操作实例 界面设计如图 在运行时当用户把一个标签拖动到另一个标签的位置时 该标签将移动到该位置并引起标签集的重新布置

  开始拖动操作

 当拖动模式(DragMode)设置为dmAutomatic时 用户在源控件上按下鼠标时拖动自动开始 当设置为dmManual时通过处理鼠标事件来决定拖动是否开始 如果想开始拖动调用BeginDrag方法

lishixinzhi/Article/program/Delphi/201311/25214

DELPHI基础教程:数据访问部件的应用及编程(一)[1]

  建立图形控制

 图形控制非常类似定制的控制 但它们没有窗口句柄 因此不占有系统资源 对图形控制最大的限制是它们不能接收输入焦点 你需要从TGraphicControl继承 它提供了作图的Canvas和能处理WM_PAINT消息 你需要覆盖Paint方法

  继承窗口控制

 Windows中有一种称之为窗口类的概念 类似于面向对象的对象和类的概念 窗口类是Windows中相同窗口或控制的不同实例之间共享的信息集合 当你用传统的Windows编程方法创建一种新的控制 你要定义一个新的窗口类 并在Windows中注册 你也能基于已有的窗口类创建新的窗口类 这就称为从窗口类继承 在传统的Windows编程中 如果你想建立客户化的控制 你就必须将其做在动态链接库里 就象标准Windows控制 并且提供一个访问界面 使用Delphi 你能创建一个部件包装在已有窗口类之上 如果你已有客户化控制的库 并想使其运行在你的Delphi应用中 那你就能创建一个使你能使用已有控制和获得新的控制的部件 在库单元StdCtrls中有许多这样的例子

  建立非可视化的部件

 抽象对象类型TComponent是所有部件的基础类型 从TComponent直接继承所创建的部件就是非可视化部件 你编写的大多数部件都是可视控制 TComponent定义了部件在FormDesigner中所需的基本的属性和方法 因此 从TComponent继承来的任何部件都具备设计能力

 非可视部件相当少 主要用它们作为非可视程序单元(如数据库单元)和对话框的界面

  建立新部件的方法

 建立新部件的方法有两种

 ● 手工建立部件

 ● 使用Component Expert

 一旦完成建立后 就得到所需的最小功能单位的部件 并可以安装在Component Palette上 安装完后 你就能将新部件放置在窗体窗口 并可在设计阶段和运行阶段进行测试 你还能为部件增加新的特征 更新选择板 重新测试

  手工创建部件

 显然创建部件最容易的方法是使用Component Expert 然而 你也能通过手工来完成相同步骤

 手工创建部件需要下列三步

 ● 创建新的库单元

 ● 继承一个部件对象

 ● 注册部件

 ⑴ 创建新的库单元

 库单元是Object Pascal代码的独立编译单位 每一个窗体有自己的库单元 大多数部件(在逻辑上是一组)也有自己的库单元

 当你建立部件时 你可以为部件创建一个库单元 也可将新的部件加在已有的库单元中

 ① 为部件创建库单元 可选择File/New… 在New Items对话框中选择Unit Delphi将创建一个新文件 并在代码编辑器中打开它

 ② 在已有库单元中增加部件 只须选择File/OPen为已有库单元选择源代码 在该库单元中只能包含部件代码 如果该库单元中有一个窗体 将产生错误

 ⑵ 继承一个部件对象

 每个部件都是TComponent的后代对象 也可从TControl TGraphicControl等继承

 为继承一个部件对象 要将对象类型声明加在库单元的interface部分

 例如 建立一个最简单的从TComponent直接继承非可视的部件 将下列的类型定义加在部件单元的interface部分

 type

 TNewComponent=class(TComponent)

 ……

 end;

 现在你能注册TNewComponent 但是新部件与TComponent没什么不同 你只创建了自己部件的框架

 ⑶ 注册部件

 注册部件是为了告诉Delphi什么部件被加入部件库和加入Component Palette的哪一页

 为了注册一个部件

 ① 在部件单元的interface部分增加一个Register过程 Register不带任何参数 因此声明很简单

 procedure Register;

 如果你在已有部件的库单元中增加部件 因为已有Register 过程 因此不须要修改声明

 ② 在库单位的implementation部件编写Register过程为每一个你想注册的部件调用过程RegisterComponents 过程RegisterComponents带两个参数 Component Palette的页名和部件类型集 例如 注册名为TNewComponent的部件 并将其置于Component Palette的Samples页 在程序中使用下列过程

 procedure Register;

 begin

 RegisterComponents( Samples [TNewComponent])

 end;

 一旦注册完毕 Delphi自动将部件图标显示在Component Palette上

使用Component Expert(部件专家)

 你能使用Component Expert创建新部件 使用Component Expert简化了创建新部件最初阶段的工作 因为你只需描述三件事

 ● 新部件的名字

 ● 祖先类型

 ● 新部件要加入的Component Palette页名

 Component Expert执行了手工方式的相同工作

 ● 建立新的库单元

 ● 继承得到新部件对象

 ● 注册部件

 但Component Expert不能在已有单元中增加部件

 可选择File/New… 在New Items对话框中选择Component 就打开Component Expert对话框

 填完Component Expert对话框的每一个域后 选择OK Delphi建立包括新部件和Register过程的库单元 并自动增加uses语句

 你应该立刻保存库单元 并给予其有意义的名字

  测试未安装的部件

 在将新部件安装在Component Palette之前就能测试部件运行时的动作 这对于调试新部件特别有用 而且还能用同样的技术测试任意部件 无论该部件是否出现在Component Palette上

 从本质上说 你通过模仿用户将部件放置在窗体中的Delphi的动作来测试一个未安装的部件

 可按下列步骤来测试未安装的部件

  在窗体单元的uses语句中加入部件所在单元的名字

  在窗体中增加一个对象域来表示部件

 这是自己增加部件和Delphi增加部件的方法的主要不同点

 你将对象域加在窗体类型声明底部的public部分 Delphi则会将对象域加在底部声明的上面

 你不能将域加在Delphi管理的窗体类型的声明的上部 在这一部分声明的对象域将相应在存储在DFM文件中 增加不在窗体中存在的部件名将产生DFM文件无效的错误

  附上窗体的OnCreate事件处理过程

  在窗体的OnCreate处理过程中构造该部件

 当调用部件的构造过程时 必须传递Owner参数(由Owner负责析构该部件)一般说来总是将Self作为Owner的传入参数 在OnCreate中 Self是指窗体

  给Component的Parent属性赋值

 设置Parent属性往往是构造部件后要做的第一件事时 Parent在形式上包含部件 一般来说Parent是窗体或者GoupBox Panel 通常给Parent赋与Self 即窗体 在设置部件的其它属性之前最好先给Parent赋值

lishixinzhi/Article/program/Delphi/201311/25122

 在这一章里我们主要介绍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基础教程:Delphi形像编程(一)[1]的精彩内容就分享到这里,衷心希望这些信息能为您带来实质帮助。期待您继续支持我们,发现更多有价值的知识。

(2)

猜你喜欢

发表回复

本站作者才能评论

评论列表(3条)

  • 广州等文化传媒有限公司的头像

    我是有物号的签约作者“广州等文化传媒有限公司”

  • 广州等文化传媒有限公司

    本文概览:针对当前热议的DELPHI基础教程:Delphi形像编程(一)[1]话题,我们进行了深入调研和信息整合,力求为您呈现全面客观的内容分析。 在Delphi中 专门定义了一组对象...

  • 广州等文化传媒有限公司
    用户041810 2026年04月18日

    文章不错《DELPHI基础教程:Delphi形像编程(一)[1]》内容很有帮助

联系我们:

邮件:有物号@gmail.com

工作时间:周一至周五,9:30-17:30,节假日休息

关注微信