miércoles, 12 de mayo de 2010

Ejemplo de Frame

Aplicar estilo XP con un archivo Manifest

Este ejemplo muesta como aplicar los estilos Xp a nuestros programas sin utilizar controles Ocx, simplemente con un archivo de tipo Xml asociado al ejecutable.
Formulario con los controles estilo xp usando un Manifest




Ya es muy conocido, pero si por no lo sabías podés bajarte un ejemplo de como hacerlo:
Primero lo que debes hacer es crear el archivo Manifest. Este archivo es un Xml, osea que lo podés crear con el Bloc de notas pegando el siguiente código:




Luego debes guardar este archivo con el nombre de la siguiente forma: por ejemplo si tu proyecto ejecutable se llama Proyecto1.exe, el archivo Manifest se debe llamar Proyecto1.exe.Manifest, si el ejecutable se llama Pepe.exe ( pepe.exe.Manifest )
Importante: El archivo Manifest debe estar en el directorio del programa ( del exe)
Otra cosa importante es que el estilo Xp en los controles de tu programa, solo se podrán apreciar cuando lo pruebes desde el tu programa una ves compilado, es decir, que si ejecutas desde el IDE del visual basic, no verás nada.
Por último, es que se debe hacer una llamada a una función Api de windows llamada InitCommonControls. Esta Api debe ser ejecutada en el módulo que arranca el programa, por ejemplo si tu aplicación arranca desde un Form1, debes llamarla desde el evento Initialize del mismo, por ej:


Private Sub Form_Initialize()
InitCommonControls
End Sub

Si tu programa se inicia desde un subMain sería de la siguiente forma:





Sub Main ()
InitCommonControls
End Sub

La declaración del Api InitCommonControls es la siguiente:




Private Declare Sub InitCommonControls Lib
"comctl32" ()

Obviamente windows deberá tener activada desde la ventana de Propiedades de pantalla la opción " Estilo de windows XP " activada . para que se pueda visualizar el estilo

Importante: cuando los controles se encuentran dentro de un control Frame, algunos de ellos se visualizan con un contorno negro. Para solucionar este problema, debes colocar los controles dentro de un control Picturebox
Otra cosa , para aplicar el estilo xp a los Windows CommonControls , progressbar, ListView etc.., debes usar el Ocx microsoft Windows Common controls versión 5.0 en ves de la versión 6.0

Descargar ejemplo

2 - Solucionar error utilizando algunas funciones del
Api

Según pruebas hechas, en algunos casos cuando la aplicación que utilizará un archivo .Manifest para tomar los temas de xp, esta contiene un control ocx en el proyecto o un Usercontrol Control privado, al descargar la aplicación windows detecta un error desconocido, visualizando el conocido diálogo de si desea "Enviar informe de errores a Microsoft"




Si querés descargar un proyecto de prueba para ver este error, pulsá en este enlace .
Para reproducir el error ejecutar el proyecto1.exe, y verificar que la opción de windows "Habilitar informe de errores esté activada" ( como muestra este gráfico)





En este ejemplo aportado por Cobein , podés descargar el mismo proyecto anterior que reproducia el fallo, pero en este caso utilizando la función del api SetErrorMode para indicarle a windows que en caso de error dentro de la aplicación no visualice el diálogo.

Descargar proyecto manifest con SeterrorMode

Otro método que parece funcionar muy bien para evitar este problema con los manifest , es un ejemplo aportado por xKiz, que utiliza la función del Api LoadLibrary y FreeLibrary. La primera función se ejecuta al comienzo de la aplicación ,y FreeLibrary al descargarla

Descargar proyecto

3 - Truco para simular CommandButtons estilos gráficos con Xp

Ejemplo realizado por Leandro Ascierto

Nota En este enlace hay un ejemplo mejorado para implementar esto mismo mediante el api de windows
Este código para descargar muestra como usar los commandbutton con gráficos, cuando estos tienen el tema de xp presente






Al usercontrol se le debe establecer la imagen en la propiedad picture, y tambie´n indicar el color e la máscara del gráfico a usar. Si no tiene máscara, por ejemplo un gif o ícono transparente, se debe colocarle como valor de máscara el siguiente valor de color &H8000000F&
Que seria el siguiente valor desde la paleta de colores de vb



Luego se debe colocar encima del botón, si este queda debajo y no se ve, enviarlo hacia el fondo con la opción "Enviar al fondo" desde el menú contextual



Descargar ejemplo






No hay comentarios:

Publicar un comentario