CREATE CURSOR DB_TMP ( ; FIELD1 C( 04 ), ; FIELD2 C( 04 ) ) INSERT INTO DB_TMP VALUES ( "0001", "AAAA" ) INSERT INTO DB_TMP VALUES ( "0002", "BBBB" ) INSERT INTO DB_TMP VALUES ( "0003", "BBBB" ) INSERT INTO DB_TMP VALUES ( "0004", "BBBB" ) SELECT DB_TMP GO TOP m.LO_Form = CREATEOBJECT( "Form" ) m.LO_Form.AddObject( "Grid1", "Grid_Base" ) WITH m.LO_Form.Grid1 .Width = m.LO_Form.Width .Height = m.LO_Form.Height .Visible = .T. ENDWITH m.LO_Form.Show() ON KEY LABEL ESC CLEAR EVENTS READ EVENTS ON KEY LABEL ESC CLEAR EVENTS CLEAR ALL PROCEDURE My_Function PARAMETER TC_Day RETURN STR( RECNO( "DB_TMP" ) * VAL( m.TC_Day ) ) DEFINE CLASS Grid_Base AS Grid ReadOnly = .T. RecordSource = "DB_TMP" ADD OBJECT Column1 AS Grid_Column WITH ; Header1.Caption = "F1", ; ControlSource = "FIELD1" ADD OBJECT Column2 AS Grid_Column WITH ; Header1.Caption = "F2", ; ControlSource = "FIELD2" ADD OBJECT Column3 AS Grid_Column WITH ; Header1.Caption = "Day 1", ; ControlSource = "My_Function( '1' )" ADD OBJECT Column4 AS Grid_Column WITH ; Header1.Caption = "Day 2", ; ControlSource = "My_Function( '2' )" ENDDEFINE DEFINE CLASS Grid_Column AS Column ADD OBJECT Header1 AS Grid_Header ADD OBJECT TextBox1 AS Grid_TextBox ENDDEFINE DEFINE CLASS Grid_Header AS Header ENDDEFINE DEFINE CLASS Grid_TextBox AS TextBox BorderStyle = 0 Margin = 0 ENDDEFINE