Ago 032011
 

Control de usuario para crear una barra de tareas dentro de un formulario MDI, actúa prácticamente igual que la barra de tareas del explorador de Windows, la idea es darle al usuario una mejor forma de moverse dentro del formulario MDI, sobretodo cuando hay muchas ventanas abiertas. su uso es muy sencillo solo vasta con agregar un solo control el MDI y este se encarga de hacer todo el trabajo.
En el ejemplo de descarga como complemento  agregue dos módulos, uno de ellos es la clase ClsButtonNC para crear un efecto muy parecido al botón inicio de Windows, y el otro modulo es MdiFullScreen (que se encuentra en la sección de Tips) este ultimo pone en pantalla completa al formulario MDI cuando esta maximizado.
El control ucMDItaskBar internamente crea un ToolBar el cual cuenta con una propiedad para ponerle un Skin, también tiene soporte para caption Unicode e iconos de 32 bits si es que algunos de los formularios dentro del MDI tiene estos elementos.
Tal como como Windows si no se quiere mostrar el formulario en la barra, solo vasta con que pongan al formulario hijo en tiempo de edición ShowInTaskBar = False.
El ucMDItaskBar utiliza Subclasificación y es SafeMode (Modo seguro) , pero tengan en cuenta que la clase ClsButtonNC no, asi que No presionar el Stop del IDE de VB6.

Detalles de sus propiedades y funciones:

  • Initialize: Esta función es encaso que si dentro del evento Load del formulario MDI se carga algún formulario es necesaria llamarla para inicializar el control antes que el formulario, de lo contrario lo este lo hará automáticamente, su único parámetro es el hwnd del formulario MDI.
  • BackColor: En caso que no se utilice un Skin este utiliza el color del fondo asignado.
  • ButtonsWidth: Devuelve o establece el ancho de los botones de la barra.
  • ButtonsHeight: Devuelve o establece el alto de los botones de la barra.
  • IconSize: Devuelve o establece el tamaño de icono que queramos utilizar.
  • SetIndent: Devuelve o establece la ubicación izquierda donde comienzan a mostrarse los botones, esto es por si queremos utilizar un botón Inicio, tener en cuenta que agregar un control sobre la barra no dará buenos resultados, lo aconsejable es utilizar la clase ClsButtonNC, o utilizar un PictureBox como contenedor para poner el botón y al lado la barra.
  • Align: Devuelve o establece la ubicación por donde se moverá la barra.(si bien soporta todas las posiciones lo aconsejable es vbAlignBottom)
  • SkinPicture: Devuelve o establece una imagen que se utilizara como decoración de la barra (el formato utilizado pueden verlo dentro del ejemplo).
  • MoveMode: Indica a la clase en qué sentido debe mover el botón cuando la ventana padre se mueva o cambie de tamaño.
  • Enabled: Devuelve o establece si el control está o no habilitado
  • Font: Devuelve o establece la Fuente para la barra.
  • hwndToolbar: Devuelve  el Handle del ToolbarWindow32 de la barra
  • hwndUserControl: Devuelve  el Handle del control de usuario
  • hwndMDIClient: Devuelve el Handle MDIClient del formulario MDI

ucMDItaskbar1
ucMDItaskbar1

Jul 292011
 

Módulo clase para agregar un botón en las partes no cliente del formulario (bordes), actualmente con la llegada de Windows Seven son varias las aplicaciones que utilizan este sistema. Bien, esta clase sólo intenta crear un efecto parecido, y digo intenta ya que es otro método el que utilizan, lo que hace es crear una ventana en la que aplica el API UpdateLayeredWindow, la cual transforma un mapa de bits en una máscara para la ventana, la cual tiene soporte Alpha. Las aplicaciones por ejemplo Firefox, donde hoy en día se puede ver un botón naranja sobre el área no cliente utilizan otro método (DwmExtendFrameIntoClientArea, DwmEnableBlurBehindWindow) que es el de repintar el marco de la ventana empleando la nueva Guid de Windows Seven, esta clase también se puede utilizar bajo Windows XP, para ser más exacto esta clase hace lo mismo que se vé en el Botón Inicio de Windows 7.

Detalles de sus propiedades y funciones:

  • CreateButton: Inicializa el botón, el primer parámetro debe ser el hwnd de la ventana padre, el segundo parámetro es opcional para el ToolTipText.
  • LoadImageFromFile: Lee una imagen desde archivo.
  • LoadImageFromRes: Lee una imagen desde el archivo de recurso de la aplicación.
  • LoadImageFromStream: Lee una imagen desde un array de bits.
  • Left: Devuelve o establece la ubicación izquierda del botón con respecto a su ventana padre.
  • Top: Devuelve o establece la ubicación superior del botón con respecto a su ventana padre.
  • Right: Devuelve o establece la ubicación derecha del botón con respecto a su ventana padre.
  • Bottom: Devuelve o establece la ubicación inferior del botón con respecto a su ventana padre.
  • MoveMode: Indica a la clase en qué sentido debe mover el botón cuando la ventana padre se mueva o cambie de tamaño.
  • Enabled: Devuelve o establece si el botón está o no habilitado
  • Alpha: Transparencia del botón rango de 0 a 255.
  • ToolTipText: Devuelve o establece el texto mostrado cuando el mouse se sitúa sobre el control.
  • ImageWidth: Devuelve  el ancho de la imagen cargada.
  • ImageHeight: Devuelve el alto de la imagen cargada.
  • hwnd: Devuelve el Handle del botón.
  • ButtonWidth: Devuelve el ancho del botón.
  • ButtonHeight: Devuelve el alto del botón.

Vale aclarar que el botón no tiene Caption ya que es una tira de imágenes (la imagen debe ser siempre una tira vertical) -ver el formato en el zip del ejemplo-, el orden utilizado de los estados es Normal, Hot, Presionado y Deshabilitado. El formato de la imagen es conveniente que sea .PNG para la transparencia.

Nota: La clase subclasifica las ventanas y no utilicé el método modo seguro (SafeMode) sólo para que no sea muy grande el módulo, así que ojo No presionar el Stop del IDE de VB6. Ante cualquier error seguramente se les cerrará todo el proyecto y en el peor de los casos se les reiniciara Windows. Es recomendable comentar la línea de inicialización del botón (CreateButton) hasta que se compile el proyecto.

Boton No Cliente

En el ejemplo hice una validación que si la versión de Windows es Vista o Seven que quite el icono y el Caption de la ventana utilizando el api SetWindowThemeAttribute, ahora si es Windows XP van a ver que no queda muy bien ya que debajo del botón se vé el icono y el caption, quizás estés pensando en poner un icono transparente y remover el Caption pero esto hará que no se vea en la barra de tareas.

Boton No Cliente

Dic 032009
 

Este es un Gadget para Taringa.net programado en Visual Basic 6 muestra todos los últimos post realizados. También ordena por categorías, si dan un clic en la lista mostrara una ventanita con la información del post, y con doble clic abre el navegador en dicho post.
También sirve para Poringa.net, tiene algunas opciones como elegir el tiempo de actualizado, poner un icono en la barra de tareas, controlar la opacidad de la ventana, contraerla a un mínimo o expandirla. Iniciar con Windows y otras más.

CapturaTaringa.png
CapturaPoringa.png
TaringaOpciones.png
MenuPoringa.png

Descargar .zip con el ejecutable.

Para programadores en Visual Basic 6 el código de fuente.

Nov 172009
 

Control de Usuario de que utiliza la clase SysMonthCal32 para crear un Calendario tal como que utiliza el Microsoft Windows Common Controls OCX de la versión 26.0, lo bueno de utilizar este UserControl es no tener que depender del OCX que muchas veces nos encontramos con que queremos utilizar este control y tenemos que recurrir si o si al OCX por sólo un control. Además este trae como ventaja que sí se le pueden aplicar los estilos visuales de Windows ya que con el OCX siempre mostraba el aspecto de Windows 98.
Las propiedades son prácticamente iguales al del M$ Common Controls excepto la de poder poner los días en negritas, no pude encontrar la forma de que funcione, también me trajo algunos problemas de compatibilidad en XP y en Vista. ya que al parecer la clase de por si tiene sus propias fallas.

SysMonthCal32

Nov 082009
 

Este es un Control de Usuario que utiliza la clase SysDateDimePick32 para crear un DTPicker tal como es el Microsoft Windows Common Controls OCX de la versión 26.0, éste sirve para seleccionar la fecha y hora, lo bueno de utilizar el UserControl es no tener que depender del OCX, muchas veces nos encontramos con que tenemos que trabajar con fechas y horas y tenemos que recurrir si o si al suite completa del OCX por sólo un control. Además este trae como ventaja que se pueden aplicar los estilos visuales de Windows ya que con el OCX siempre mostraba el aspecto de Windows 98. Junto al UC está lla clase clsSubClass, la cual sirve para capturar el evento Chage, no incluí ésta dentro del UC porque tengo como idea en un futuro crear una suite con varios de estos controles y sería conveniente mantenerlos por separado para no repetir código.

ucDateTime