* Form.init - Has custom prop editmode this.comment = this.caption && Save caption * Edit.click if !thisform.editmode if rlock() && Try explicit lock && Because pessimistic locking only does it if editing starts && User might be confused if s/he could get into editmode && Head turns to phone then back, presses a key to start edit && But another speedy has already locked implicitly thisform.editmode = .t. thisform.setall("Enabled",.t.) else wait window nowait "Record in use..." endif else tableupdate() unlock thisform.editmode = .f. endif thisform.setall("Enabled",thisform.editmode,"TextBox") thisform.setall("Enabled",.t.,"Commandbutton") thisform.Command3.caption = iif(thisform.editmode,"Revert","Add") this.caption = iif(thisform.editmode,"Save","Edit") * Add.click - add code completely dropped and simplified if thisform.editmode tablerevert() unlock endif thisform.editmode = !thisform.editmode thisform.setall("Enabled",thisform.editmode,"TextBox") thisform.setall("Enabled",.t.,"Commandbutton") this.caption = iif(thisform.editmode,"Revert","Add") thisform.Command1.caption = iif(thisform.editmode,"Save","Edit") * Timer.timer if !thisform.editmode thisform.refresh * Notification part if !rlock() thisform.caption = thisform.comment + "..Someone is editing.."+time() else thisform.caption = thisform.comment + "..Record available.."+time() endif unlock endifUser would be able to navigate because you would use form.caption, status bar, wait window etc but not a messagebox. And of course you should support timer messaging with other code in navigation (ie: "someone is editing" displays, user moves on to another rec, might wrongly continue to see message "someone is editing" till timer fires again).