Ago 092011
 

Aprovechando la creación del ucMDITaskBar cree este control de usuario para poner un TabControl a un formulario MDI, el cual no requirió muchos cambios, aproveche el ucTabStrip de Raul338, su uso es muy sencillo sólo basta con poner un control sobre el formulario MDI y el control se encarga del resto.
Si bien hay algunos códigos similares dando vuelta por la web, este tiene algunas opciones extra, como por ejemplo poner la cruz de cerrar en cada ficha, invocar el SysMenu de cada formulario con el click derecho en la ficha, además, no requiere código extra.

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 ara automáticamente, su único parámetro es el hwnd del formulario MDI.
  • IconSize: Devuelve o establece el tamaño de icono que queramos utilizar.
  • MinTabWidth: Devuelve o establece el tamaño mínimo para cada ficha.
  • MaxLen: Devuelve o establece el largo del texto que se quiera mostrar, supongamos que un formulario tienen un Caption muy extenso la ficha seria muy larga, pues con esta propiedad podemos hacer que se limite a cierta cantidad de caracteres y así establecer un ancho máximo para las fichas, si dejamos 0 mostrara el Caption completo.
  • CloseButtonVisible: Devuelve o establece si el control mostrara la cruz de cerrar en cada ficha
  • CloseButtonStyle: Devuelve o establece el estilo del botón cerrar de la ficha, cuenta con dos estilos
  • MultiLine: Devuelve o establece si el control mostrara las fichas en una sola fila o en varias.
  • ShowMenu: Devuelve o establece si el usuario puede invocar el SysMenu al hacer click derecho en cada ficha
  • Enabled: Devuelve o establece si el control está o no habilitado
  • Font: Devuelve o establece la Fuente para el TabControl.
  • hwndTabControl: Devuelve  el Handle del SysTabControl32
  • hwndUserControl: Devuelve  el Handle del control de usuario
  • hwndMDIClient: Devuelve el Handle MDIClient del formulario MDI

TabMDI.png

 
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 242010
 

Control de usuario para mostrar un progreso circular indefinido, tal como solemos verlo hoy en día en muchas web o reproductores de videos. Nos puede servir cuando tenemos que realizar operaciones que no sabemos cuánto tiempo pueden llegar a tardar, y así mostrar al usuario que el programa se encuentra pensado, descargado, etc.
Es necesario que dicha operación no cuelgue al programa ya que esto también produciría una interrupción en el timer interno del control y no se mostraría nada.
El control utiliza métodos gráficos de GDI Plus, cuenta con varios aspectos diferentes las cuales pueden crearse jugando con sus propiedades.
A continuación se mostrará una captura gif animada (de baja resolución) de como lucen.

Progress Circular

 
Mar 222010
 

Control de usuario de tipo contenedor de controles con barras deslizables. Los ScrollBar se autoajustan según las posiciones de los controles insertados, por lo que no requiere ningún código extra. Cuenta con una propiedad que sigue el foco a medida que vamos tabulando, también tiene la propiedad de poder enganchar con el mouse el control y deslizarlo, utiliza los temas de Windows sin necesidad de que utilicemos un .exe.manifest. Está plenamente hecho con Apis de Windows, tiene soporte para la rueda del mouse. No le he agregado eventos, si alguien tiene la necesidad ya saben, es código abierto y pueden hacerlo ustedes mismos.
Nota: No deben utilizarse ventanas de tipo Windowless (imágen, shape, line, labels) directamente sobre el control, para ello es conveniente utilizar un Frame o PictureBox de contenedor para poder insertarlos sobre este control.

Ejemplo ScrollBar
Ejemplo Grillas

 
Mar 032010
 

Control de usuario para poder escribir direcciones de correo de una forma muy sencilla tal como la que utiliza el correo de Hotmail, cuenta con una lista desplegable con las posibles sugerencias del Nombre, Apellido y Email de los contactos a quienes queremos escribir. El control valida cada dirección de correo ingresada, de no ser correcta la marca en rojo. Este control también sirve para crear una lista de archivos adjuntos.
El UserControl depende de dos controles de usuario más y un módulo Clase, cuenta con las opciones básicas y algunos eventos que creo que son los suficientemente necesarios para un uso común, es código abierto cualquiera lo puede adaptar a su necesidad.

Email Control

Aquí en la captura se muestra cómo la lista nos va sugiriendo cual de nuestros contacto queremos escribir.

Lista de sugerencias

 
Nov 222009
 

Control de Usuario para autocompletar un TextBox (o ventana “Edit”), a medida que vamos escribiendo en ella se carga una lista con todas las sugerencias, por ejemplo en una base de datos tenemos un listado de usuarios y tenemos que escribir en un TextBox un usuario, entonces al tipear “J” nos mostrará una lista que aparecerá debajo de la caja de texto con todos los usuarios que comiencen con dicha letra.
No sólo funciona con TextBox sino con toda ventana que utiliza la clase “Edit” dentro de ella.
Tiene tres formas de autocompletado “Append” autocompleta con la primer coincidencia, “Suggest” despliega una lista con todas las coincidencias encontradas y “AppendSuggest” las dos primeras juntas.
Traté de simular la lista tal como la que utiliza Windows con el api SHAutoComplete de la dll shlwapi.dll.

AutoCompletar TextBox

 
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