sábado, 13 de febrero de 2016

Declaración del procedimiento no coincide con la descripción del evento

Errores de DLL con Visual Basic

Acabo de terminar mi flamante proyecto de Visual Basic, todo es perfecto, todo está depurado. Ejecuto mi programa en modo depuración con Visual Studio y funciona correctamente pero en otro equipo donde también tengo instalado Visual Studio lo ejecuto y obtengo un error bastante desconcertante:
Que dice: La declaración del procedimiento no coincide con la descripción del evento o el procedimiento que tiene el mismo nombre.

La declaración del procedimiento no coincide con la descripción del evento o el procedimiento que tiene el mismo nombre


Si vamos a la ayuda de MSN  nos dice lo más lógico, que es lo que dice el mensaje, pero ya lo hemos revisado y está todo correcto, así que nos sirve de poco.


La solución está un poco oculta. Pero tenemos una pista. Funciona en un equipo pero en otro no (ambos equipos son de desarrollo).  Tenemos que rastrear nuestros objetos del formulario para detectar si hay algo inconsistente.  Al visualizar el formulario en el equipo que no funciona veo unos “huecos” sospechosos que en el equipo que funciona aparecen como botones. 
Anotando los nombres de los objetos de estos botones desaparecidos. Estos aparecen en la ventana de propiedades (pulsando F4).

propiedades de un objeto desaparecido

Como he dicho, al abrir el mismo proyecto en otro equipo donde si funciona visualizo bien los botones. Veo que no son del tipo Button sino del tipo SSRibbon. Esto me pone en otra pista.

propiedades de un objeto en Visual Basic


Aquí lo tenemos localizado en la pestaña de herramientas.

ssRibbon en la barra de herramientas de Visual Basic


Para solucionar el problema tenemos que ir a Proyecto -> Componentes del menú del Visual Studio.

Componentes de un proyecto Visual Basic

Al abrir la opción Componentes, nos muestra un cuadro de diálogo con los componentes agregados.

Ver la ruta de un OCX en los componentes del proyecto visual basic

Para buscar el OCX correspondiente a estos componentes tenemos que colocarnos sobre Microsoft Windows Common Controls 6.0 (SP6) con lo que en la parte de abajo veremos la ruta donde está alojado el OCX, en este caso en C: \Windows\SysWow64\MSCOMCTL.OCX
Si nos posicionamos sobre él y lo marcamos con el check, nos da este error. 

la biblioteca de objetos no está registrada

Ahora ya sabemos que sucede, el OCX anteriormente indicado no está registrado en nuestro equipo. Tenemos que registrarlo. Para ello ponemos cmd en la barra de tareas y con el botón derecho del ratón especificamos ejecutar como administrador:
ejecutar como administrador


Si tenemos windows 8  es algo diferente.

ejecutar como administrador Windows8


Una vez abierta la ventana de comandos, registramos el ocx indicado con regsvr32 MSCOMCTL.ocx lo que nos muestra el mensaje de que se ha registrado correcamente.

registrar con regsvr32


Si ahora regresamos al proyecto ya podemos ver los botones correctamente y no tendremos errores al compilarlo.



1 comentario: