请大家帮忙看下这段代码
unit tUnit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,jpeg, StdCtrls, ExtCtrls, DB, ADODB;
type
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
OpenDialog1: TOpenDialog;
ADOQuery1: TADOQuery;
ADOConnection1: TADOConnection;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ADOQuery1AfterScroll(DataSet: TDataSet);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Image1.Picture.LoadFromFile(OpenDialog1.FileName); //加载图片
end;
procedure TForm1.Button2Click(Sender: TObject);
var ext:string;
begin
if image1.Picture.Graphic<>nil then
begin
try
adoconnection1.begintrans;//ado连接
adoquery1.Edit;
adoquery1.FieldByName('photo').Assign(image1.Picture.Graphic);//以下记录保存到数据库的图像格式
ext:=extractfileext(opendialog1.FileName);
if uppercase(ext)='.BMP' THEN
adoquery1.FieldByName('isbmp').Value:=1
ELSE
IF(UPPERCASE(EXT)='.JPEG') OR (UPPERCASE(EXT)='.JPG')
THEN
adoquery1.FieldByName('isbmp').Value:=2;
adoquery1.Post;
adoconnection1.CommitTrans;
except
adoconnection1.RollbackTrans;
showmessage('图片保存失败!');
end;//tryend;
end;//从数据表中显示图片:(AfterScroll,Afteropen等事件)
end;
procedure TForm1.ADOQuery1AfterScroll(DataSet: TDataSet);
var jpegimage:tjpegimage;
begin
Image1.Picture.Graphic:=nil;//BMP、JPEG两种图像数据必需分别处理
if adoquery1.FieldByName('isbmp').AsString='1'
then
begin
Image1.Picture.Bitmap.Assign(adoquery1.FieldByName('photo'));
end
else
if adoquery1.FieldByName('isbmp').AsString='2'
then begin jpegimage:=tjpegimage.Create;//通过jpegimage将图像显示在image1,否则会出错
try
jpegimage.Assign(adoquery1.FieldByName('photo'));
Image1.Picture.Graphic:=jpegimage;
finally
jpegimage.Free;
end;//tryend;
end;
end;
end.
运行时提示对象关闭时,不允许操作,请教是哪里有问题?