FOR EACH loObject IN loLastBlock.Objects FOXOBJECT IF PEMSTATUS(loObject,"SetFocus",5) = .T. loObject.SetFocus() loObject.Refresh() ENDIF ENDFORThat actually worked. It seems as though VFP is "lazy" at refreshing objects that are off screen even if in a scrollable window.
* X7RedrawWindow.PRG * Wrapper for the RedrawWindow() API function, this * routine IMMEDIATELY repaints the passed form * or _Screen -- at times, VFP can take its good * sweet time refreshing/repainting a form * * Copyright (c) 2004-2005 Visionpace All Rights Reserved * 17501 East 40 Hwy., Suite 218 * Independence, MO 64055 * 816-350-7900 * http://www.visionpace.com * http://vmpdiscussion.visionpace.com * Author: Drew Speedie * Special thanks to Peter Crabtree * * lParameters * toForm (R) Object reference to a specific form or _Screen, * to be redrawn/repainted * LPARAMETERS toForm IF PCOUNT() = 0 ; OR NOT VARTYPE(m.toForm) = "O" ; OR NOT PEMSTATUS(m.toForm,"hWnd",5) RETURN .f. ENDIF LOCAL lnHWnd, loException DO CASE CASE (m.toForm = _VFP OR m.toForm = _Screen) ; AND NOT _Screen.Visible RETURN .f. CASE m.toForm = _VFP lnHWnd = _Screen.HWnd CASE m.toForm = _Screen lnHWnd = _Screen.HWnd CASE NOT UPPER(toForm.BaseClass) == "FORM" * probably ActiveX control, which has an hWnd RETURN .f. OTHERWISE lnHWnd = toForm.hWnd ENDCASE * * RedrawWindow() flags * #DEFINE RDW_INVALIDATE 0x0001 #DEFINE RDW_INTERNALPAINT 0x0002 #DEFINE RDW_ERASE 0x0004 #DEFINE RDW_VALIDATE 0x0008 #DEFINE RDW_NOINTERNALPAINT 0x0010 #DEFINE RDW_NOERASE 0x0020 #DEFINE RDW_NOCHILDREN 0x0040 #DEFINE RDW_ALLCHILDREN 0x0080 #DEFINE RDW_UPDATENOW 0x0100 #DEFINE RDW_ERASENOW 0x0200 #DEFINE RDW_FRAME 0x0400 #DEFINE RDW_NOFRAME 0x0800 IF NOT X7ISAPIF("RedrawWindow") *!* BOOL RedrawWindow( *!* HWND hWnd, // handle to window *!* CONST RECT *lprcUpdate, // update rectangle *!* HRGN hrgnUpdate, // handle to update region *!* UINT flags // array of redraw flags *!* ) TRY DECLARE INTEGER RedrawWindow IN WIN32API ; INTEGER hWnd, ; INTEGER nUpdateRect, ; INTEGER nUpdateRegion, ; INTEGER nFlags CATCH TO loException ENDTRY ENDIF IF NOT VARTYPE(m.loException) = "O" TRY RedrawWindow(m.lnHWnd, 0, 0, RDW_INTERNALPAINT + RDW_UPDATENOW) CATCH TO loException ENDTRY ENDIF