如何利用DBImage控件显示显示access数据库中保存的照片信息,最好提供源代码?

解决方案 »

  1.   

    如果显示的是bmp图片,简单点来用:
    Image1.Picture.Bitmap.Assign(TBLOBField(Adoquery1photo['imgfield'])保存则:
    Adoquery1photo.SQL.Add('insert into Pic values(:Pic)');
    Adoquery1photo.Parameters.ParamByName('Pic').Assign(Image1.Picture.Bitmap);
    但是我不同意,用这个方法,应为这样数据库会很大,浏览的速度也是非常慢的
    我的建议是:存取图片的路径,可以把图片放在一个固定的路径下:比如当前路径下建立一个picture文件夹,很方便管理,速度也是非常快的。
      

  2.   

    粘的代码:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, StdCtrls, DB, Grids, DBGrids, ADODB,Jpeg, XPMan,adoconed,
      Buttons;type
      TForm1 = class(TForm)
        ADOConnection1: TADOConnection;
        ADOTable1: TADOTable;
        DBGrid1: TDBGrid;
        DataSource1: TDataSource;
        Button1: TButton;
        Button2: TButton;
        OpenDialog1: TOpenDialog;
        Button3: TButton;
        SpeedButton1: TSpeedButton;
        XPManifest1: TXPManifest;
        Panel1: TPanel;
        Image1: TImage;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure DBGrid1DblClick(Sender: TObject);
        procedure Image1DblClick(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure SpeedButton1Click(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementationuses Unit2, Unit3;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
       OpenDialog1.Execute ;
       if Opendialog1.FileName <>'' then
       Image1.Picture.LoadFromFile(OpenDialog1.FileName);
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
    JPG:TJPEGImage;
    MS:TMemoryStream;
    begin
      JPG:=TJPEGImage.Create;
      MS:=TMemoryStream.Create ;
      JPG.Assign(Image1.Picture.Graphic);
      JpG.SaveToStream(MS);
      MS.Position :=0;
      ADOTable1.Append ;
      TBlobField(ADOTable1.FieldByName('zp')).LoadFromStream(ms);
      ADOTable1.Post ;
      MS.Free ;
      jpg.Free ;
    end;procedure TForm1.DBGrid1DblClick(Sender: TObject);
    var
    JPG:TJPEGImage;
    MS:TMemoryStream;
    begin
      JPG:=TJPEGImage.Create ;
      MS:=TMemoryStream.Create ;
      TBlobField(ADOTable1.FieldByName('zp')).SaveToStream(ms);
      ms.Position :=0;
      JPG.LoadFromStream(ms);
      IMage1.Picture.Assign(JPG);
      Form2.Image1.Picture.Assign(JPG);
    end;procedure TForm1.Image1DblClick(Sender: TObject);
    begin
      form2.Show ;
      form2.Height :=Image1.Height ;
      form2.Width :=Image1.Width ;
    end;procedure TForm1.Button3Click(Sender: TObject);
    begin
      ADOTable1.Next ;
      DBGrid1DblClick(nil);
    end;procedure TForm1.SpeedButton1Click(Sender: TObject);
    begin
      form3.Show ;
    end;procedure TForm1.FormDestroy(Sender: TObject);
    begin
      ADOTable1.Close ;
    end;procedure TForm1.FormCreate(Sender: TObject);
    var
    STR:String;
    MYList:TStringList;
    begin
      if FileExists('config.ini') Then
      begin
      Mylist:=TStringList.Create ;
      Mylist.LoadFromFile('config.ini');
      Str:=Mylist.Text ;
      Adoconnection1.ConnectionString :=Str;
      Adoconnection1.Connected :=true;
    //  Adodataset1.Active :=true;
      Adotable1.Active :=true;
      end
      else begin
      Mylist:=TStringlist.Create ;
      if EditConnectionString(ADOConnection1) then
      Try
      begin
      ADOConnection1.Connected :=true;
      if ADOConnection1.Connected then
      Str:=ADOConnection1.ConnectionString ;
      Mylist.Text :=Str;
      Mylist.SaveToFile('config.ini');
      Adotable1.Active :=true;
      end
      except
      Application.Terminate ;
      end;
      end;
    end;end.
      

  3.   

    最好用access数据库保存路径,然后从路径中load过来
      

  4.   

    Image1.Picture.Bitmap.Assign(TBLOBField(Adoquery1photo.fieldbyname('imgfield'))