Gracias a todos por vuestras respuestas, al final he optado por colocar un nuevo panel, dentro del que ya tenía y que contiene solo los campos que no se pueden modificar.
En el evento OnStateChange del DataSource en el formulario, verifico si el DataSource.State es dsEdit, si es así y el segundo panel esta con el foco (Panel2.Focused), lo que hago es cancelar la edición (DataSource.Dataset.Cancel), lo que restaura el valor modificado de los campos no modificables y pongo la disponibilidad del panel a false (Panel2.Enabled := false), lo que hace que no se pueda acceder y pasa al foco al siguiente campo del Panel padre.
Gracias de nuevo a todos. Un saludo.
|