...{::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::Author:pengyiEmail:pengyi.yi@126.com::::::::Unit:UnitImagePlay::::::::DeveloperTeam:MdclDevTeam::::$Id:UnitImagePlay.pas,v1.132006/07/1308:22:24Exp$::::::::CreatedDate:2005-12-8::::LastModified:$Date:2006/07/1308:22:24$::::LastModifier:$Author:pengyi$::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}unitUnitImagePlay;interfaceusesMessages,Windows,SysUtils,Classes,CutlineU,Controls,Forms,ExtCtrls,Graphics,StdCtrls,Dialogs;typeTXPImage=class;TShowPicture=class(TThread)privateFidx:integer;...{当时显示的数}//I:integer;FItem:TXPImage;protectedprocedureExecute;override;publicprocedureSetPicture;constructorCreate(Aowner:TXPImage);end;TXPImage=class(TComponent)privateFActive:Boolean;//当前是否激活FInterval:Integer;//FTimer:TTimer;FImgbmp:TBitmap;//FImage:TImage;FImage:TCutline;FImageList:TImageList;FshowPic:TShowPicture;procedureSetActive(Value:Boolean);virtual;procedureSetInterval(Value:Integer);procedureSetImageList(Value:TImageList);procedureSetImage(Value:TCutline);publicconstructorCreate(AOwner:TComponent);override;destructorDestroy;override;procedureStart;//ProcedurePause;//ProcedureContinue;procedureStop;propertyActive:BooleanreadFActivewriteSetActive;propertyInterval:IntegerreadFIntervalwriteSetInterval;propertyImgbmp:TBitmapreadFImgbmpwriteFImgbmp;propertyImageList:TImageListreadFImageListwriteSetImageList;//PropertyImage:TImageReadFImageWriteSetImage;propertyImage:TCutlinereadFImagewriteSetImage;//PropertyshowPic:TShowPictureReadFshowPic;end;implementationusesCommonU,DbugIntf;...{TXPImage}constructorTXPImage.Create(AOwner:TComponent);begininherited;FInterval:=800;FImgbmp:=TBitmap.Create;//FImage:=TCutline.Create(AOwner);//FImageList:=TImageList.Create(AOwner);//FTimer:=TTimer.Create(AOwner);//FImage:=TImage.Create(AOwner);end;destructorTXPImage.Destroy;beginifAssigned(FImgbmp)thenFImgbmp.Free;//FTimer.Free;//FImage.Free;//FImageList.Free;inherited;end;procedureTXPImage.SetActive(Value:Boolean);beginFActive:=Value;if(FshowPic<>nil)andValuethenFshowPic:=TShowPicture.Create(Self)elseFshowPic.Terminate;end;procedureTXPImage.SetImageList(Value:TImageList);beginFImageList:=Value;end;procedureTXPImage.SetInterval(Value:Integer);beginFInterval:=value;end;procedureTXPImage.SetImage(Value:TCutline);beginFImage:=Value;end;procedureTXPImage.Start;beginFActive:=true;//创建线程FshowPic:=TShowPicture.Create(Self);//FshowPic.Resume;end;procedureTXPImage.Stop;begin//FActive:=false;ifFshowPic<>nilthenbeginFshowPic.Terminate;FshowPic:=nil;end;end;...{procedureTXPImage.Continue;beginIFFshowPic<>nilthenbeginFActive:=true;FshowPic.Resume;end;end;procedureTXPImage.Pause;beginIFFshowPic<>nilthenFActive:=false;end;}...{TShowPicture}constructorTShowPicture.Create(Aowner:TXPImage);begininheritedCreate(false);FItem:=Aowner;Fidx:=0;FreeOnTerminate:=true;end;procedureTShowPicture.Execute;//var//nTickCount:Cardinal;begininherited;whilenotTerminateddobeginifFItem.Activethenbegin//Application.ProcessMessages;synchronize(SetPicture);...{注意此处}Fidx:=Fidx+1;ifFidx>=FItem.FImageList.CountthenFidx:=0;ifterminatedthenexit;//Item.;Sleep(FItem.FInterval);//nTickCount:=GetTickCount;//whileFItem.Activeand(GetTickCount-nTickCount<FItem.FInterval)do//Application.ProcessMessages;endelsebeginSuspend;end;end;end;procedureTShowPicture.SetPicture;varsMsg:string;begin//SendMethodEnter(Format('“%s”播放动画中的设置图片',[FItem.Image.Caption]));ifFItem.Imgbmp<>nilthenbegintry//SendDebug('开始从Imagelist中获取图片');FItem.FImageList.GetBitmap(Fidx,FItem.Imgbmp);//SendDebug('完成从Imagelist中获取图片');//FItem.FImageList.GetBitmap(Fidx,FItem.FImage.Picture.Bitmap);//SendDebug('开始从把图片给Cutline图片');FItem.Image.SetImage(FItem.Imgbmp);//SendDebug('完成从把图片给Cutline图片');//SendDebug('开始刷新Cutline');//FItem.FImage.Refresh;//SendDebug('完成刷新Cutline');application.ProcessMessages;exceptonE:ExceptiondobeginsMsg:=Format('错误位置:[%s]类:[%s]名称:[%s]错误类:[%s]错误信息:[%s]',['播放动画',ClassName,FItem.Image.Caption,E.ClassName,E.Message]);SendDebugEx(sMsg,mtError);WriteLog(sMsg);end;end;end;//SendMethodExit(Format('“%s”播放动画中的设置图片',[FItem.Image.Caption]));//SendSeparator;end;end.