Here's a technique I've used with VFP:
Use a VFP "lock table" which has entries for rows that are locked, who locked them and when, and any other information you care to put in there. Since Strataframe can open VFP databases along with any other databases, this can work in many scenarious.
Here's the simplistic pseudo code:
1. Ready to edit a row, check VFP lock table to see if that row is in there AND if it is locked by someone else.
2. If it is there and locked, do not allow concurrent editing, notify user trying to lock it
3. If it is there and not locked, lock it, write pertinent information into the lock record and open row for editing
4. If it is not there, locate another lock table record that is not locked and recycle it and go to 3. If there is no recycleable (non-locked) record available, create a new one and go to 3.
The beauty of this approach is that it is dynamic -- if your app crashes or "forgets" to UNLOCK the locktable entry when done with it, VFP releases the lock as soon as the application exits, one way or another. This approach avoids the cleanup mess (!), but can still accidentally leave a record locked for the duration of the session if you are don't pay attention to the unlock action in the save/discard row procedures.
Pertti