Hey Mike:
Here's an interesting one.
I modified your code; a good one by the way; and came up with this weird little anomaly.
When the form's instantiated and you click on the second or third image cell, the first image cell shows the value in the 'TrueFalse' field. After that it works fine. Matter of fact - If you click on anything other than the second or third image cells everything works fine.
You'll notice I removed the second columns textbox thinking that would solve it. The cell just shows blank if you follow the steps above.
BTW. f:\chr_enter1.jpg and f:\chr_enter2.jpg are roughly the size and width of a standard textbox control.
oForm=createobject("myForm"

oForm.addobject('myGrid1','myGrid')
oForm.myGrid1.column1.header1.caption = "Name"
oForm.myGrid1.column2.header1.caption = "Color"
oForm.myGrid1.column2.sparse = .f.
oForm.myGrid1.column2.addobject("container1","containx","f:\chr_enter1.jpg"

oForm.myGrid1.column2.addobject("container2","containx","f:\chr_enter2.jpg"

oForm.myGrid1.column2.removeobject("Text1"

oForm.show()
read events
define class myForm as form
autocenter = .t.
procedure load()
create cursor myCursor (name C(20),TrueFalse L)
insert into myCursor (name,TrueFalse ) values ("MIKE",.t.)
insert into myCursor (name,TrueFalse ) values ("JOHN",.f.)
insert into myCursor (name,TrueFalse ) values ("PAUL",.t.)
go top
endproc
procedure destroy
clear events
endproc
enddefine
define class myGrid as grid
visible = .t.
columncount = 2
width = 200
top = 20
left = 20
procedure init()
with this
.column2.dynamiccurrentcontrol = "dynamic()"
endwith
endproc
enddefine
define class TextRed as textbox
backcolor = rgb(255,0,0)
visible = .t.
enddefine
define class TextBlue as textbox
backcolor = rgb(0,128,255)
visible = .t.
enddefine
define class TextYellow as textbox
backcolor = rgb(255,255,0)
visible = .t.
enddefine
define class containx as container
borderwidth = 0
backstyle = 0
visible = .t.
add object imgFile as image with ;
visible = .t.
procedure init
lparam lcPicture
this.imgFile.picture = lcPicture
*!* this.width = this.imgFile.width
*!* this.height = this.imgFile.height
endproc
enddefine
function dynamic
local control1
if myCursor.truefalse =.t.
control1 = "container1"
else
control1 = "container2"
endif
return control1
endfunc
'We all must do the hard bits so when we get bit we know where to bite'
