马拉多纳那不勒斯地位:delphi adoquery 操作流

来源:百度文库 编辑:九乡新闻网 时间:2024/04/27 23:07:22
1、如何实现在Microsoft Access数据库中的图像存储:
这里是利用TStream的子类TMemoryStream向Microsoft Access数据库中存储图像的。
下面的这段代码是在按了“保存”按钮之后所触发的事件处理程序:
procedure TForm1.Button1Click(Sender: TObject);
Var
  MyJPEG : TJPEGImage;
  MS: TMemoryStream;
Begin
  MyJPEG := TJPEGImage.Create;
  Try
    With MyJPEG do
   Begin
    Assign(Image.Picture.Graphic);
   MS:=TMemoryStream.create;
   SaveToStream(MS);
   MS.Position := 0;
   Table1.Edit;
   TBlobField(Table1.FieldbyName('Image')).LoadFromStream(MS);
   Table1.Post;
   Messagebox(Getactivewindow(), '图像保存完毕!', '保存', MB_OK);
   End;
  Finally
  MyJPEG.Free;
  End;
End;
在这段代码里TStream的子类TMemoryStream利用内存流起到了将BMP格式转化为JPEG格式
的中间桥梁的作用。

2、如何将图像从Microsoft Access数据库中取出并显示出来:
下面的这段代码是在按了“查看图像”按钮之后所触发的事件处理程序:
procedure TForm1.Button1Click(Sender: TObject);
Var
MyJPEG : TJPEGImage;
  MS : TMemoryStream;
Begin
Try
  MS := TMemoryStream.Create;
TBlobField(Query1.FieldByName('Image')).SaveToStream(MS);
MS.Position := 0;
MyJPEG := TJPEGImage.Create;
    MyJPEG.LoadFromStream(MS);
DBImage1.Picture.Bitmap.Assign(MyJPEG);
    //或是Sender.Picture.Assign(MyJPEG);
Finally
  MS.Free;
MyJPEG.Free;
End;
End;
这段代码的主要作用是:首先将查询结果中的JPEG图像格式数据保存到TMemoryStream中去,
然后设置数据指针在TMemoryStream中的位置为0;接着从TMemoryStream中读入相关数据,
并把它们赋给TDBImage.Picture.Bitmap,这样一来就实现了将数据库中所存储的JPEG格式的
数据转化为BMP格式,并在TDBImage中将图像显示出来。最后将TMemoryStream和TJPEGImage
这两个对象释放掉。特别要注意的是不能在设计阶段设置TDBImage的DataField属性,而只能
通过写代码的形式在运行阶段把利用流式数据所转化过来的新格式的图像数据赋给TDBImage.Picture.Bitmap