USE yourtable RELEASE oForm && Create a PUBLIC to hold the form reference && so you can manipulate the oForm object from PUBLIC oForm && the command window and/or activate DEBUG oForm = CREATEOBJECT("myForm") oForm.Show() DEFINE CLASS myForm AS Form Height = 450 * * Custom grid on top with custom textbox * ADD OBJECT grdCustom AS myGrid WITH ; Left=10, Top=10 * * Standard grid for comparison * ADD OBJECT grdStandard AS Grid WITH ; Left=10, Top=250 ENDDEFINE DEFINE CLASS myGrid AS Grid FUNCTION Init LOCAL oCol FOR EACH oCol IN this.Columns oCol.RemoveObject("Text1") && remove the standard textbox oCol.AddObject("Text1","myText") && add the custom textbox oCol.Text1.Visible = .t. && make it visible ENDFOR ENDFUNC ENDDEFINE DEFINE CLASS myText AS TextBox FUNCTION Click MessageBox("Clicked "+this.Parent.Name) ENDFUNC ENDDEFINEThe grid on the top is the one with the customized textbox with Click method code. The grid on the bottom is a standard grid with the standard textbox. I'd suggest looking at the created oForm object in the debugger and the two grid objects and what's in them with the debugger.