PUBLIC oform1 oform1=NEWOBJECT("form1") oform1.Show RETURN DEFINE CLASS form1 AS form ADD OBJECT grid1 AS grid WITH ; ColumnCount = 1, ; Left = 33, ; Top = 29, ; Column1.Sparse = .F. PROCEDURE grid1.column1.Init this.RemoveObject('text1') STORE this.AddObject('cmd',"myCommandButton") TO this.cmd.Visible * UNCOMMENT NEXT LINE AND FIELD VALUE IS SHOW * this.cmd._ControlSource = "myCursor.field1" ENDPROC PROCEDURE Load CREATE CURSOR myCursor ( field1 C(10)) INSERT INTO myCursor VALUES ('#123') INSERT INTO myCursor VALUES ('#456') INSERT INTO myCursor VALUES ('#678') GO TOP ENDPROC ENDDEFINE * IF YOU DO NOT CHANGE _ControlSource it operate like a standard commandButton DEFINE CLASS myCommandButton AS CommandButton Caption = 'Command' _ControlSource = "m.This.Caption" HIDDEN PROCEDURE SpecialEffect_Access this.Caption = EVAL(m.this._Controlsource) RETURN m.This.SpecialEffect ENDPROC ENDDEFINEIf you have a commandButton devBaseclass you can add this little changes to it.