回 帖 发 新 帖 刷新版面

主题:显示记录问题

我用 C++BUilder 6.0 +MS SQL2000编写数据库程序,使用ADO组件数据库服务器,在数据表中有一名为“phto”的Image型字段,通过单击Grid控件,移动记录指针,显示不同记录内容,包括"phto"字段,我在ADOTable控件的AfterScorll事件中编写代码实现,但只能显示最后一条记录,且程序无反应(在Delphi中能够实现),求教如何做?
主要是库中JPEG型图片显示在Image1框中的问题,我操作的代码为:

  TMemoryStream    *pstream;
   TBlobField      *bf;
   TJPEGImage      *jpegm;

   bf=(TBlobField*)ATable2->FieldByName("phto");
   if(!bf->IsNull )
       {   pstream=new TMemoryStream();
           jpegm=new  TJPEGImage();
           try
             {  Image1->Picture->Graphic=NULL;
                bf->SaveToStream(pstream);
                pstream->Position=0;
                jpegm->LoadFromStream(pstream);
                Image1->Picture->Graphic=jpegm;
             }
          __finally
             { delete pstream;
               delete bf;
               delete jpegm;
             }
        }

回复列表 (共3个回复)

沙发

请贴出程序代码?!!

板凳

把库中存储的JPEG图片显示在Image1框操作代码为:
TMemoryStream    *pstream;
   TBlobField      *bf;
   TJPEGImage      *jpegm;

   bf=(TBlobField*)ATable2->FieldByName("phto");
   if(!bf->IsNull )
       {   pstream=new TMemoryStream();
           jpegm=new  TJPEGImage();
           try
             {  Image1->Picture->Graphic=NULL;
                bf->SaveToStream(pstream);
                pstream->Position=0;
                jpegm->LoadFromStream(pstream);
                Image1->Picture->Graphic=jpegm;
             }
          __finally
             { delete pstream;
               delete bf;
               delete jpegm;
             }
        }

3 楼

Image1->Picture->Graphic=jpegm;
delete jpegm;
这两句就有问题了,Image1中的图片指向jpegm,但是jpegm又被delete。会出错吧
Image1->Picture->Graphic->Assign(jpegm);看看

我来回复

您尚未登录,请登录后再回复。点此登录或注册