procedure change_grd_source LPARAMETERS tcNewRecordSource LOCAL lnSelObjectCount, loGridRef, lnCnt LOCAL ARRAY laSelectedObject[1], laColumnSources[1] lnSelObjectCount = ASELOBJ(laSelectedObject) IF lnSelObjectCount = 0 WAIT WINDOW 'Select a grid in Form Designer first' nowait RETURN ENDIF loGridRef = laSelectedObject[1] IF loGridRef.BaseClass # 'Grid' WAIT WINDOW 'One Grid object must be selected' nowait RETURN ENDIF IF loGridRef.ColumnCount>0 DIMENSION laColumnSources[loGridRef.ColumnCount] FOR lnCnt = 1 TO loGridRef.ColumnCount laColumnSources[lnCnt] = JUSTEXT(loGridRef.Columns(lnCnt).controlsource) NEXT ENDIF loGridRef.RecordSource = tcNewRecordSource FOR lnCnt = 1 TO loGridRef.ColumnCount IF !EMPTY(laColumnSources[lnCnt]) loGridRef.Columns(lnCnt).ControlSource = tcNewRecordSource+'.'+laColumnSources[lnCnt] loGridRef.Columns(lnCnt).setall('ControlSource',tcNewRecordSource+'.'+laColumnSources[lnCnt]) ENDIF NEXTUse this one to change columns/controls name like underlying RecordSource fields
procedure change_grd_columns LOCAL lnSelObjectCount, loGridRef, lnCnt LOCAL ARRAY laSelectedObject[1], laColumnSources[1] lnSelObjectCount = ASELOBJ(laSelectedObject) IF lnSelObjectCount = 0 WAIT WINDOW 'Select a grid in Form Designer first' nowait RETURN ENDIF loGridRef = laSelectedObject[1] IF loGridRef.BaseClass # 'Grid' WAIT WINDOW 'One Grid object must be selected' nowait RETURN ENDIF FOR lnCnt = 1 TO loGridRef.ColumnCount IF NOT EMPTY(loGridRef.Columns(lnCnt).ControlSource) loGridRef.Columns(lnCnt).Name = 'col'+PROPER(JUSTEXT(loGridRef.Columns(lnCnt).ControlSource)) oControl = loGridRef.Columns(lnCnt).Controls(2) cPrefix = ICASE( oControl.BaseClass = 'Textbox','txt' ; , oControl.BaseClass = 'Combobox','cb' ; , oControl.BaseClass = 'Checkbox','chk' ; , oControl.BaseClass = 'Commandbutton', 'cmd' ; , oControl.BaseClass = 'Container', 'cnt' ; , oControl.BaseClass = 'Control', 'cnt' ; ,'obj') loGridRef.Columns(lnCnt).Controls(1).Name = 'hd' + PROPER(JUSTEXT(loGridRef.Columns(lnCnt).ControlSource)) loGridRef.Columns(lnCnt).Controls(2).Name = cPrefix+PROPER(JUSTEXT(loGridRef.Columns(lnCnt).ControlSource)) ENDIF NEXT