adoquery图片存储调用问题,100分送上。(100分)

  • 主题发起人 主题发起人 wsmp3
  • 开始时间 开始时间
W

wsmp3

Unregistered / Unconfirmed
GUEST, unregistred user!
我用ADOConnection1,ADOQuery1连数据库和表。

3个“按钮”caption分别为“打开”,“保存”,“调出”,1个opendialog控件,2个image控件。

1.当我单击“打开”按钮时,将image1放入一图片。
if opendialog1.Execute then
image1.Picture.LoadFromFile(opendialog1.FileName);

opendialog1的filter属性如何设?我设为*.bmp|*.jpg,只能打开bmp的图片,怎样设才能打开
不同格式的图片?

2.当我单击“保存”按钮时,我希望将image1中的图片存入数据库中的数据表。
假设库名为ws,表名为yxl,表yxl中有一字段tp,tp类型为image。
我应如何写这段代码代码,将图片存入?

3.当完成2将图片存入,单击“调出”按钮时,我希望将库ws中表yxl中tp字段图片取出
放入到image2中,我应如何写这段代码代码,将图片调出?
 
你可以用OpenPictureDialog控件处理图片,要简单的多

//uses jpeg , extctrls ,GifImage

//调入图片
procedure TForm1.Button1Click(Sender: TObject);
begin
if not OpenPictureDialog1.Execute then
Exit;
if not IsPicture(OpenPictureDialog1.FileName) then
begin
Application.MessageBox('您选择的不是图形文件!', '提示', 64);
Exit;
end;

Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;

//判断是否是图片
function TForm1.IsPicture(A_FileName: TFileName): Boolean;
begin
with TPicture.Create do
try
LoadFromFile(A_FileName);
Result := (Graphic is TJPEGImage) or (Graphic is TBitmap)
or (Graphic is TGifImage);
finally
Free;
end;
end;

//保存图片
procedure TForm1.Button2Click(Sender: TObject);
begin
Query1.Insert;
Query1Picture.Assign(Image1);
Query1.Post;
end;

//调出图片
procedure TForm1.Button3Click(Sender: TObject);
begin
Image2.Assign(Query1Picture);
end;
 
这个简单啊。。注意用到jpg图片,必须在uses中引用JPEG单元。
打开图片
procedure TForm1.Button1Click(Sender: TObject);
begin
try
if opendialog1.Execute then
begin
edit1.Text:=opendialog1.FileName;
image1.Picture.LoadFromFile(opendialog1.FileName);
end;
except
showmessage('图片类型不正确!');
end;
end;

保存图片
procedure TForm1.Button2Click(Sender: TObject);
begin
if fileexists(edit1.Text) and (edit2.text<>'') then
begin

ADOQuery1.Active:=true;
ADOQuery1.Insert;
ADOQuery1.FieldByName('name').AsString:=edit2.Text;
TBlobField(ADOQuery1.FieldByName('pic')).loadfromfile(edit1.Text);
ADOQuery1.Post;
end;
end;

调用图片
procedure TForm1.Button3Click(Sender: TObject);
var
m:TMemoryStream;
jpg:TJpegImage;
begin
m := TmemoryStream.Create;
ADOquery1.Active:=true;
try
(form1.ADOquery1pic as TBlobField).SaveToStream(m);
jpg := TJpegImage.Create;
m.Position := 0;
jpg.LoadFromStream(m);
// m.Position := 0;
m.Free;
Image2.Picture.Assign(jpg);
jpg.Free;
except
showmessage('供应商上传的图片格式不正确,无法浏览!')
end;
end;

保证ok,,给分了。。。。。。。。。。。
 
多人接受答案了。
 
用 adoquery1.fieldsbyname('fieldname').assign=image.picture;就可以
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
824
DelphiTeacher的专栏
D
后退
顶部