Campos sólo lectura dependiendo del valor de otro campo

Campos sólo lectura dependiendo del valor de otro campo

Buenas,

Necesitamos que cuando se guarde un registro de un módulo personalizado, dependiendo del valor de otro campo, algunos campos, o todos, queden de sólo lectura. O lo que es lo mismo que no se pueda editar el registro.
De momento lo tenemos solventado duplicando las secciones del módulo. Una sección tendría los campos modificables y la otra, con los mismos campos, pero sólo lectura. Cuando el valor del campo de referencia tenga un determinado valor, mostrará la sección correspondiente y ocultará la otra.

Cuando guardo el registro, se replican los valores correspondientes en los campos. Pero está solución no me convence, ya que todos los campos duplicados se muestran en la búsqueda del módulo, por lo tanto se le muestra al usuario para buscar por Nombre, Nombre1, Apellidos, Apellidos1, Dirección, Dirección1, etc. 

¿Cómo podría poner de sólo lectura los campos, o que no se pudiera editar el registro, según el valor de otro campo? o en su defecto ¿Se podría ocultar de la búsqueda los campos que no quisiera que aparecieran?

Gracias