I see it different, as I take the first request more serious than the last.
You say you only want to refresh the form, when all control lose focus, eg when you leave the form. The easy answer for that is form.deactivate(), but I don't know if you rather mean another situation, if focus is on none of the bound controls, but the user finished editing and tabs to eg save/close or navigation buttons. And also be warned, that clicking on a toolbar in fact does not cause form.deactivate(), so eg a save button in a toolbar doing a tableupdate(), saving the buffer, can cause the last change in the current control to not be saved. But that's not a refresh problem of controls, that's a refresh problem of the buffer, which does not contain the current control's value, until it passes it's value on via valid event. The solution in a toolbar save button is _screen.activecontrol.setfocus(), which causes a whole cycle of valid, lostfocus, when, gotfocus on the current control and thereby saves the current value to the buffer. That's simplificated, because in case of a grid, that's insufficient.
>I know I can use each control's lost focus event but there must be a quicker way.
Again, as I take your first request more serious, this is not what you want, this would refresh the form after you tab from one control to the next. This is not needed at all, because your form is current in most cases, except you allow editing of the same record from many users at the same time. But then you would need automatic refresh, see SET REFRFESH, then.
For network it's best to not autorefresh, the need might be, if your form shows eg the seats of a cinema or tables in a restaurant and your pos system is used in 2 or three stations at the same time.
Bye, Olaf.