如何向表单中备注型字段添加照片? 80
我现在正在设计一个照相程序,通过摄像头拍照,把照片保存在通用型字段里,再通过报表文件打印出来。我的做法是这样的:先点击一下表单中插入照片处,然后点击“编辑”工具栏下的“插...
我现在正在设计一个照相程序,通过摄像头拍照,把照片保存在通用型字段里,再通过报表文件打印出来。
我的做法是这样的:先点击一下表单中插入照片处,然后点击“编辑”工具栏下的“插入对象…” 选项,在随后出现的对话框中选择“位图图像”选项,再在随后出现的画图里点击“编辑”工具栏下的“粘贴来源…”选项,随后出现“粘贴来源”对话框,这样选择图片后就能把图片保存到通用字段,而且报表中也能显示图片,但是太麻烦了。能用不用一条命令或一段程序就能实现上述功能?
现在虽有三种方法却无法实现上述功能:
(1)在添加照片按钮的单击事件下写入如下程序:
lcFile=GetPict()
APPEND GENERAL 字段名 FROM lcFile
有时能用但是只出现图标,不出现照片;有时运行时又出现“OLE 错误0x8000fff”提示。
(2)在添加照片按钮的单击事件下写入如下程序:
lcFile=GetPict()
Replace 照片 With lcFile
ThisForm.Refresh
运行时出现“数据类型不匹配”错误提示。
(3)用个字符型字段来保存这个图片的路径,用Image控件的Picture属性显示,但是这样报表中就无法显示图片了。
请问用用什么命令或程序才能实现上述功能?请各位高手们不吝指教,不胜感激!
我用的是VF语言 展开
我的做法是这样的:先点击一下表单中插入照片处,然后点击“编辑”工具栏下的“插入对象…” 选项,在随后出现的对话框中选择“位图图像”选项,再在随后出现的画图里点击“编辑”工具栏下的“粘贴来源…”选项,随后出现“粘贴来源”对话框,这样选择图片后就能把图片保存到通用字段,而且报表中也能显示图片,但是太麻烦了。能用不用一条命令或一段程序就能实现上述功能?
现在虽有三种方法却无法实现上述功能:
(1)在添加照片按钮的单击事件下写入如下程序:
lcFile=GetPict()
APPEND GENERAL 字段名 FROM lcFile
有时能用但是只出现图标,不出现照片;有时运行时又出现“OLE 错误0x8000fff”提示。
(2)在添加照片按钮的单击事件下写入如下程序:
lcFile=GetPict()
Replace 照片 With lcFile
ThisForm.Refresh
运行时出现“数据类型不匹配”错误提示。
(3)用个字符型字段来保存这个图片的路径,用Image控件的Picture属性显示,但是这样报表中就无法显示图片了。
请问用用什么命令或程序才能实现上述功能?请各位高手们不吝指教,不胜感激!
我用的是VF语言 展开
1个回答
展开全部
不管是用什么数据库,存放图片的字段你采用字符类型,这一点肯定是不对的。而且,你没说明使用的数据库类型,采用的语言是什么;
下面是C++的处理方法:
下面这段程序用于将数据库中的图片读入到Image中:
((TBlobField*)(ADOQuery1->FieldByName("lk_sfz_photo")))->
SaveToFile("linshi2.jpg");
Image1->Picture->LoadFromFile("linshi2.jpg");
Image1->Width=Image1->Picture->Width;
Image1->Height=Image1->Picture->Height;
Image1->Visible=true;
下面这段程序用于将Image中的图片写入到数据库:
if(bLoadImage==true){
TMemoryStream *pms=new TMemoryStream();
TJPEGImage *jpg=dynamic_cast<TJPEGImage*>(Image1->
Picture->Graphic);
if(jpg!=NULL)//是JPEG类型的图像
jpg->SaveToStream(pms);//将图像数据写入内存流
else//是位图
Image1->Picture->Bitmap->SaveToStream(pms);//将图像数据
//写入
//内存流
//从内存流中装载图像数据
((TBlobField*)(ADOQuery1->FieldByName("lk_sfz_photo")))->
LoadFromStream(pms);
delete pms;
}
ADOQuery1->Post();
上面的代码需要在前面加载两个包:
#include <io.h>
#include <jpeg.hpp>
下面是C++的处理方法:
下面这段程序用于将数据库中的图片读入到Image中:
((TBlobField*)(ADOQuery1->FieldByName("lk_sfz_photo")))->
SaveToFile("linshi2.jpg");
Image1->Picture->LoadFromFile("linshi2.jpg");
Image1->Width=Image1->Picture->Width;
Image1->Height=Image1->Picture->Height;
Image1->Visible=true;
下面这段程序用于将Image中的图片写入到数据库:
if(bLoadImage==true){
TMemoryStream *pms=new TMemoryStream();
TJPEGImage *jpg=dynamic_cast<TJPEGImage*>(Image1->
Picture->Graphic);
if(jpg!=NULL)//是JPEG类型的图像
jpg->SaveToStream(pms);//将图像数据写入内存流
else//是位图
Image1->Picture->Bitmap->SaveToStream(pms);//将图像数据
//写入
//内存流
//从内存流中装载图像数据
((TBlobField*)(ADOQuery1->FieldByName("lk_sfz_photo")))->
LoadFromStream(pms);
delete pms;
}
ADOQuery1->Post();
上面的代码需要在前面加载两个包:
#include <io.h>
#include <jpeg.hpp>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询