Delphi两个经典数据库控件集详解
delphi dbgriddrawcolumncell的参数
delphi dbgriddrawcolumncell的参数摘要:1.引言2.Delphi数据库组件简介3.DBGrid控件的作用4.DrawColumnCell事件的作用5.DrawColumnCell事件的参数6.使用DrawColumnCell参数的示例7.总结正文:Delphi是一款功能强大的编程语言,广泛应用于Windows平台的软件开发。
在Delphi中,数据库组件是非常重要的组成部分,它们可以帮助开发者轻松地处理各种数据库操作。
DBGrid控件是Delphi中常用的数据库组件之一,它允许用户以网格视图方式显示数据库中的数据。
DrawColumnCell事件是DBGrid控件的一个重要事件,它允许开发者自定义单元格绘制方式。
当DrawColumnCell事件被触发时,Delphi会调用与当前单元格相关联的自定义函数,该函数可以处理绘制单元格所需的任何操作。
DrawColumnCell事件的参数主要包括以下几个:1.Column:表示当前绘制单元格的列。
此参数可以用来区分不同列的绘制操作。
2.Row:表示当前绘制单元格的行。
此参数可以用来区分不同行的绘制操作。
3.Rect:表示当前绘制单元格的位置和大小。
此参数可以用来定位绘制操作的位置。
4.State:表示当前绘制单元格的状态。
此参数可以用来区分单元格的激活、选中、未选中等状态。
5.CellType:表示当前绘制单元格的类型。
此参数可以用来区分不同类型的单元格,如数据单元格、标题单元格等。
6.Style:表示当前绘制单元格的样式。
此参数可以用来设置单元格的背景色、边框样式等。
使用DrawColumnCell事件的参数可以帮助开发者实现各种自定义的绘制操作。
例如,可以利用DrawColumnCell事件为数据单元格添加背景颜色,或者为选中的单元格添加边框样式。
下面是一个简单的示例:```pascalprocedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;const Rect: TRect; Column: TColumnIndex; Row: TGridRow;State: TGridDrawState);beginif (Column = 1) and (Row = 1) thenbeginCanvas.Brush.Color := clRed;Canvas.FillRect(Rect);end;end;```总之,DrawColumnCell事件是DBGrid控件中一个非常实用的功能,通过自定义DrawColumnCell事件的处理函数,开发者可以根据需要实现各种个性化的绘制操作。
Delphi数据库控件使用入门
Delphi数据库控件使用入门2009年11月04日星期三09:572009年04月16日上午08:49Delphi数据库控件使用入门━━━━━━━━━━━━━━━━━━━━━━━━━━在数据库应用程序中,数据控件是经常要用到的。
数据控件都是可视的。
也就是说,如果修改了这些构件的属性,能在窗体上马上反映出来。
如果这些构件的Enabled属性设为True并且数据集的Active属性也设为True,在设计期就可以看到数据。
下面就来介绍一下这些控件的简单应用:指定一个数据源数据控件必须通过TDataSource构件连接数据集。
TDataSource构件扮演的角色实际上就是数据控件与数据集之间的桥梁。
首先,把一个数据集构件放到窗体或数据模块上,设置它的DatabaseName属性指定要访问的数据库,设置它的TableName属性指定要访问的表。
接着,把一个TDataSource构件放到窗体或数据模块上,设置它的DataSet属性指定数据集。
然后,把一个数据控件放到窗体上,设置它的DataSource属性指定TDataSource构件,而这个TDataSource构件的DataSet属性已经指定了一个数据集。
最后,设置数据控件的DataField属性指定要显示的字段。
不过,对于TDBGrid、TDBCtrlGrid和TDBNavigator构件来说,不需要设置DataField属性,因为这几个控件是以整个数据集为工作内容的。
编辑和更新数据除了TDBNavigator构件外,其他数据控件都是用来显示和编辑数据的。
这里要介绍怎样编辑数据。
要使用户能编辑数据,数据集必须进入dsEdit状态。
如果TDataSource的AutoEdit属性设为False,用户不能直接编辑数据,除非程序调用Edit函数。
要使用户能够在数据控件中修改数据,必须把数据控件的ReadOnly属性设为False。
如果ReadOnly属性设为True,数据控件中显示的数据就是只读的。
Delphi7 ADO面板上的控件简介
Delphi7 ADO面板上的控件简介一、 TADO Connection组件该组件用于建立数据库的连接。
ADO的数据源组件和命令组件可以通过该组件运行命令及数据库中提取数据等。
该组件用于建立数据库的连接,该连接可被多个数据集所共享,但是并不是应用程序中必须的,因为ADO数据集及命令组件通过设置其Connection String属性,可以直接连接到数据库。
但是如果多个数据集使用相同的数据库连接时,则使用TADO Connection就有一定的优势,因为不必为每个数据集都单独建立数据库的连接,同时也减少了资源的消耗,并且可以建立跨越多个数据集的事务。
一个事务(transaction)是数据库操作的一个阶段,用户对数据库的修改都保存在本地计算机的内存中,只有提交一个事务后,才能将修改的内容提交到数据库中。
如果选择了回滚事务,则所有的修改将被取消,而不会提交到数据库中。
? TADO Connection组件提供如下功能:v 控件数据库的连接v 控制服务器的注册v 管理事务v 为关联的数据集提供数据库连接v 将SQL命令发送到数据库中v 获得数据库的原数据(metadata)? TADO Connection的常用属性1) Attributes此属性用于设置连接的数据库的自动处理的行为,它是Txact Attributes类型的集合,包括两个集合元素:I. Xa Commit Retaining:提交一个事务后自动开始一个新的事务。
II. Xa Abort Retaining:回退一个事务的同时将开始一个新的事务。
2) Command Timeout连接超时属性,用于设置一个命令执行时所能等待的最大时间值。
以秒为计量单位。
缺省值为30秒,即连接命令等待了30秒之后还没有被执行,系统就放弃这个命令。
3) Connected标识和数据库的连接是否处于激活状态。
用户可以查询Connected属性的值来判断数据库的连接状态。
DELPHI中两个UDP控件的用法
DELPHI中有两个UDP控件:TIdUDPServer和TIdUDPClient控件,可用于传输UDP数据;用法都很简单,主要是一些细微的特性,弄清楚了对正确使用这两种控件有很大的好处;下面分别介绍:一、TIdUDPServer:代表一个UDP的服务端,接收UDP客户端发过来的数据;在FORM上放置一个TIdUDPServer控件,命名为UDPSvr,在FormCreate 事件中编写如下代码:UDPSvr.Bindings.Add;UDPSvr.Bin dings[0].IP := ‘192.168.2.117’;UDPSvr.Bindings[0].Port := 1812;UDPSvr.Active := True;在UDPSvr控件的OnUDPRead事件中编写如下代码:varBuffer: array[0..1024] of Char;iSize: integer;sData: string;beginZeroMemory(@Buffer,sizeof(Buffer));iSize := AData.Size;if iSize > 1024 thenbeginiSize := 1024;end;AData.Seek(0,soFromBeginning);iSize := AData.Read(Buffer,iSize);。
{对接收数据的处理}end;这样就完成了一个可以接收数据的UDP应用程序;其实TIdUDPServer有发送数据的方法:Send和SendBuffer,是继承自TIdUPDBase,所以只要利用TIdUDPServer控件就可完成数据的收发,在FORM 上添加一个Tbutton控件,在Click事件中添加如下代码;varBuffer: array[0..1024] of Char;sText: string;iLen: integer;beginsText := ‘12345678’ZeroMemory(@Buffer,sizeof(Buffer));StrPCopy(Buffer,sText);iLen := Length(sText);UDPSvr.SendBuffer(‘192.168.2.117’,1814,Buffer,iLen);end;这样就可以向另一UDP应用程序发送数据;一个TIdUDPServer控件可以打开多个端口,如下的代码打开了两个端口:UDPSvr.Bindings.Add;UDPSvr.Bindings[0].IP := GetLocalIP;UDPSvr.Bindings[0].Port := 1812;UDPSvr.Bindings.Add;UDPSvr.Bindings[1].IP := GetLocalIP;UDPSvr.Bindings[1].Port := 1813;UDPSvr.Active := True;当打开多个端口时,发送数据是从哪个端口发送出去呢?根据测试结果是:最近收到数据的那个端口;如果还没有收到过数据,则为Bindings[0].Port;在接收数据的事件中,有一个TidSocketHandle类型的参数:Abinding;这个参数有两对属性:IP 、Port:代表本地IP地址和端口;PeerIP、PeerPort:代表远端IP地址和端口;其中PeerIP、PeerPort在交复发送数据的UDP应用中是很有用的,因为UDP服务端可以向PeerIP和PeerPort回应数据,而不用再去设置UDP客户端的IP地址和端口号(这种方法应用不当,会产生问题,下面会说到);二、TIdUDPClient:代表一个UDP的客户端,专门用于发送UDP数据,不能接收数据,因为没有相应的事件和方法;前面已经说过,利用TIdUDPServer 控件就可以完成UDP数据的收发,所以一直怀疑TIdUDPClient控件存在的必要性;除非有一个UDP的客户端只发送数据,而从不接收数据,这样的客户端应该很少;后来我想,可能可以用TIdUDPClient控件来分担TIdUDPServer控件的负载,在一个需要收发大量UDP数据的服务端中,TIdUDPServer控件只接收数据,另外专门用一个TIdUDPClient控件发送数据,也许可以提高应用程序的性能(没有经过验证);利用TIdUDPClient发送数据有两种方式:1、利用TIdUDPClient控件本身的Send和SendBuffer方法,这时需要设置Host和Port属性,在FORM上放置一个TIdUDPClient控件,命名为:UDPClt;分别设置Host和Port属性值为:192.168.2.117和1814;再编写如下代码:varBuffer: array[0..1024] of Char;sText: string;iLen: integer;beginsText := ‘12345678’;ZeroMemory(@Buffer,sizeof(Buffer));StrPCopy(Buffer,sText);iLen := Length(sText);UDPClt.SendBuffer(Buffer,iLen);end;2、不需要设置Host和Port属性,而直接利用从TIdUPDBase继承来的Send和SendBuffer方法,也可发送数据,代码如下所示:UDPClt.SendBuffer(‘192.168.2.117’,1814,Buffer,iLen);TIdUDPClient控件发送数据时是通过哪个端口发出去的呢?根据测试的结果:是随机的;这样就给上面说过的UDP服务端可以向PeerIP和PeerPort回应数据造成了麻烦,也就是说如果UDP服务端收到的数据是通过TIdUDPClient控件发过来的,就不能通过PeerIP和PeerPort回应回去,而应设定客户端的IP地址和端口号;在具体应用中是哪种情况,要根据测试结果而定。
delphi中一些常用控件的属性
目录TForm Class (1)TPanel组件 (4)TToolBar Class (5)TToolButton Class (7)TTimer Class (7)TADOConnection Class (8)TADOQuery Class (9)TADODataSet Class (9)TDBGrid Class (10)TADOStoredProc Class (11)TButton Class (11)TBitBtn Class (12)TComboBox Class (12)TStaticText Class (13)TLabel Class (13)TEdit Class (13)TGroupBox Class (13)TRadioGroup Class (13)TListbox Class (14)TTreeView Class (14)TDataModule Class (15)VC++使用串口 (15)I. Open (16)II. Configuration (17)III. Read (18)IV. Write (19)V. Close (20)Conclusion ............................................................................................................................................. 错误!未定义书签。
License ................................................................................................................................................... 错误!未定义书签。
Delphi7.0数据库应用教程详解
在编辑窗体中输入相关记录置 图7 数据记录编辑窗口
Delphi 7.0数据库桌面(5)
图9 数据库窗体向导Database Form Wizard
新建一个新工程项目Project1,选择主菜单 中的database(数据库)菜单下的Form wizard
(数据表向导)选项,弹出数据库窗体向导窗 口Database Form Wizard,如图9所示。在Form Options框架中选择Create a simple form选项, 即创建一个简单的表。(第二个选项Create a master/detail form是用来生成由主从表组成的维 护窗体的。);在DataSet Options框架中选择 Create a form using Ttable objects选项,即用 Ttable对象创建一个表,生成的窗体中用 TTable控件来访问数据库。(如果选择第二项 则是用Tquery组件访问数据库。)然后单击 Next按钮,进入下一步向导。
另外还要给数据表建立索引,即定
义关键字。索引分为主索引和次索引两
种。主索引关键字字段中的数据必须惟
一,而且每张数据表中只能建立一个主
索引。而次索引则没有这个限制,在次
索引字段中数据允许重复,且可以建立
多个次索引。
(1)建立主索引的方法
图4 创建数据表对 话框
在图4创建数据表对话框中,将光标移到要建
立主索引字段的Key列下面,双击鼠标左键或
话框
型(Type)时,要鼠标右击,这时会弹
Delphi XE主要控件列表
Delphi主要控件列表Standard类Frames框架TActionList统一管理事件Tlang实现多语言的切换TStyleBook皮肤Tbutton按钮TCheckBox复选框TRadioButton单选框TGroupBox容器TPopupBox右键菜单Tpanel容器控件TCalloutPanel容器控件Tlabel静态文本TImageControl放图片TPathLabel路径的静态文本TProgressBar进度条TScrollBar滚动条TSmallScrollBar滚动条Texpander下拉列表TTrackBar控制大小Tswitch开关Tsplitter分隔符TMenuBar菜单栏TStatusBar状态栏TToolBar工具栏TSizeGrip重定义画图TListBox列显示控件TComboBox选择下拉框Tmemo多行文本Tedit编辑文本TTreeView不同目录切换TListView显示带图标列表Tpopup右击菜单Additional类TSpeedButton多用于放置到工具栏上TCornerButton容器按钮TArcDial进度圈TMediaPlayer播放音乐TMediaPlayerControl控制音乐播放TCameraComponent播放视频Tcalendar日历TDateEdit日期TTimeEdit时间TNumberBox数字输入框TSpinBox调整数字大小TComboEdit可编辑的下拉菜单TComboTrackBar下拉调整数字大小TClearingEdit清空输入框DBExpress类TSQLConnection连接数据库TSQLDataSet操作数据集TSQLQuery执行一条SQL语句TSQLStoreproc可以调用数据库的存储过程TSQLTable操作数据库里的数据表TSqlServerMethod客户端调用服务器上的自定义方法TSQLMonitor数据库监视器TSimpleDataSet简化的建立本地可更新数据集方法ADO TADOConnection连接数据库TADOCommand向数据库发送SQL指令并返回请求的数据集TADODataSat获取并代表任何其他ADO组件从数据库返回的数据集合TADOTable对数据库中的表进行操作TADOQuery执行一条SQL语句TADOStoreProc调用数据库存储过程TRDSConnection连接数据库,常用于多层应用程序。
delphi控件属性大全-详解-简介
delphi控件属性⼤全-详解-简介button 组件:CAPTION 属性:⽤于在按钮上显⽰⽂本内容Cancel 属性:是否设置成默认的取消按钮,当设置为真的时候(true)按ESC触发改按钮的事件!Default 属性:是否设置成默认的确认按钮,当设置为真的时候按ENTER键的时候触发事件Hint 属性:设置当⿏标在按钮上短暂停留是显⽰的提⽰内容。
Showhint 属性:是否显⽰提⽰内容默认为假!Bitbtn 组件Kind 属性:他的值就是位图按钮组件上所显⽰的图标!GLYPH 属性:⽤于在位图按钮上显⽰加载后的位图图形!Numclyphs 属性:⽤于指定位图按钮上所能使⽤的位图个数!Layout 属性:⽤于指定位图在位图组件上的位置!Speedbutton 组件Flat 属性:是否具有OFFICE 2000的风格Groupindex 属性:设置分组。
DOWN 属性:设置改按钮是否处于按下状态Allowallup 属性:设置同⼀组的快速按钮是否具有同时弹起的状态。
Radiobutton 组件Checked 是否处于选中状态Alignment ⽤于设置选择框和⽂字的排列⽅式!Checkbox 组件Allowgrayed ⽤来设置当前组件被选种时,是否为变灰状态!State 设置当前复选框的状态。
⽂本类组件label 组件Alignment ⽤来设置标签中的⽂本在⽔平⽅向的排列⽅式!AUTOSIZE ⽤来设置标签的尺⼨⼤⼩,是否随CAPTION属性中⽂字的字体⼤⼩⽽进⾏⾃动调节!Font ⽤来设置显⽰⽂字的字体,颜⾊!Layout ⽤于设置标签中的⽂本在垂直⽅向的排列⽅式!WORDWRAP ⽤于设置是否⾃动换⾏!EDIT组件Charcase ⽤于设置组件中⽂字的⼤⼩写显⽰⽅式!TEXT ⽤于显⽰编辑框中的⽂字内容Modified ⽤来判断edit组件⾥的⽂字内容是否被修改过,若为假,就是没有被修改过!Passwordchar 设置显⽰密码字符!memo组件lines ⽤于访问框中每⼀⾏的内容Maxlength 设置⽂本框中最⼤的⽂字输⼊量Scrollbar 设置是否需要滚动条Wantretruns ⽤于设置在框中按’enter’键是否起回车作⽤Wanttabs ⽤于设置在框中按’tab’键是否起移位作⽤。
DELPHI第三方控件及组件大全(安装方法与使用)
DELPHI第三方控件及组件大全(安装方法与使用)DELPHI是一种非常流行的应用程序开发环境,用于创建Windows应用程序。
作为一个强大的集成开发环境,DELPHI提供了许多内置的控件和组件,但有时候这些内置的功能并不能完全满足我们的需求。
在这些情况下,我们可以使用第三方控件和组件来扩展DELPHI的功能。
以下是一些常用的DELPHI第三方控件和组件以及安装方法和使用介绍。
FastReport是一款用于生成报表的控件,它提供了丰富的报表设计和输出选项。
使用FastReport,可以轻松地创建各种类型的报表,如表格报表、条形码报表、图形报表等。
它还支持多种输出格式,包括PDF、Excel、HTML等。
TeeChart是一个功能强大的图表控件,可以帮助你在应用程序中添加各种类型的图表,如柱状图、饼图、折线图等。
它提供了丰富的图表样式和定制选项,使你可以根据需要创建独特的图表。
Devart提供了一系列数据库组件,用于与各种类型的数据库进行交互,如MySQL、Oracle、SQL Server等。
这些组件提供了方便的API和功能,使你可以轻松地连接、查询和更新数据库中的数据。
VirtualTreeview是一个高性能的虚拟树控件,用于显示大量数据。
相比于传统的树控件,VirtualTreeview具有更快的显示速度和更小的内存占用。
通过使用VirtualTreeview,你可以在应用程序中展示和管理大规模的树形数据。
这些第三方控件和组件在DELPHI开发过程中是非常有用的工具。
使用它们可以大大提高开发效率和应用程序的质量。
安装方法有所不同,但一般来说,你只需按照安装向导进行操作即可。
安装完成后,你可以在DELPHI的开发环境中使用它们。
使用这些控件和组件的方法也各不相同,具体的使用方法可以参考各个控件和组件的官方文档或教程。
一般来说,你需要将控件或组件放置在窗体上,并根据需要进行配置和定制。
然后,你可以在代码中使用相应的属性和方法来操作控件或组件。
Delphi数据集介绍
第六章什么是数据集Delphi 4中有四种类型的标准数据集构件,分别是TTable、TQuery、TStoredProc和TClientDataSet。
这些数据集构件都是从一个共同的基类TDataSet继承下来的,其中,只有TClientDataSet是直接从TDataSet继承下来的,而TTable、TQuery、TStoredProc的直接上级是TDBDataSet,TDBDataSet的上级是TBDEDataSet,TBDEDataSet 的上级才是TDataSet。
这几个类之间的继承关系可以用图6.1来表示。
图6.1 数据集的继承关系TDataSet是所有数据集的抽象基类,它的大部分属性和方法是虚拟的或抽象的。
所谓虚拟的方法,是指这些方法可以被派生类重载。
所谓抽象的方法,是指这些方法只有声明,没有定义,派生类必须给出定义后才能调用这些方法,不同的派生类可以有不同的定义。
由于TDataSet中包含抽象的方法,您不能直接创建它的实例,否则会引起运行期错误。
如果从功能上划分,TDataSet的属性和方法可以分为这么几大块:打开和关闭数据集、浏览记录、编辑数据、书签管理、控制连接、访问字段、记录缓冲区管理、过滤、事件。
6.1 打开和关闭数据集在对数据集进行任何操作之前,首先要打开数据集。
要打开数据集,可以把Active属性设为True,例如:CustTable.Active := True;也可以调用Open函数,例如:CustQuery.Open;要关闭数据集,可以把Active属性设为False或者调用Close函数。
6.2 数据集的状态数据集的状态(State属性)决定了当前能够对数据集进行的操作,例如,当数据集已经关闭,它的状态是dsInactive,此时就不能访问数据集的任何数据。
6.2.1 State属性State属性是只读的,下面列出了State属性可能的值:.dsInactive数据集已关闭,不能访问它的数据;.dsBrowse数据集已打开,可以浏览数据但不能修改数据;.dsEdit此时为编辑状态,可以修改数据;.dsInsert此时可以插入一条新的记录;.dsSetKey只适用于TTable和TClientDataSet,此时可以设置范围和键值,并且可以调用GotoKey函数;.dsCalcFields正在处理OnCalcFields事件(当字段需要指定一个值的时候促发的事件),此时不能修改非计算字段的值;.dsCurValue内部使用;.dsNewValue内部使用;.dsOldValue内部使用;.dsFilter正在进行过滤操作。
Delphi常用语法和控件用法
♦ Trim(const S: string): string;
删除字符串前后的空格及控制字符 ♦ TrimLeft(const S: string): string; 删除字符串前的空格及控制字符 ♦ TrimRight(const S: string): string; 删除字符串后的空格及控制字符
取值范围 扩 展 ANSI 字 符集 UniCode 字 符 集 扩 展 ANSI 字 符集
数据库系统开发
字符型适用的运算符
♦ 关系运算符:=、<>、>、>=、<、<= 关系运算符: 、 、 、 、 、
数据库系统开发
String类型 类型
♦ 字符串String是代表一组字符的变量类型
,每一种语言都有自己的字符串类型的 存储和使用方法。
void myloop() { int i; int t = 0; i = 0; while(i<10) { t := t+i; i++; } }
数据库系统开发
♦ Object Pascal中的 中的while循环 中的 循环
procedure myloop var i , t : Integer; begin t := 0; i := 0; while i<10 do begin t := t + i; i := i + 1; end; end;
数据库系统开发
变量
♦ c语言中的函数 语言中的函数
void foo(void) { int x = 1; int y = 2; x++; y--; }
数据库系统开发
♦ 用Object Pascal编写 编写
DELPHI数据控件TclientDataSet的详细说明
DELPHI数据控件TclientDataSet的详细说明与TTable、TQuery一样,TClientDataSet也是从TDataSet继承下来的,它通常用于多层体系结构的客户端。
TClientDataSet最大的特点是它不依赖于BDE(Borland Database Engine),但它需要一个动态链接库的支持,这个动态链接库叫DBCLIENT.DLL。
在客户端,也不需要用TDatabase构件,因为客户端并不直接连接数据库。
由于TClientDataSet是从TDataSet继承下来的,所以,它支持诸如编辑、搜索、浏览、纠错、过滤等功能。
由于TClientDataSet 在内存中建立了数据的本地副本,上述操作的执行速度很快。
也正是由于TClientDataSet并不直接连接数据库,因此,客户程序必须提供获取数据的机制。
在Delphi4中,TClientDataSet有三种途径获取数据:.从文件中存取数据。
.从本地的另一个数据集中获取数据。
.通过IProvider接口从远程数据库服务器获取数据。
在一个客户程序中,可以同时运用上述三种机制获取数据。
1、浏览和编辑数据和其他数据集构件一样,可以用标准的数据控件显示由TClientDataSet引入的数据集,当然,这需要借助于TDataSource 构件。
由于TClientDataSet是从TDataSet继承下来的,所以,凡是其他数据集构件支持的功能,TClientDataSet构件也大致具备。
不同的是,TClientDataSet能够在内存中建立数据的副本,因此,TClientDataSet比其他数据集构件增加了一些特殊的功能。
1.1、浏览数据可以用标准的数据控件显示由TClientDataSet引入的数据集。
在运行期,可以调用诸如First、GotoKey、Last、Next和Prior等函数来浏览数据。
TClientDataSet也支持书签功能,可以用书签来标记某条记录,以后就可以方便地找到这条记录。
DELPHI控件属性、方法、事件及常用函数
DELPHI控件属性、方法、事件及常用函数DELPHI控件属性、方法、事件及常用函数一.TmainMemu控件该控件是一个标准的菜单控件,运用它为窗口提供菜单。
该对象的层次结构为:TObject—TPersistent--TCompoment—TMenu。
属性1-AutoMetge:Boolean功能:用于确定非MID程序中非主Form上的菜单要不要和主Form 的菜单合并。
主Form菜单AutoMerge的特性总是False。
此外,还要设置菜单项的GroupIndex属性。
2-BiDiMode:TBiDiMode功能:控制菜单的布置模式,是从左至右,还是从右至左。
3-Handle:HMENU功能:菜单窗口句柄。
4-Images:TImagList功能:出现在菜单项左边的图像列表。
菜单项通过设置它们的ImageIndex属性,以确定图像列表中的哪—个图像出现在菜单项的左边。
5-Items:TMenuItem功能:菜单项,描述了菜单的元素。
6-OwnerDraw:Boolean功能:确定菜单项是否可以由应用程序来画。
7-ParentBiDiMode:Boolean功能:确定BiDiMode属性是否从父辈继承而来,菜单的父辈一般为Form。
方法1-GetOle2AcceleratorTabel:(var AccelTable:HAccel;var AccelCount:Integer;Group:array of Integer)功能:返回主菜单的加速键表,其参数如下AccelTabel:设置加速键表的句柄。
AccelCount:设置加速键的总数。
Groups:即GroupIndex的值。
2-Merge:功能:组合Form上的一个主菜单与另一个非MDI应用程序的主菜单。
调用Merge方法将另一个主菜单组合进该菜单。
参数Menu指定了要合并的菜单3-PopulateOle2Menu:(ShareMenu:HMenu; Groups:array of Integer; var Widths:array of Longint)功能:组装OLE菜单。
delphi课件 常用控件的使用
13பைடு நூலகம்
文本输入类控件-备注框( 文本输入类控件 备注框(TMemo) 备注框 )
1、属性 Lines: Lines:属性设置和显示在多行编辑框组件内的文 本。 Text:存放Memo对象中全部的输入数据, Memo对象中全部的输入数据 Text:存放Memo对象中全部的输入数据,而 Lines[i]存放第i+1行的字符串 Lines[i]存放第i+1行的字符串 存放第i+1 ScrollBars属性 该属性用来设置TMemo 属性: TMemo组件是否 ScrollBars属性:该属性用来设置TMemo组件是否 有滚动条 WantTabs属性 该属性用来设置是否可以使用Tab 属性: WantTabs属性:该属性用来设置是否可以使用Tab 键来进行文本编辑。 键来进行文本编辑。
9
文本输入类控件-编辑框( 文本输入类控件 编辑框(TEdit) 编辑框 )
TabOrder属性:TabOrder属性表示该组件在Tab键 TabOrder属性:TabOrder属性表示该组件在Tab键 属性 属性表示该组件在Tab 次序中的位置,也就是当用户按Tab Tab键时激活组件 次序中的位置,也就是当用户按Tab键时激活组件 的次序。 的次序。 TabStop属性 该属性为布尔型, 属性: TabStop属性:该属性为布尔型,它确定是否可用 Tab键激活 默认值为True, 即该组件在Tab 键激活。 Tab键次序 Tab键激活。默认值为True, 即该组件在Tab键次序 否则不在Tab键次序中。只有当TabStop Tab键次序中 TabStop属性的 中,否则不在Tab键次序中。只有当TabStop属性的 值为True True时 TabOrder属性才有意义 值为True时,TabOrder属性才有意义 IME属性 自动实现输入法的切换。 属性: IME属性:自动实现输入法的切换。 设置ImeMode 属性: 如果要设置为中文输入法, ImeMode属性 设置 ImeMode 属性 : 如果要设置为中文输入法 , 可 以将ImeMode属性设置为imChinese ImeMode属性设置为imChinese. 以将ImeMode属性设置为imChinese. 设置ImeName 属性: ImeName属性 设置 ImeName 属性 : 可以通过下拉组合框选择一个 具体的输入法
Delphi数据库处理组件
Delphi数据库处理组件BDE、ADO、InterBase和dbExpress详细说明第一节BDE、ADO、InterBase和dbExpressDelphi中处理数据库主要有两种方法,也就是BDE、ADO,从Delphi 6.0开始还加入了一种dbExpress方法。
另外,Delphi还提供了专门处理Borland 公司自己的数据库产品InterBase 数据库的专门的方法。
BDE(Borland Databas Engine),是Delphi中最古老的技术,从delphi 2.0加入BDE 技术以后,一直是Delphi处理数据库的事实上的标准。
BDE 是一个基于驱动程序的体系结构,每一种数据格式或数据源都有一种驱动程序来驱动相近的数据源。
BDE 可以很好的支持现在最流行的ODBC API方法,ODBC是一种C/C++ 应用程序编程接口(API ),无论是对任何一种客户/ 服务器关系型数据库管理系统(RDBMS ),还是最流行索引顺序访问方法(ISAM)数据库(Jet、Foxpro),都能很好的访问。
同时,由于BDE 的驱动程序主要直接来自于第三方开发商,所以,对于像Oracle这些非微软的数据库,执行效率上比较高。
正是这些特点,使BDE 技术还是得到了很多数据库开发程序员的欢迎。
ADO 技术是微软提出来的处理关系型数据库和非关系型数据库的新技术,它基于微软被称为OLE DB的数据访问模式,它是专门为了给大范围商业数据源提供访问而设计的,包括传统的关系型数据表、电子邮件系统、图形格式、Internet资源等。
ADO 所需内存更少,更适合大流量和大事务量的网络计算机系统。
ADO 顶层有三个对象:Connection、Command、Recordset。
Connection用以指定数据源,建立和数据源的连接。
Command对象用以对数剧源执行指定的命令,可以接受SQL 语句,表和存储过程的名称,执行SQL 查询,更新数据,插入纪录等。
delphi70数据库连接及数据库感知组件
delphi7 0数据库连接及数据库感知组件delphi7.0数据库连接及数据库感知组件2010-12-21 22:59DP窗体(TDBGRID或TDBNAVIGATOR)---datasource--bde,ado数据库组件---数据库三件套BDE:BDE两组件:ttable和tquery组件用来连接数据库(1)使用TTABLE组件,别名是DBDEMOS数据库的"EMPLOYEE.DB"数据表,单表,||BDE的table1组件属性:databasename:dbdemos;tablename:employee.db;active:true;||data access下的datasource1组件:dataset:table1||data controls组件面板dbnavigator1:属性:datasource:datasource1;||data controls组件面板dbgrid1:属性:datasource:datasouce1;(2)使用query1组件,别名是DBDEMOS数据库的"EMPLOYEE.DB"数据表,单表,||BDE的query1组件属性:databasename:dbdemos;sql:select*from employee.db;active:true;||data access下的datasource1组件:dataset:query1||data controls组件面板dbnavigator1:属性:datasource:datasource1;||data controls组件面板dbgrid1:属性:datasource:datasouce1;(3)一对多关系:使用ttable组件,别名是dbdemos的customer.db和orders.db,(两个tdatasource和两个ttable组件)先完成master表的设定:A.tablel组件:属性:databasename:dbdemos,tablename:cust.db,active:true;datasource1组件:属性:dataset:table1;dbgrid1组件:属性:datasource:datasource1;B.table2:databasename:dbdemos,tablename:order.db,indexname:设成对应到CUST.DB的索引键CUSTNO,MASTERSOURCE:DATASOURCE1,MASTERFIELDS:的.,点选DETAIL FIELDS选项CUSTNO,和MASTER FIELDS的CUSTNO,按下ADD按钮,再按OK.ACTIVE:TRUE;|||DATASOURCE2组件属性:DATASET:TABLE2;|||DBGRID2:DATASOURCE:DATASOURCE2;(4)一对多关系:使用query组件,别名是DBDEMOS的orders.db和ITEMS.DB,先完成master表的设定:A.query1组件:属性:databasename:dbdemos,sql:select*from orders,active:true;datasource1组件:属性:dataset:QUERY1;dbgrid1组件:属性:datasource:datasource1;B.QUERY2:DATAbasename:dbdemos,DATASOURCE:DATASOURCE1,SQL:SElect*from items where orderno=:orderno,再将DATASOURCE:DATASOURCE,ACTIVE:TRUE;|||DATASOURCE2组件属性:DATASET:QUERY2;|||DBGRID2:DATASOURCE:DATASOURCE2;ADO组件的应用:(一)使用TADODATASET组件ADO面板的TADOConnection::connectionstring属性:||ADO组件的ADODataset1:connection属性:adoconnection1;commandtype属性:cmdtext;commandtext属性:select*from数据表,ACTIVE属性:TRUE;||DATASOURCE1组件属性:dataset:adodataset1;|||dbgrid1组件属性:datasource:datasource1;dbnavigator1组件属性:datasource:datasource1;(二)使用TADOTABLE组件ADO组件的TADOConnection::connectionstring属性:|||ADOTABLE1组件属性connection:adoconnection1,属性tablename:选数据表;active:true;|||datasource1组件:属性:dataset:adotable1;|||dbnavigator1:datasource:datasource1;dbgrid1:datasource:datasource1;(三)使用tadoquery组件ADO组件的TADOConnection::connectionstring属性:|||ADOquery1组件属性connection:adoconnection1,属性sql:select*from数据表;active:true;|||datasource1组件:属性:dataset:adoquery1;|||dbnavigator1:datasource:datasource1;dbgrid1:datasource:datasource1;ado一对多关系:orders和items数据表(1)使用tadotable组件:adotable1:connectionstring:db.mdb数据库,tablename:order数据表,active:true,datasource1组件:dataset:adotable1;dbgrid1:datasource:datasource1;||adotable2:connectionstring:mdb数据库;tablename:items数据表;mastersource:datasource1,masterfields:按.,点选detail fields的orderno及master fields的orderno后,按add,再按下OK。
DELPHI常用组件
Delphi常用组件的使用目录1.按钮类组件1.1Button组件Button组件位于Standard页。
Button组件的常用属性表属性描述Cation用于在按钮上显示文本内容Cancel用来指定按钮是否为取消按钮Default用于指定按钮是否为默认按钮,在按Enter键时也选中命令按钮Hint设置鼠标在组件上短暂停时在组件旁显示的提示小窗口的内容ShowHint确定是否显示提示文本,默认值是FALSE1.2Bitbtn组件Bitbtn组件(位图组件)位于Additional,与Button很相似,只是多了一个位图符号在按钮上(如带有对号的OK,问好的Help等),其某些属性与Button类似,下表为其独有的的特性。
(注:此组件不需编写代码)Bitbtn组件的常用属性表属性描述Kind Kind属性的值就是位图按钮上显示的图标。
Kind属性后的下拉列表中有一组默认图标的属性值,有bkCancel(取消)、bkAbort(终止)、bkAll(所有)、bkClose(关闭)等。
Glyph用于在位图按钮上显示加载后的位图图形NumGlyphs用于指明位图按钮所能使用位图的个数。
在delphi中,最多允许向一个位图按钮提供4个图像文件,用于表示4中不停状态Layout用于指出位图图形在位图组件上的放置位置1.3SpeedButton组件SpeedButton组件(加速按钮)位于Additional,常放置在Panel组件上,用于设计工具栏。
它与Bitbtn相似,也可以显示图像和文本,但通常只用于显示图像。
SpeedButton组件的常用属性表属性描述AllowAllUp用于设置同一组的加速按钮是否具有同时弹起的状态。
若设置为FALSE,则当同一组加速按钮中的一个被按下时,其他加速按钮都处于弹起状态,即这组按钮必须有且只有一个处于按下状态Down用于设置该加速按钮是否处于按下状态,若设置为TRUE,则表示按钮处于按下状态Flat用于设置在鼠标移动到该按钮上时,按钮是否显示三维效果。
Delphi数据库知识adotable
Delphi数据库知识_数据库开发(1)Delphi数据库处理第一节BDE、ADO、InterBase和dbExpressDelphi中处理数据库主要有两种方法,也就是BDE、ADO,从Delphi 6.0开始还加入了一种dbExpress方法。
另外,Delphi还提供了专门处理Borland 公司自己的数据库产品InterBase 数据库的专门的方法。
BDE(Borland Databas Engine),是Delphi中最古老的技术,从delphi 2.0加入BDE 技术以后,一直是Delphi处理数据库的事实上的标准。
BDE 是一个基于驱动程序的体系结构,每一种数据格式或数据源都有一种驱动程序来驱动相近的数据源。
BDE 可以很好的支持现在最流行的ODBC API方法,ODBC是一种C/C++ 应用程序编程接口(API ),无论是对任何一种客户/ 服务器关系型数据库管理系统(RDBMS ),还是最流行索引顺序访问方法(ISAM)数据库(Jet、Foxpro),都能很好的访问。
同时,由于BDE 的驱动程序主要直接来自于第三方开发商,所以,对于像Oracle这些非微软的数据库,执行效率上比较高。
正是这些特点,使BDE 技术还是得到了很多数据库开发程序员的欢迎。
ADO 技术是微软提出来的处理关系型数据库和非关系型数据库的新技术,它基于微软被称为OLE DB的数据访问模式,它是专门为了给大范围商业数据源提供访问而设计的,包括传统的关系型数据表、电子邮件系统、图形格式、Internet资源等。
ADO 所需内存更少,更适合大流量和大事务量的网络计算机系统。
ADO 顶层有三个对象:Connection、Command、Recordset。
Connection用以指定数据源,建立和数据源的连接。
Command 对象用以对数剧源执行指定的命令,可以接受SQL 语句,表和存储过程的名称,执行SQL 查询,更新数据,插入纪录等。
第5章 Delphi的数据库工具
5.1.4 数据表格的属性
5. 数据表格的密码属性(Password Security) • Password Security属性用来定义数据表格的密码。选择该属性,并 单击Define按钮,显示设置主密码对话框。 • 定义了主密码之后,单击Auxiliary Password按钮,就可以打开设置 辅助密码对话框,如图5-11所示。 • 在设置辅助密码对话框中,可以同时设置多个密码。这些密码对应 着不同的权限,包括:当用户输入正确的主密码之后,用户可以获 得对整个数据表格的访问权限,但是对于数据表格中的多个自动享 有的权限取决于输入的辅助密码的种类。
5.1 数据库工作平台
数据库工作平台(Database Desktop)是Delphi提供的数据库管理工具。 使用Database Desktop可以建立数据表格的结构,修改数据表格的结构, 完成数据的输入,以及其他对数据的操作,是建立数据库应用程序过程 中常用的工具。
• 5.1.1 Database Desktop程序 • 5.1.2 设置工作目录及私有目录 • 5.1.3 创建数据表格 • 5.1.4 数据表格的属性 • 5.1.5 在Database Desktop中创建SQL型数据表格 • 5.1.6 在Database Desktop中使用查询
5.1.6 使用查询
Database Desktop中提供了两种查询工具,SQL语句和QBE。 在Database Desktop中使用SQL语句进行查询。 1. 打开SQL语句窗口 • 选择File->New->SQL File选项,打开一个新的SQL语句窗口,可 以直接在SQL窗口中输入语句。 • 此时Database Desktop的主菜单中将增加Search和SQL两项,同 时增加了几个加速按钮来完成查询功能。 2. Aliases设定 • 选择SQL菜单下的Aliases选项,将出现设置数据库别名对话框, 设置了数据库别名后,就可以在文本编辑框中输入操作数据库别 名中相应数据表格的语句。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Delphi两个经典数据库控件集详解Delphi强大的数据库功能一直是Delphi程序员们的最爱,然而,BDE强大功能的后面,却有太多的限制。
当程序员们绞尽脑汁编出短小精悍的程序而兴高采烈时,他们不得不尴尬的面对发布程序时BDE那几兆大的附加文件。
有没有其他控件,既可以使用Delphi强大的数据库功能而又不要那几兆大的BDE?答案时肯定的,那就是使用第三方控件或者Delphi5的ADO控件。
在这里,我将具体介绍Delphi第三方数据库控件集:DiamondAccess1.7和ODBCExpress5.06。
DiamondAccess控件集使用微软数据访问对象DAO访问数据库。
利用此控件集访问数据库,可以完全摆脱BDE,当然,发布程序时也就无需考虑BDE的麻烦了。
而且,DAO的访问速度比BDE更快。
ODBCExpress控件集使用大家都很熟悉的ODBC访问数据库,只要设置好数据源,就可以访问大部分类型的数据库;而且,使用ODBC接口的程序具有更大的可移植和通用性。
ADO数据库访问控件在Delphi5中已经加入进来,假如要在Delphi4或者更低的版本使用ADO,就必须使用第三方控件,比如:DiamondDAO,同样可以提供强大的更能。
以下,我们通过实例的形式具体介绍DiamondAccess1.7和ODBCExpress5.06的使用,我们将利用这两个控件集实现同样的功能:在DBGrid中列出数据库所有数据,通过输入检索数据。
通过这些实例,我们可以基本了解以下内容:1)Delphi 中应用这两个控件集访问数据库的基本技术;2)发布采用这两个控件集的程序需要注重的问题和基本方法;3)两个控件集的优缺点和下载安装方法;DiamondAccess控件集演示>一、控件说明DiamondAccess是一套高速连接MicrosoftAccess数据库的控件集,包括TDAODatabase,TDAOTable,TDAOQuery和TDAOQueryDef四个控件。
它不依靠BDE访问数据库,而是使用微软的DataAccessObjects3.5和JetDatabaseEngine访问数据库,利用Access自带数据库引擎,DiamondAccess可以提供高速的数据库访问接口。
图1DiamondAccess控件集控件TDAODatabase用于定义要访问的Access数据库,主要属性是DataBaseName;TDAOTable和Delphi自带数据库控件Tabel相似;TDAOQuery和Delphi自带控件Query相似;TDAOQueryDef和DAOQueryDefobject一起使用,平时编程中较少用到。
二、演示程序现在,我们用实例了解DiamondAccess的用法。
在程序中,我们将用到TDAODatabase 控件,TDAOQuery控件,Delphi自带Datasource控件,Edit和Button控件。
程序打开数据库DataBase的main表并列出所有数据,Edit1控件用于输入数据检索。
为了更好的了解,我们先看看main的表结构。
1)数据库DataBase表main的结构字段名数据类型字段大小/格式ID自动编号长整型姓名文本50电话文本50生日日期/时间常规日期说明文本100表1数据库DataBase表main的结构2)程序中控件属性为了程序有更好的可迁移性,我们尽量不再属性面板中设置控件属性,而是在程序代码中设置。
以下属性,只是控件最基本的要求,进一步设置请看程序源代码。
控件属性Form1Caption:DiamondAccess演示;DAODatabase1默认;DAOQuery1Database:DAODatabase1;SQL:selectfrommain;DBGrid1DataSource:DataSource1;DataSource1Dataset:DAOQuery1;Edit1Text:空;Button1Caption:检索表2DiamondAccess演示程序控件及控件属性图2控件属性3)程序代码程序在Form1的Create时间中设置控件的主要属性。
procedureTForm1.FormCreate;varbasename:string;begin//定义数据库,这里是程序所目录的Data子目录下的database1.mdb文件baseName:=ExtractFilePath+;DAODatabase1.DatabaseName:=basename;tryDAODatabase1.Open;//打开数据库daoquery1.Open;//执行“Selectfrommain”语句exceptShowMessage;Halt;end;end;点击按钮Button1,检索表main中姓名等于Edit1输入值的记录。
procedureTForm1.Button1Click;var strsql:string;//用于定义DAOquery1的SQL语句beginstrsql:=;iftrim<>thenstrsql:=strsql++++edit1.text+;form1.daoquery1.close;form1.daoquery1.sql.clear;form1.daoquery1.SQL. add;Form1.setfocus;tryform1.daoquery1.open;exceptform1.daoquery1.execute;end;end;三、下载与安装DiamondAccess1.7可以在凌云天地下载,安装与一般控件安装相同。
四、要注重的地方1)发布程序应用DiamondAccess控件的程序,在发布时要注重目标计算机是否安装有DAO3.5或者以上版本,假如没有,程序执行时会出现要求安装的提示。
DAO3.6安装版下载:http:///support/files/dao360.zip。
2)关于Access版本的限制现在的DiamondAccess只支持Access97版本,程序中最好使用Access97数据库。
3)日期格式的非凡说明日期数据的检索,日期格式要求与Access的日期格式相同,不可与Delphi的数据库的日期格式相同。
试举一例:检索两个时间段之间的所有数据,这两个时间由控件:datetimepicker1和datetimepicker1来决定,那么,SQL语句如下:DAOquery1.sql.add++formatdatetime+);在这里,我们特意转换时间格式为:“mm/dd/yyyy”格式格式,并且,时间用“#”包围起来。
ODBCExpress5.06控件集演示一、控件说明ODBCExpress控件集是利用ODBC快速访问数据库的控件,与DiamondAccess 不同,ODBCExpress可以访问不同类型的数据库,并不局限于Access数据库。
所以,ODBCExpress具有较大的灵活性。
ODBCExpress控件集包括19个控件,实际上分为三类:核心控件,用于连接和查询数据库;可视数据控件;不可见控件。
如图:图3ODBCExpress控件集二、演示程序这个程序演示了如何在程序中动态设定DSN数据源,如何动态载入数据,同时,简单演示了一个查询。
所用控件有:THDBC控件,用于与DataSource建立连接;OEDataset控件;DataSource控件;DBGrid控件,Edit控件和一个Button控件。
所用控件属性如下:控件属性Form1Caption:ODBCExpress5.06演示;Hdbc1默认;OEDataset1hdbc:Hdbc1;DBGrid1DataSource:DataSource1;DataSource1Dataset:OEDataSet1;Edit1Text:空;Button1Caption:检索表3ODBCExpress5.06演示程序控件属性程序中所用数据库和DiamondAccess演示中数据库结构相同。
以上控件的其他属性将在程序代码中设置。
图4ODBCExpress5.06演示程序程序代码程序在Form1的Create中设定数据源DSN,同时设置其他控件属性。
其中,设定DSN数据源将用到注册表操作,请注重。
procedureTForm1.FormCreate;varregisterTemp:TRegistry;bData:arrayofbyte;begin//以下程序设置DSN数据源;registerTemp:=TRegistry.Create;//建立一个Registry实例withregisterTempdobeginRootKey:=HKEY_LOCAL_MACHINE;//设置ROOT;ifOpenKey;//设定DSN为“MyAccess”;endelsebeginshowmessage;//数据源描述;WriteString;//驱动程序DLL文件WriteInteger;WriteString;WriteInteger;WriteString;//用户名称bData:=0;WriteBinaryData;WriteBinaryData;endelsebeginshowmessage;WriteInteger;//缓冲区大小WriteInteger;//页超时WriteInteger;//支持的线程数目WriteString;endelsebeginshowmessage;exit;end;CloseKey;Free;end;//以下程序设置控件属性;Form1.Hdbc1.Terminate;Form1.Hdbc1.DataSource:=;//DSN名字erName:=;//数据库用户名Form1.Hdbc1.Password:=;//用户密码Form1.Hdbc1.Connect;OEDataSet1.Table:=;//数据表为mainOEDataSet1.sql:=;OEDataSet1.Open;datasource1.dataset:=OEdataset1;dbgrid1.DataSource:=datasource1;end;以上程序设置DSN是重要的一部分,这样才使程序具有真正的可移植性。
以下代码为检索部分。
procedureTForm1.Button1Click;beginifedit1.text=then//是否输入数据beginshowmessage;exit;end;OEDataSet1.Hstmt.ExecAsync:=True;OEDataSet1.Table:=;OEDataSet1.sql:=+++edit1.text+;OEDataSet1.open;end;注:以上DSN设置部分参考了大富翁论坛贴子,在此表示感谢。