* Data in column shifts when sparse changed but highlight effect is correct IF TYPE('thisform.pgfprofile.pagpolicy.policygrid') = "O" .AND. !ISNULL(THISFORM.pgfprofile.pagpolicy.policygrid) llsetlockscreen = .F. IF !THISFORM.LOCKSCREEN llsetlockscreen = .T. THISFORM.LOCKSCREEN = .T. ENDIF WITH THISFORM.pgfprofile.pagpolicy.policygrid IF !EMPTY(.RECORDSOURCE) FOR lnColumn = 1 TO .COLUMNCOUNT IF .COLUMNS(lnColumn).CONTROLSOURCE == "PO_STATUS" ; .OR. .COLUMNS(lnColumn).CONTROLSOURCE == "PO_TYPE" .COLUMNS(lnColumn).SPARSE = .F. PRIVATE loCurrentControl STORE NULL TO loCurrentControl FOR EACH loControl IN .COLUMNS(lnColumn).CONTROLS IF loControl.NAME = loControl.PARENT.CURRENTCONTROL loCurrentControl = loControl ENDIF ENDFOR IF TYPE("loCurrentControl") = "O" AND NOT ISNULL(loCurrentControl) IF LOWER(loCurrentControl.BASECLASS) = "textbox" .OR. LOWER(loCurrentControl.BASECLASS) = "editbox" IF PEMSTATUS(loCurrentControl, "BackColor", 5 ) && Some controls in the column (i.e. Image) may not have .BackColor Property IF !EMPTY(.COLUMNS(lnColumn).DYNAMICBACKCOLOR) loCurrentControl.BACKCOLOR = EVALUATE(.COLUMNS(lnColumn).DYNAMICBACKCOLOR) IF loCurrentControl.BACKCOLOR = THISFORM.gridbackcolor loCurrentControl.BACKCOLOR = THISFORM.HIGHLIGHTBACKCOLOR .COLUMNS(lnColumn).SPARSE = .T. ENDIF ELSE loCurrentControl.BACKCOLOR = THISFORM.HIGHLIGHTBACKCOLOR .COLUMNS(lnColumn).SPARSE = .T. ENDIF IF loCurrentControl.BACKCOLOR <> THISFORM.gridbackcolor llsethighlight = .T. ELSE loCurrentControl.BACKCOLOR = THISFORM.HIGHLIGHTBACKCOLOR .COLUMNS(lnColumn).SPARSE = .T. ENDIF ENDIF ENDIF ENDIF ENDIF ENDFOR llsethighlight = .T. IF llsethighlight .HIGHLIGHTSTYLE = 0 ELSE .HIGHLIGHTSTYLE = THISFORM.HIGHLIGHTSTYLE ENDIF ENDIF && not empty recordsource ENDWITH IF llsetlockscreen = .T. THISFORM.LOCKSCREEN = .F. ENDIF ENDIF RETURNIn this code, the data does not shift left/right because I am not toggling sparse on/off but when the column with special backcolor switches to no special backcolor (dependent on the value in the field in the row) then the cell stays the default color of the grid backcolor and doesn't emulate the highlight as it should so it in essence stays white.
* cells with no custom dynamic backcolor stay white but should emulate highlight blue IF TYPE('thisform.pgfprofile.pagpolicy.policygrid') = "O" .AND. !ISNULL(THISFORM.pgfprofile.pagpolicy.policygrid) llsetlockscreen = .F. IF !THISFORM.LOCKSCREEN llsetlockscreen = .T. THISFORM.LOCKSCREEN = .T. ENDIF WITH THISFORM.pgfprofile.pagpolicy.policygrid IF !EMPTY(.RECORDSOURCE) FOR lnColumn = 1 TO .COLUMNCOUNT IF .COLUMNS(lnColumn).CONTROLSOURCE == "PO_STATUS" ; .OR. .COLUMNS(lnColumn).CONTROLSOURCE == "PO_TYPE" IF TYPE('EVALUATE(.COLUMNS(lnColumn).CONTROLSOURCE)') = "U" LOOP ENDIF .COLUMNS(lnColumn).SPARSE = .F. PRIVATE loCurrentControl STORE NULL TO loCurrentControl FOR EACH loControl IN .COLUMNS(lnColumn).CONTROLS IF loControl.NAME = loControl.PARENT.CURRENTCONTROL loCurrentControl = loControl ENDIF ENDFOR IF TYPE("loCurrentControl") = "O" AND NOT ISNULL(loCurrentControl) IF LOWER(loCurrentControl.BASECLASS) = "textbox" .OR. LOWER(loCurrentControl.BASECLASS) = "editbox" IF PEMSTATUS(loCurrentControl, "BackColor", 5 ) && Some controls in the column (i.e. Image) may not have .BackColor Property IF !EMPTY(.COLUMNS(lnColumn).DYNAMICBACKCOLOR) newcolor = EVALUATE(.COLUMNS(lnColumn).DYNAMICBACKCOLOR) IF newcolor <> THISFORM.gridbackcolor loCurrentControl.BACKCOLOR = newcolor ELSE loCurrentControl.BACKCOLOR = THISFORM.HIGHLIGHTBACKCOLOR ENDIF ELSE loCurrentControl.BACKCOLOR = THISFORM.HIGHLIGHTBACKCOLOR ENDIF ENDIF ENDIF ENDIF ENDIF ENDFOR llsethighlight = .T. IF llsethighlight .HIGHLIGHTSTYLE = 0 ELSE .HIGHLIGHTSTYLE = THISFORM.HIGHLIGHTSTYLE ENDIF ENDIF && not empty recordsource ENDWITH IF llsetlockscreen = .T. THISFORM.LOCKSCREEN = .F. ENDIF ENDIF RETURN