>ThisForm.grdDetail.SaveSource() > >ThisForm.oBizObj.GetDetail() > >ThisForm.grdDetail.RestoreSource() >>
************************************************** *-- Class: gridprotector (c:\cdbk30\common30\libs\cutils.vcx) *-- ParentClass: ccustom (c:\cdbk30\common30\libs\ccontrls.vcx) *-- BaseClass: custom *-- Time Stamp: 01/17/05 03:33:11 PM * #INCLUDE "c:\cdbk30\common30\include\framincl.h" * DEFINE CLASS gridprotector AS ccustom lrestore = .T. Name = "gridprotector" ogrid = .F. calias = .F. cdummyalias = .F. DIMENSION acontrolsources[1,1] PROCEDURE setdummyalias THIS.oGrid.RecordSource = 0 ENDPROC PROCEDURE setgrid LPARAMETERS toGrid THIS.oGrid = toGrid THIS.cAlias = toGrid.RecordSource ENDPROC PROCEDURE restorealias THIS.oGrid.RecordSource = THIS.cAlias THIS.oGrid.Refresh ENDPROC PROCEDURE setcontrolsources WITH THIS.oGrid DIMENSION THIS.aControlSources[ .COLUMNCOUNT] FOR lnColumn=1 TO .COLUMNCOUNT THIS.aControlSources[lnColumn]=.COLUMNS(lnColumn).CONTROLSOURCE .COLUMNS(lnColumn).CONTROLSOURCE=[] ENDFOR ENDWITH ENDPROC PROCEDURE restorecontrolsources WITH THIS.oGrid FOR lnColumn=1 TO .COLUMNCOUNT .COLUMNS(lnColumn).CONTROLSOURCE=THIS.aControlSources[lnColumn] ENDFOR ENDWITH ENDPROC PROCEDURE restore THIS.RestoreAlias() THIS.RestoreControlSources() THIS.RestoreScrollbar() ENDPROC PROCEDURE set LPARAMETERS toGrid THIS.setGrid( toGrid) THIS.setControlSources() THIS.setDummyAlias() ENDPROC PROCEDURE restorescrollbar WITH THIS.oGrid .doScroll(2) .doScroll(2) .doScroll(2) ENDWITH ENDPROC PROCEDURE Destroy WITH THIS IF TYPE("THIS.oGrid")='O' IF .lRestore .Restore() ENDIF ENDIF .oGrid = NULL ENDWITH RETURN DODEFAULT() ENDPROC PROCEDURE Init LPARAMETERS toGrid IF PCOUNT()=1 THIS.set( toGrid ) ENDIF ENDPROC ENDDEFINE * *-- EndDefine: gridprotector **************************************************You can call it this way, say before requerying:
LOCAL loGridProtector loGridProtector = CREATEOBJECT('GridProtector') this.protectGridWith( loGridProtector )When working with remote data you reconstruct a cursor at every requery. The grid looses its controlsource and by there its properties...
PresentationChildObj.Requery() LOCAL loGridProtector, loLockScreen loLockScreen = CREATEOBJECT("Elockscreen") loGridProtector = CREATEOBJECT('GridProtector', THIS.cGrid1) lnRetval = DODEFAULT() THIS.cGrid1.Column10.Bound = .t. THIS.cGrid1.Column9.Bound = .F. THIS.cGrid1.Column9.ControlSource = 'v_Presentation.NU_cCompteComptable' THIS.cGrid1.Column9.cbocompteforpresentation1.ControlSource = 'v_Presentation.FK_iCompteId' THIS.cGrid1.Column11.Bound = .F. THIS.cGrid1.Column11.ControlSource = 'v_Presentation.NU_cQualiteInterne' THIS.cGrid1.Column11.cboqualiteinterne1.ControlSource = 'v_Presentation.FK_iQualiteInterneId' RETURN lnRetvalThe credits go to Claudio Campos.