unit loadalbumcovers; interface uses Classes,graphics,loadjpegorbmp; type loadcovers = class(TThread) private vis : boolean; o : tbitmap; { Private declarations } procedure controlsvisible; procedure addthumb; protected procedure Execute; override; end; implementation uses main,jukeboxform; { Important: Methods and properties of objects in VCL can only be used in a method called using Synchronize, for example, Synchronize(UpdateCaption); and UpdateCaption could look like, procedure loadcovers.UpdateCaption; begin Form1.Caption := 'Updated in a thread'; end; } { loadcovers } procedure loadcovers.controlsvisible; begin mainform.coverpickbut.visible:=vis; jukebox.gothumb.Visible:=vis; end; procedure loadcovers.addthumb; begin jukebox.thumbs.add(o); end; procedure loadcovers.Execute; var n : integer; begin { Place thread code here } vis:=false; synchronize(controlsvisible); o:=tbitmap.create; for n:=1 to albumcount do begin loadjpegbmp(config.pathtocd+album[n].artist+'__'+album[n].album,o); synchronize(addthumb); end; o.free; vis:=true; synchronize(controlsvisible); end; end.