D DelPhiFreshman Unregistered / Unconfirmed GUEST, unregistred user! 2001-11-16 #1 在dephi自带的database Desktop中有Graphic类型,但是我找不到如何插入图片,请诸位高手 帮忙,不胜感激!
Z zhihuali Unregistered / Unconfirmed GUEST, unregistred user! 2001-11-16 #3 Delphi数据库应用程序开发中图像数据的存取技术 Delphi提供了数据访问(DataAccess)和数据控制( DataControls)的可视化控件,能够方便快捷地产生具有 良好界面且功能强大的数据库应用程序。对于涉及图像数 据(含Graphic字段)的数据库应用程序,如人事管理信 息系统等,图像数据的存取技术是一个关键。然而,有关D elphi下图象的存取,特别是图像的保存方面的技术各种 资料上很少提及。下面,笔者结合一个简单的例子来说明 。 一、图像数据的保存 1.创建一个含有Graphic字段的数据库列表。 在WindowsISQ(或Databasedesktop)下createdatab asemydb.gdb createtablemyfrieds (namevarchar(15)notnull,telephonevarchar( 12),addressvarchar(30),zipvarchar(8),pictu revarchar(15),imageblob); 其中,picture字段用于保存图像的名称(包括路径 ),image(Graphic字符)则用于存储图像,其数据类型 为“blob”。 2.建立窗体(如图1所示),设置窗体中各控件的属 性。 该窗体的主要功能是将某人信息进行编辑和保存。需 要注意的图像保存所用的图像框必须用TImage而不能用TD BIm?age,编辑框宜用Tedit而不宜用TDBEdit,这一点与 图像的读取恰好相反。 其中,各主要控件的属性设置如下: Datasource1.Dataset:Κtable1; Table1.Databasename:Κmydb.gdb; Table1.Tablename:Κmyfriends; Table1.active:Κtrue; 其他诸如Caption之类的属性设置不再叙述。 3.数据处理程序的建立。 (1)图像( .bmp文件)打开的处理。 procedureTForm1.pictopenbtnClick(Sender:TOb ject); begin opendialog1.execute; image1.picture.loadfromfile (opendialog1.filename); end; (2)图像保存的处理。 图像保存的处理程序完成把在窗体1所编辑的信息包 括图像保存到相应的数据库中,其关键是要定义一个Graph ic类型的变量且该变量要用assing()函数传递到相应数 据库中保存。具体程序如下: procedureTform1.Savebtnclick(sender:TObject ); vargraphic1:TTBitMap; begin graphic1:=TTBitMap.Create; graphic1.loadfromfile(opendialog1.filename ); table1.insert; table1.fieldbyname(′name′).asstring:Κe dit1.text; table1.fieldbyname(′telephon′).asstring :Κedit2.text; table1.fieldbyname(′address′).asfloat: Κ(edit3.text); table1.fieldbyname(′zip′).asfloat:Κ(e dit4.text); table1.fields[4].assign(graphic1); table1.post; graphic1.free; end; 二、图像数据的读取 在数据库数据(包括Graphic字段的数据)的读取和 浏览方面,Delphi这一具有强大代码自动生成功能的面向 对象的开发工具的优越性得到淋漓尽致的体现。毫不夸张 地说,不需要一条语句即可完成这一功能! 建立窗体(如下图所示),设置各控件的属性。 图中Table1和Datasource1的属性的设置与数据的保 存部分(图1)相同,所不同的是数据库数据的读取时用TD BEdit和TD?BImage控件而不用TEdit和TImage。控件TDBE dit和TDBImage只要将datafield属性设置为其相对应的域 ;TDBNavigator的datasouce属性设置为datasource1即可 。
Delphi数据库应用程序开发中图像数据的存取技术 Delphi提供了数据访问(DataAccess)和数据控制( DataControls)的可视化控件,能够方便快捷地产生具有 良好界面且功能强大的数据库应用程序。对于涉及图像数 据(含Graphic字段)的数据库应用程序,如人事管理信 息系统等,图像数据的存取技术是一个关键。然而,有关D elphi下图象的存取,特别是图像的保存方面的技术各种 资料上很少提及。下面,笔者结合一个简单的例子来说明 。 一、图像数据的保存 1.创建一个含有Graphic字段的数据库列表。 在WindowsISQ(或Databasedesktop)下createdatab asemydb.gdb createtablemyfrieds (namevarchar(15)notnull,telephonevarchar( 12),addressvarchar(30),zipvarchar(8),pictu revarchar(15),imageblob); 其中,picture字段用于保存图像的名称(包括路径 ),image(Graphic字符)则用于存储图像,其数据类型 为“blob”。 2.建立窗体(如图1所示),设置窗体中各控件的属 性。 该窗体的主要功能是将某人信息进行编辑和保存。需 要注意的图像保存所用的图像框必须用TImage而不能用TD BIm?age,编辑框宜用Tedit而不宜用TDBEdit,这一点与 图像的读取恰好相反。 其中,各主要控件的属性设置如下: Datasource1.Dataset:Κtable1; Table1.Databasename:Κmydb.gdb; Table1.Tablename:Κmyfriends; Table1.active:Κtrue; 其他诸如Caption之类的属性设置不再叙述。 3.数据处理程序的建立。 (1)图像( .bmp文件)打开的处理。 procedureTForm1.pictopenbtnClick(Sender:TOb ject); begin opendialog1.execute; image1.picture.loadfromfile (opendialog1.filename); end; (2)图像保存的处理。 图像保存的处理程序完成把在窗体1所编辑的信息包 括图像保存到相应的数据库中,其关键是要定义一个Graph ic类型的变量且该变量要用assing()函数传递到相应数 据库中保存。具体程序如下: procedureTform1.Savebtnclick(sender:TObject ); vargraphic1:TTBitMap; begin graphic1:=TTBitMap.Create; graphic1.loadfromfile(opendialog1.filename ); table1.insert; table1.fieldbyname(′name′).asstring:Κe dit1.text; table1.fieldbyname(′telephon′).asstring :Κedit2.text; table1.fieldbyname(′address′).asfloat: Κ(edit3.text); table1.fieldbyname(′zip′).asfloat:Κ(e dit4.text); table1.fields[4].assign(graphic1); table1.post; graphic1.free; end; 二、图像数据的读取 在数据库数据(包括Graphic字段的数据)的读取和 浏览方面,Delphi这一具有强大代码自动生成功能的面向 对象的开发工具的优越性得到淋漓尽致的体现。毫不夸张 地说,不需要一条语句即可完成这一功能! 建立窗体(如下图所示),设置各控件的属性。 图中Table1和Datasource1的属性的设置与数据的保 存部分(图1)相同,所不同的是数据库数据的读取时用TD BEdit和TD?BImage控件而不用TEdit和TImage。控件TDBE dit和TDBImage只要将datafield属性设置为其相对应的域 ;TDBNavigator的datasouce属性设置为datasource1即可 。