关于dbimage的显示问题不是设置一下datasource就OK了吗?可是在设置了datasource后,出现了Bitmap image is not valid提示,在dbimage中导入照片的代码如下:
procedure TF_student.BtnimportClick(Sender: TObject);
begin
    if Openpicturedialog1.Execute then 
    begin
      dbimage1.Picture.LoadFromFile (openpicturedialog1.FileName );
      adoqrystu.Edit ;
      TBlobField(ADOqrystu.FieldByName('photo')).LoadFromFile(openpicturedialog1.FileName);
      adoqrystu.Post ;
      end;
end;
我的本意是让左边dbgrid中的数据滚动时,右边的dbimage动态显示图片,为此我又在adoquery的afterscroll事件中添加以下代码:
 adoqrystu.SQL.Clear ;
  adoqrystu.SQL.Add('select photo from student where studentno='''+adoqrystu.FieldByName('studentno').AsString+''' ' ) ;
  adoqrystu.Open ;
  dbimage1.DataSource :=datasource1;
可是在运行时又出现了ADOQryStu:Field 'studentno'not found的错误提示,我不知上面一段关于afterscroll事件的代码有无意义,代码的正确性也尚在商榷中,请高手指点,谢谢!

解决方案 »

  1.   

    补充说明一下,表中定义的photo的数据类型是:image型的,不过在dbgrid中显示blob
      

  2.   

    DBImage只能显示BMP图片,如果数据库中存储的为JPG图片,是不能显示的.
      

  3.   

    那怎么办啊,我刚才试了一下,就是导入bmp 文件也显示不了啊,当然前提是只是把dbimage的datasource设置为datasouce1,而没有其他代码,我写的那个afterscroll事件代码运行时就不通过,能给个解决方案吗?谢谢!
      

  4.   

    数据集(dataset)打开的时候,插入删除的时候,都会调用afterscroll这个事件.所以会报错.其时用DBImage显示BMP图片的时候,根本不需要写代码.记录移动后,DBImage的会根着显示的.
      

  5.   

    我已经把afterscroll事件给删除了,可还是不能显示图片啊!