Error 2165 No se puede ocultar un control que tiene el enfoque

Tengo un formulario que contiene otros dos subformularios dentro de el. En el formulario principal se muestran los datos generales de álbumes de música, y en los otros dos se detallan las canciones del album y las imágenes relacionadas con el mismo.

He puesto un botón para generar una lista de reproducción con las canciones seleccionadas. Cuando pincho este botón hago visible otro botón (GrabaLis) que aparece en cada registro de las canciones del album y pregunto por el nombre que le quiero poner a la lista. Al pinchar en GrabaLis cojo el nombre del fichero .mp3 correspondiente y lo graba en la lista de reproducción.

Para cerrar la lista de reproducción, he puesto otro botón (Terminar) y, quiero que desaparezca el botón LR de cada canción. Lo que hago es poner a False la función visible del control

Private Sub FinLis_Click()

Z = MsgBox("Quieres finalizar la lista de Reproduccion ?", vbYesNo)
If Z = vbYes Then
Me.Titulo_Album.SetFocus
Me![Sub_Detalle_Canciones]!GrabaLis.Visible = False
Me.Refresh
LisRep = 0
End If

End Sub

El problema es que, al llegar a este punto, me aparece el error 2165, y no soy capaz de salir de ahí. Como veis, he intentado cambiar el enfoque a otro control (Titulo_Album), pero sigue saliendo el error.

Por favor, me podéis como solucionar este error.

2 Respuestas

Respuesta
1

El objeto a ocultar ¿esta en un objeto subformulario?.

Un truco que suele resolver el problema consiste en crear un objeto con mínimas dimensiones (es suficiente un pixel e incluso se le puede aplicar transparencia) al que enviar el foco y así liberar al activo (no garantiza resolver el actual problema, sin cadáver no se puede hacer autopsia)

Muchas gracias Enrique.

El control a ocultar esta en un subformulario, si.

Intento enviar el foco a otro control del formulario principal, que es más o menos lo que me recomiendas, pero no funciona. También he probado creando otro control y haciéndolo visible antes de esta instrucción, pero tampoco...

EL objeto a ocultar esta en un subformulario, dado que el error es que no puede ocultarlo porque es 'el objeto activo' lo único que solucionara el problema es enviar el foco a otro objeto que no sea el actual y activo.

No creo que funcione correctamente enviar el foco a un objeto del formulario principal sin enviarlo antes al propio formulario.

El formulario del que depende siempre será para el formulario dependiente su 'padre' y se deberá hacer la transferencia en dos pasos.

Me. Parent. SetFocus
Me. Parent.[objeto del principal]. SetFocus

Comenta si se soluciono el problema por si fuera necesario buscar otras alternativas y si acaso comenta si quien recibe el foco tiene algún código asociado por si pudiera interferir.

Respuesta
1

Pruebe adicionando

On Error Resume Next

Observe a ver  si se desactiva el control ¿y que pasa?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas