loForm = CREATEOBJECT('oGridTest') loForm.Show() DEFINE CLASS basegrid AS Grid FUNCTION SaveBindings() LOCAL loCol THIS.AddProperty('OriginalRecordSource',THIS.RecordSource) FOR EACH loCol IN THIS.Columns loCol.AddProperty('OriginalControlSource',loCol.ControlSource) ENDFOR ENDFUNC FUNCTION Lock() LOCAL loCol THIS.RecordSource = "" FOR EACH loCol IN THIS.Columns loCol.ControlSource = "" ENDFOR ENDFUNC FUNCTION Unlock() LOCAL loCol THIS.RecordSource = THIS.OriginalRecordSource FOR EACH loCol IN THIS.Columns loCol.ControlSource = loCol.OriginalControlSource ENDFOR ENDFUNC ENDDEFINE DEFINE CLASS oTestButton AS CommandButton Caption = "Recreate cursor" FUNCTION Click THISFORM.oGrid.Lock() USE IN SELECT('testalias') CREATE CURSOR testAlias (field1 M, field2 C(254)) INSERT INTO testAlias VALUES (REPLICATE('Foo'+CHR(13),10),'Foo') INSERT INTO testAlias VALUES (REPLICATE('Bar'+CHR(13),10),'Bar') INSERT INTO testAlias VALUES (REPLICATE('Foo'+CHR(13),10),'Foo') INSERT INTO testAlias VALUES (REPLICATE('Bar'+CHR(13),10),'Bar') LOCATE THISFORM.oGrid.Unlock() THISFORM.Refresh() ENDFUNC ENDDEFINE DEFINE CLASS oTestEditBox AS EditBox Margin = 0 BorderStyle = 0 && too show that code from custom controls is not lost FUNCTION DblClick() MESSAGEBOX('Foobar') ENDFUNC ENDDEFINE DEFINE CLASS oGridTest AS Form Width = 500 Height = 500 WindowType = 1 ADD OBJECT oGrid AS basegrid WITH Left=10, Top = 10, Height = 350, Width = 400 ADD OBJECT oButton AS oTestButton WITH Left=10, Top = 400, Height = 50, width = 100 FUNCTION Load CREATE CURSOR testAlias (field1 M, field2 C(254)) INSERT INTO testAlias VALUES (REPLICATE('Foo'+CHR(13),10),'Foo') INSERT INTO testAlias VALUES (REPLICATE('Bar'+CHR(13),10),'Bar') INSERT INTO testAlias VALUES (REPLICATE('Foo'+CHR(13),10),'Foo') INSERT INTO testAlias VALUES (REPLICATE('Bar'+CHR(13),10),'Bar') LOCATE ENDFUNC FUNCTION Init WITH THIS.oGrid .ColumnCount = 2 .RecordSource = 'testalias' && bind column 1 to field no. 2 .Columns(1).ControlSource = 'testalias.field2' && vice versa -> to show that fieldorder doesn't matter WITH .Columns(2) .AddObject('Edit1','oTestEditBox') .RemoveObject('Text1') .CurrentControl = 'Edit1' .Edit1.Visible = .T. .ControlSource = 'testalias.field1' .DynamicBackColor = 'IIF(testalias.field1="Foo",RGB(255,0,0),RGB(0,255,0))' .Sparse = .F. ENDWITH ENDWITH THIS.oGrid.SaveBindings() ENDFUNC ENDDEFINERegards