我在的SQLSERVER中建了一个表,有2个字段一个是图片的序号,一个是图片(我允许不同的图片有相同的序号)。我用流来实现存储和用TIMAGE来读取图片并建立2个过程
procedure SetPicture(pos:string;TempQuery:TADOQuery); /////往数据库中插入图片 procedure GetPicture(pos:string;TempQuery:TADOQuery); ////得到图片
具体代码:
procedure TForm1.GetPicture(pos:string;TempQuery: TADOQuery);
var MS_JpegStream:TMemoryStream;
begin
try
MS_JpegStream:=TMemoryStream.Create;
with tempQuery do
begin
close;
sql.clear;
//修改这个语句
sql.Add('select jpg1 from ysdank where jpgid=:jpgid');
Parameters.ParamByName('jpgid').value:=edit1.Text;
Open;
end;
if tempquery.FieldByName('jpg1').isnull then
begin
image1.Picture.Graphic:=nil;
end
else
begin
(tempQuery.FieldByName('jpg1') as tblobfield).savetostream(MS_JpegStream);
image1.Picture.Graphic:=nil;
image1.Picture.Graphic:=TJpegImage.Create;
MS_JpegStream.Position:=0;
image1.Picture.Graphic.LoadFromStream(MS_JpegStream);
end;
finally
MS_JpegStream.Free;
end;
end;
procedure Tysda.SetPicture(pos:string; TempQuery: TADOQuery);
var
MS_JpegStream:TMemoryStream;
M_BitMap:TBitMap;
M_Jpeg:TJpegImage;
begin
try
MS_JpegStream:=TMemoryStream.Create;
M_BitMap:=TBitMap.Create;
M_Jpeg:=TJpegImage.Create;
if extractfileext(filename)='.bmp' then
begin
M_BitMap.LoadFromFile(filename);
M_Jpeg.Compress;
M_Jpeg.Assign(M_BitMap);
end
else if extractfileext(filename)='.jpg' then
begin
M_Jpeg.LoadFromFile(filename);
end;
M_Jpeg.SaveToStream(MS_JpegStream);
with tempQuery do
begin
close;
sql.clear;
//修改这个语句
try
sql.Add('insert into ysdank(jpgid,jpg1) values (:jpgid,:jpg1)');
except
end;
Parameters.ParamByName('jpgid').Value:=edit1.Text;
Parameters.ParamByName('jpg1').LoadFromStream(MS_JpegStream,ftblob);
ExecSQL;
end;
finally
MS_JpegStream.Free;
M_BitMap.Free;
M_Jpeg.Free;
end;
end;问题就是我希望在窗体里多放几个TIMAGE,然后根据序列号查询图片的时候,如果一个序列号对应多个图片,那么能让他们都能显示出来。请问如何修改以上代码或者能给更好的建议!!!!!
procedure SetPicture(pos:string;TempQuery:TADOQuery); /////往数据库中插入图片 procedure GetPicture(pos:string;TempQuery:TADOQuery); ////得到图片
具体代码:
procedure TForm1.GetPicture(pos:string;TempQuery: TADOQuery);
var MS_JpegStream:TMemoryStream;
begin
try
MS_JpegStream:=TMemoryStream.Create;
with tempQuery do
begin
close;
sql.clear;
//修改这个语句
sql.Add('select jpg1 from ysdank where jpgid=:jpgid');
Parameters.ParamByName('jpgid').value:=edit1.Text;
Open;
end;
if tempquery.FieldByName('jpg1').isnull then
begin
image1.Picture.Graphic:=nil;
end
else
begin
(tempQuery.FieldByName('jpg1') as tblobfield).savetostream(MS_JpegStream);
image1.Picture.Graphic:=nil;
image1.Picture.Graphic:=TJpegImage.Create;
MS_JpegStream.Position:=0;
image1.Picture.Graphic.LoadFromStream(MS_JpegStream);
end;
finally
MS_JpegStream.Free;
end;
end;
procedure Tysda.SetPicture(pos:string; TempQuery: TADOQuery);
var
MS_JpegStream:TMemoryStream;
M_BitMap:TBitMap;
M_Jpeg:TJpegImage;
begin
try
MS_JpegStream:=TMemoryStream.Create;
M_BitMap:=TBitMap.Create;
M_Jpeg:=TJpegImage.Create;
if extractfileext(filename)='.bmp' then
begin
M_BitMap.LoadFromFile(filename);
M_Jpeg.Compress;
M_Jpeg.Assign(M_BitMap);
end
else if extractfileext(filename)='.jpg' then
begin
M_Jpeg.LoadFromFile(filename);
end;
M_Jpeg.SaveToStream(MS_JpegStream);
with tempQuery do
begin
close;
sql.clear;
//修改这个语句
try
sql.Add('insert into ysdank(jpgid,jpg1) values (:jpgid,:jpg1)');
except
end;
Parameters.ParamByName('jpgid').Value:=edit1.Text;
Parameters.ParamByName('jpg1').LoadFromStream(MS_JpegStream,ftblob);
ExecSQL;
end;
finally
MS_JpegStream.Free;
M_BitMap.Free;
M_Jpeg.Free;
end;
end;问题就是我希望在窗体里多放几个TIMAGE,然后根据序列号查询图片的时候,如果一个序列号对应多个图片,那么能让他们都能显示出来。请问如何修改以上代码或者能给更好的建议!!!!!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货