从资源文件调用gif文件出错Abstract Error (已经uses gifimage了),该怎么处理

从资源文件调用gif文件出错Abstract Error (已经uses gifimage了)
代码如下:
已经uses   gifimage了,我用gifanimator也不行啊!!同样的错误啊!

procedure   TForm1.Button1Click(Sender:   TObject);  
var  
Stream:TResourceStream;  
Gif:TGraphic;  
Begin
Stream:=TResourceStream.Create(HINSTANCE, 't1z ', 'GIF ');
Try
GIF:=TGraphic.Create;
Try
GIF.LoadfromStream(Stream);
Image1.Picture.Assign(GIF);
Finally
GIF.Free;
end;
Finally
Stream.Free;
end;
end;



------解决方案--------------------
Try:

image1.Picture.Bitmap.Assign(GIF);
------解决方案--------------------
可以的,会把gif自动转成bitmap显示出来。看看tgifimage.assignto的实现

procedure TGIFImage.AssignTo(Dest: TPersistent);
begin
if (Dest is TBitmap) then
Dest.Assign(Bitmap)
else
inherited AssignTo(Dest);
end;
------解决方案--------------------
请到这里下载最新版本和DEMO,几年没更新了,今年刚刚更新。
http://www.tolderlund.eu/delphi/

下面这段是官方DEMO代码。

uses
GIFimage;

procedure TFormDemo.ButtonLoadClick(Sender: TObject);
var
Stream : TStream;
GIF : TGIFImage;
begin
// Do not use buffering.
// This is safe since we have complete control over the TImage 's canvas
include(GIFImageDefaultDrawOptions, goDirectDraw);

// Create a stream to load the GIF resource from
Stream := TResourceStream.Create(hInstance, 'download ', 'GIF ');
try
GIF := TGIFImage.Create;
try
// Load the GIF from the resource stream
GIF.LoadFromStream(Stream);
// Display the GIF in the TImage
ImageGIF.Picture.Assign(GIF);
finally
GIF.Free;
end;
finally
Stream.Free;
end;
end;

procedure TFormDemo.FormClose(Sender: TObject; var Action: TCloseAction);
begin
// Since we are using the goDirectDraw options, we MUST stop the GIF paint
// thread before the form is destroyed.
ImageGIF.Picture.Graphic := nil;
end;