Public oForm oForm = Createobject('myForm') oForm.Show Define Class myForm As Form DataSession = 2 Height = 600 Width = 600 cImagePath = "graphics" Add Object myGrid As Grid ; with Height = 600, Width = 600, RecordSource="myImageList",ColumnCount=2 Procedure Load Create Cursor myImageList (FileName m) For ix=1 To Adir(aImageList, Addbs(This.cImagePath)+'*.*') Insert Into myImageList Values (Fullpath(Addbs(This.cImagePath)+aImageList[ix,1])) Endfor Locate Endproc Procedure myGrid.Init Local loColumn loColumn = This.Columns(This.ColumnCount) With loColumn .AddObject('myImage','Image') .CurrentControl = 'myImage' .Sparse = .F. .myImage.Visible = .T. .DynamicBackColor = 'thisform.fake('+; Stuff(Sys(1272,loColumn),1,Len(Sys(1272,This)),'this')+'.myImage)' .Width = 90 Endwith This.RowHeight = 100 Endproc Procedure fake Lparameters toImage toImage.Picture = myImageList.FileName Return 0xFFFFFF Endproc EnddefineOne doesn't need to use a container, it was a sample and with a container you have option to put multiple objects there, might have conatiner level code etc.