Hola Ana María:
Espero haber comprendido sus preguntas y con esto poder responder. Si no, no dude en aclarar, si estoy confundido.
(1) Sobre el formulario de uno a varios. Dice que al borrar un registro en la tabla secundaria también se borra en la primaria.
Por la frase que usted usó "herramientas generadoras", es posible pensar que el formulario lo generó usando un asistente, logrando con eso que sea VisualFox que haya colocado automáticamente la programación. Sin ambargo, sería más manipulable si el forulario fuera elaborado "desde cero".
De manera que si tiene acceso al código donde se borra el registro, verifique que sólo se haga un SELECT hacia la tabla secundaria, antes de ejecutar el DELETE que borra el registro. Eso debido a que es posible que también se esté haciendo un DELETE en la tabla primaria, lo cual borra ambos registros y no es lo que usted desea.
OTRA SOLUCIÓN:
a) Vea las propiedades de la cuadrícula de la tabla secundaria
b) Ubíquese sobre SuGridSecundario.Column1.Text1, y prográmele el método "Keypress" para que el registro se borre al presionar la tecla "Suprimir", así:
IF NKEYCODE=7
DELETE IN SuTablaSecundaria
SKIP-1 IN SuTablaSecundaria
THISFORM.REFRESH
ENDI
(2) En el caso en que el formulario pierde el enfoque al cerrar un segundo formulario llamado por el primero, vea que no haya más código ejecutándose después del DO FORM Form2, pues es posible que "parezca" bloqueado y en realidad aún esté ejecutando algo. De otra forma, verifique que el Activate() del primer formulario no tenga programado algo que le lleve tiempo realizar.