delphi 中显示图片问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 13:36:17
我要在access中存入照片,在delphi中通过DBImage的Click事件将照片导入数据库.例子的代码如下,数据模块中有 PersonnelData.Personnel_infoADOTable,
procedure TPersonnelManageFrm.DBImage1Click(Sender: TObject);
begin
//打开【增加相片字段】的文件选取对话窗口
if OpenDialog1.Execute then
begin
//进入记录编辑模式
PersonnelData.Personnel_infoADOTable.Edit;
//将指定的图片文件加载对应相片字段的Tfield组件内
PersonnelData.Personnel_infoADOTablePicture.LoadFromFile(OpenDialog1.FileName);
end;
end;
但是提示:"无法从指定的源创建记录集,源文件必须包含XML或ADTG格式的记录集数据".
我是初学者,希望各位高手不吝赐教,说详细点.最好能实现可以到入任何格式的图片.谢谢

我不是很清楚你用的是什么方式.不过,我使用的最多的便是使用MemoryStream的方式读取图片.
你可以尝试下面的方法,我自己测试通过的:
存入图像:
procedure TForm1.Button5Click(Sender: TObject);
var
MStream : TMemoryStream;
FileExt : string;
begin
if image1.Picture.Graphic <> nil then
begin
MStream := TMemoryStream.Create;
FileExt := ExtractFileExt(Opendialog1.FileName);
end;
try
image1.Picture.Graphic.SaveToStream(MStream);
Mstream.Position := 0;

adoquery1.Edit;
TBlobField(Adoquery1.FieldByName('phote')).LoadFromStream(MStream);
if uppercase(fileExt) = '.BMP' then
begin
Adoquery1.FieldByName('isbmp').Value := 1;//这个是专门使用一个字段,来标志是.BMP还是JPEG图片的.
ShowMessage('Insert BMP OK!');
end
else if (UpperCase(fileExt) = '.JPG') or (UpperCase(FileExt) = '.JPEG') then
begin
adoQuery1.FieldByName('isbmp').Value := 0;
S