Sección de tutoriales y manuales vb
Nota: en el siguiente enlace se listan otros recursos relacionados a otros cuadros de diálogo o CommonDialog, ya sea los usados con el control ocx de visual basic, y los de windows accediendo mediante funciones Api : Ejemplos
Para poder utilizar dicho cuadro de diálogo hay que incluir al proyecto el ocx Microsoft Common Dialog Controls. desde el menú Proyecto > componentes.
Una ves incluído el ocx en nuestro proyecto, con el mismo podemos utilizar todos los cuadros de diálogo. ( aunque en esta página se describe solo el que permite seleccionar color, los demás los podés acceder desde este enlace: Controles Visual basic )
Ventana para agregar componentes

Este cuadro de diálogo es muy simple utilizarlo, solo basta con llamar al método ShowColor para abrir el mismo y poder seleccionar un color y luego utilizar dicho valor para alguna acción del programa
Cuadro de diálogo

Este método permite abrir el cuadro de diálogo. Como se dijo solo basta con ejecutar el método ShowColor.
Por ejemplo para abrirlo al presionar un CommandButton:
Private Sub Command1_Click()
CommonDialog1.ShowColor
End Sub
Pero ¿ como saber el color seleccionado ?
Para ello se debe consultar la propiedad Color.
Esta propiedad devuelve o establece el color seleccionado.
El siguiente ejemplo, al presionar un botón, abre el cuadro de diálogo, y luego de seleccionar un color y presionar el botón Aceptar, se establece el color de fondo del formulario por el color elegido.
Private Sub Command1_Click() 'Abre el CommonDialog CommonDialog1.ShowColor ' Establece el color elegido al formulario Me.BackColor = CommonDialog1.Color End Sub
Es decir , al ejecutar ShowColor, se despliega el cuadro de diálogo y se detiene la ejecución del programa. Una ves que se presiona Aceptar o Cancelar, prosigue la ejecución de código, y se consulta la propiedad Color.
Nota: la propiedad Color devuelve un valor de tipo Long que representa al mismo.
Para desplegar el cuadro de diálogo con un color en concreto, hay que indicar en la propiedad Color, el valor que queremos como color inicial, esto hay que hacerlo antes de llamar a ShowColor. Pero también hay que indicar en la propiedad Flags el valor cdlCCRGBInit. Si no establecemos dicho Flag, no funcionará
Lo siguiente abre el CommonDialog y marca el color Azul como predeterminado o inicial, utilizando la constante VbBlue para la propiedad Color

Private Sub Command1_Click() ' Flag que Indica que se va a establecer el color inicial CommonDialog1.Flags = cdlCCRGBInit ' Se indica el color Azul CommonDialog1.Color = VbBlue 'Abre el CommonDialog CommonDialog1.ShowColor End Sub
Con la propiedad Flags también podemos hacer que el cuadro de diálogo se visualice completo, es decir incluyendo la sección para definir colores personalizados. La siguiente imagen muestra esto mismo:
El valor a pasar a la propiedad Flags para que permita hacer esto es: cdlCCFullOpen.
Un ejemplo:
Private Sub Command1_Click() ' Cuadro de dialogo completo CommonDialog1.Flags = cdlCCFullOpen ' Abre el cuadro de diálogo CommonDialog1.ShowColor End Sub
Lo siguiente es lo mismo que lo anterior, pero despliega el cuadro de diálogo completo y también un color inicial ( Color Amarillo )
'Color Amarillo CommonDialog1.Color = vbYellow ' Cuadro de dialogo completo y con color inicial CommonDialog1.Flags = cdlCCFullOpen Or cdlCCRGBInit ' Lo Abre CommonDialog1.ShowColor
Nota: para unir varios valores para usar con la propiedad Flags, notar que se utilzó el operador Or
Esta propiedad permite disparar-ejecutar un Error cuando el usuario presiona el botón Cancelar o la Cruz de cerrar. Esto es muy útil ya que al presionar Cancelar, nosotros debemos saber cuando el usuario no quiso seleccionar un color (en la mayoría de los casos )
Al establecer la propiedad CancelError con el valor True, se producirá el error 32755

Colocando una rutina de error y consultando si el error es el 32755, se puede controlar para tomar alguna determinación, por ejemplo mostrar un mensaje, ignorar o lo que se desee hacer:
Colocar un Command1 y un CommonDialog
Código fuente en el formulario
Private Sub Command1_Click() On Error GoTo errSub CommonDialog1.CancelError = True CommonDialog1.ShowColor ' Si no se presionó cancelar cambia r el color del Form If Err.Number <> 32755 Then Me.BackColor = CommonDialog1.Color End If Exit Sub 'Error errSub: If Err.Number = 32755 Then MsgBox " Se presionó cancelar ", vbInformation End If End Sub
El siguiente ejemplo lo que hace es cambiar el color de la fuente de todos los controles Label que haya en el formulario
Para el mismo colocar algunos controles Label, y otros controles como TextBox y ListBox etc..
También un CommonDialog y un commandButton para seleccionar el color.
Private Sub Command1_Click() Dim Controles_Label As Control On Error GoTo errSub CommonDialog1.CancelError = True 'Abre el diálogo CommonDialog1.ShowColor ' Recorre en un For-Each todos los controles que hay en el Formulario For Each Controles_Label In Me.Controls ' Si el control actual es un Label ... If TypeOf Controles_Label Is Label Then ' Cambia el color de la fuente de los labels Controles_Label.ForeColor = CommonDialog1.Color End If Next Exit Sub 'Error errSub: If Err.Number = 32755 Then ' Si se presioné Cancelar sale Exit Sub End If End Sub
Si deseamos obtener el valor Hexadecimal podemos utilizar la siguiente función para convertirlo.
Colocar un CommonDialog, un control Text1 y un control CommandButton
Option Explicit 'Colocar un common Dialog llamado _ commondialog1, un Command1 y un Text1 '-------------------------------------------- Private Sub Command1_Click() 'Abre el cuadro de diálogo de color CommonDialog1.ShowColor 'Convierte el valor en formato Hexadecimal y lo muestra en el TextBox Text1 = Obtener_Color_Hexadecimal(CommonDialog1.Color) End Sub ' Convierte el valor del color en Hexadecimal a partir de un valor LONG '------------------------------------------------------------------------ Private Function Obtener_Color_Hexadecimal(ByVal Color As Long) As String Dim Azul As Byte, Verde As Byte, Rojo As Byte Dim sRojo As String, sVerde As String, sAzul As String 'Descompone el color Azul = (Color And 16711680) / 65536 Verde = (Color And 65280) / 256 Rojo = Color And 255 If Len(Hex$(Azul)) = 1 Then sAzul = "0" & Hex$(Azul) Else sAzul = Hex$(Azul) End If If Len(Hex$(Verde)) = 1 Then sVerde = "0" & Hex$(Verde) Else sVerde = Hex$(Verde) End If If Len(Hex$(Rojo)) = 1 Then sRojo = "0" & Hex$(Rojo) Else sRojo = Hex$(Rojo) End If 'Retorna el valor Obtener_Color_Hexadecimal = "#" & sRojo & sVerde & sAzul End Function
Buscar en Recursos vb
Recursos visual basic - Buscar - Privacidad - Copyright © 2005 - 2008 - www.recursosvisualbasic.com.ar