如何显示数据库中存储的图片?
数据库中存储的jpeg,ico 等非bmp类型的文件如何显示,有没有这个控件? 问题点数:21、回复次数:10Top
1 楼luhongjun(过江项羽)回复于 2001-08-22 09:35:49 得分 10
http://www.csdn.net/expert/topic/152/152613.shtm
Top
2 楼HEROIN(HEROIN)回复于 2001-08-22 09:36:22 得分 0
DBImageTop
3 楼lluunn007(书生)回复于 2001-08-22 09:36:49 得分 0
比如用DBGrid,我考的一段代码。
void __fastcall TpForm::DBGrid1CellClick(TColumn *Column)
{
if( Column->Field->DataType== ftMemo||Column->Field->DataType==ftGraphic )
{
Column->ButtonStyle=cbsEllipsis;
column=Column; //字段赋值,其实可以不用column
}
}
//---------------------------------------------------------------------------
//显示特殊字段(Memo Graphics)
void __fastcall TpForm::DBGrid1EditButtonClick(TObject *Sender)
{
//显示特殊字段内容
if(column->Field->DataType==ftMemo) //Memo型字段
{
//new 出Memo型窗体
//ShowMessage("V"); //测试信息
TMemoForm *memo=new TMemoForm(Application);
memo->RichEdit1->Lines->Add(DBGrid1->SelectedField->AsString); //用MEmo组件不会自动换行
memo->ShowModal();
delete memo;
}
if(column->Field->DataType==ftGraphic) //Graphics型字段
{
/*TBlobField * aa; //用内存流操作控制二进制位图传输
aa=(TBlobField *)(DBGrid1->SelectedField); //aa=(TGraphicField*)(DBGrid1->SelectedField);??
//new 出Graphic型窗体
TGraphicForm *graphic=new TGraphicForm(Application);
Graphics::TBitmap * pic=new Graphics::TBitmap;
TMemoryStream* Stream=new TMemoryStream();
aa->SaveToStream(Stream);
pic->LoadFromStream(Stream);
graphic->Image1->Picture->Bitmap=pic;
graphic->Image1->Repaint();
graphic->ShowModal();
delete graphic;
delete pic;*/
//new出窗体
TGraphicForm *graphic=new TGraphicForm(Application);
graphic->DBImage1->DataSource=DataSource1;
graphic->DBImage1->DataField=DBGrid1->SelectedField->FieldName;
graphic->ShowModal();
delete graphic;
}
//
}Top
4 楼whitelion(www.ccproj.com)回复于 2001-08-22 10:11:53 得分 0
ccTop
5 楼snla(走在路上)回复于 2001-08-22 14:39:36 得分 0
先谢谢各位,我按luhongjun(过江项羽) 的办法,程序如下:
TBlobField* pField=(TBlobField*)DataSet->FieldByName("Pic");
TBlobStream *pmem=new TBlobStream(pField,bmRead);
pmem->Seek(0,soFromBeginning);
Graphics::TBitmap * pBitmap=new Graphics::TBitmap();
pBitmap->LoadFromStream(pmem);
Image_News->Picture->Assign(pBitmap);
delete pBitmap;
delete pmem;
结果运行到第二行,出现错误:Invalid class typecast.Top
6 楼lluunn007(书生)回复于 2001-08-22 14:43:45 得分 11
原来项羽的方法和我删除的注释是一样的,我当初也是调试出问题没用了,不知道什么原因。知道的欢迎告诉我啊。
另 帖主可以考虑用DBImage将该字段映射过来的,我的例子就是这样实现,只不过中间夹了个DBGridTop
7 楼snla(走在路上)回复于 2001-08-22 15:00:12 得分 0
不过DBImage不能显示ico,gif等其他格式的图片或图标呀!Top
8 楼snla(走在路上)回复于 2001-08-22 15:18:50 得分 0
luhongjun(过江项羽),你的办法好象只能解决bmp类型的图片Top
9 楼coldbloodfox(冷血狐)回复于 2001-08-22 15:34:24 得分 0
:-DTop
10 楼snla(走在路上)回复于 2001-08-22 16:19:15 得分 0
没人能解决吗>???????????????????????????????????/Top




