Sección de tutoriales y manuales vb

Clic para descargar Velneo Open source Software - Plataforma para el desarrollo de aplicaciones empresariales sobre base de datos

 

CommonDialog - Cuadro de diálogo de seleccionar color

Volver al índice








 

 

En esta página se describe el uso básico del cuadro de diálogo de windows que permite seleccionar un color

Contenido :

 

 

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

 


1 - Introducción

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

vista previa del cuadro de diálogo

 


2 - Método ShowColor

 

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.

 


3 - 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.

 


4 - Propiedad Flags

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

 

vista previa del ejemplo utilizando la propiedad Flags

 

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

 


5 - Propiedad CancelError

 

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

 

vista previa de la ventana de error al presionar cancelar

 

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:

 


6 - Ejemplo 1 para usar el CommonDialog

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
 

 


7 - Ejemplo 2

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
 

 

Convertir el color seleccionado en Hexadecimal

 

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

 

8 - Recursos Visual basic - Enlaces relacionados

 

 


Buscar en Recursos vb