LOCAL oForm as Form oForm = CREATEOBJECT('TestForm') oForm.Show(1) RETURN DEFINE CLASS TestForm as Form CurrentValue = 0 AutoCenter = .T. PROCEDURE Load CREATE CURSOR parent_ (pkParent C(10), test Int) CREATE CURSOR child_ (pkChild C(10), fkParent C(10), test Int) LOCAL lcKey lcKey = SYS(2015) INSERT INTO parent_ values (m.lcKey, 1) INSERT INTO child_ values (SYS(2015), m.lcKey, 11) INSERT INTO child_ values (SYS(2015), m.lcKey, 12) lcKey = SYS(2015) INSERT INTO parent_ values (m.lcKey, 2) INSERT INTO child_ values (SYS(2015), m.lcKey, 21) INSERT INTO child_ values (SYS(2015), m.lcKey, 22) SELECT .F. as selected__, ; PR.pkParent, ; '' as fkParent, ; PR.test, ; 0 ; FROM parent_ PR ; union ; SELECT .F. as selected__, ; '', ; CH.fkParent, ; 0, ; CH.test ; FROM child_ CH ; INTO CURSOR gridSource READWRITE INDEX ON (TRANSFORM(selected__)+pkParent) Tag x COLLATE 'machine' INDEX on pkParent DESCENDING TAG y COLLATE 'machine' GO TOP ENDPROC ADD OBJECT grdTest as Grid WITH ; Left = 10, Top = 10, ; Width = 350, Height = 220, ; Anchor = 15, ; RowSource = 'gridSource', ; ColumnCount = 5 PROCEDURE grdTest.Init This.SetAll('DynamicForeColor','This.DynamicX()','Column') WITH This.Column1 .AddObject('Check1','Checkbox') WITH .Check1 .Caption = SPACE(0) .Visible = .T. ENDWITH .Sparse = .F. .DynamicCurrentControl = "IIF(EMPTY(pkParent),'Text1','Check1')" ENDWITH BINDEVENT(This.Column1.Check1,'Click',Thisform,'GridRefresh') ENDPROC PROCEDURE grdTest.Destroy UNBINDEVENTS(This.Column1.Check1) ENDPROC PROCEDURE grdTest.DynamicX LOCAL lnColor, lcValue lnColor = RGB(255,0,0) IF INDEXSEEK( TRANSFORM(selected__)+fkParent, .F., 'gridSource','x') lnColor = RGB(0,0,0) ENDIF RETURN m.lnColor ENDPROC PROCEDURE GridRefresh() This.grdTest.Refresh() ENDPROC ENDDEFINEhth