procedure TForm1.next1Click(Sender: TObject);//下一页按钮事件
var
  i:integer;
  strm:tadoblobstream;
  jpegimage:tjpegimage;
begin
for i:=1 to 32 do
  begin
  (FindComponent('label'+inttostr(i)) as Tlabel).Caption := '';
  (FindComponent('image'+inttostr(i)) as Timage).Picture.Graphic := nil;
  end;
for  i:=1 to ADOQuery1.RecordCount do
  begin
    try
      strm := tadoblobstream.Create(TBlobField(ADOQuery1.FieldByName('图标')),bmread); //从SQL中读取图片,赋到strm
      (FindComponent('label'+inttostr(i)) as Tlabel).Caption := ADOQuery1.FieldByName('游戏名称').AsString;
      if adoquery1.fieldbyname('isbmp').asstring ='0' then //判断图像类型
      begin
        jpegimage := tjpegimage.Create;
        try
          jpegimage.LoadFromStream(strm);
          (FindComponent('image'+inttostr(i)) as Timage).Picture.Graphic := jpegimage;
        finally
          jpegimage.Free;
        end;
      end;
      ADOQuery1.Next;
    finally
      strm.Free ;
    end;
  end;
end;这里有个问题,就是按“下一页”,直到读完数据库里的图片后,数据库里的最后一张图片会显示很多张,因为1页显示32个图片,所以假设有35张图片时,第35张图片显示在第二页的第3个位置上,但之后的第4-35个位置也会显示数据库的最后一张图片!另外因为一个页面只有32个image控件供显示图片,所以显示32之后的图片时会出错!