sábado, 11 de mayo de 2013


¿Cómo aplicar un estilo visual sencillo en vb.net 2008?
Bueno, quizás una preocupación existente entre muchos programadores sea el hecho de elaborar un programa que permita cambiar la apariencia visual para hacerlo más atractivo a la gente, en el entorno de programación Visual Basic.Net, en mi caso, versión 2008
Existen una serie de controles ActiveX en internet que permiten hacer estas tareas, no obstante, muchos de los programadores “amateurs” o “hobistas” como yo, les puede parecer bastante tedioso descargarlos, ya que pueden tener sistemas operativos no compatibles con tales controles (si, por aquello de que tengan Windows XP o algo parecido)
Hoy les enseñare una forma sencilla de hacerlo, sin descargar controles ni nada parecido
Bueno, sin mas preámbulo, comencemos
Paso 1: Abrimos Vb.Net y creamos un nuevo proyecto en Archivo/Nuevo proyecto, o simplemente la combinación de teclas ctrl+N y les aparecerá algo como esto:



En el cuadro de dialogo elegimos “aplicación de Windows Form” y le damos aceptar

Paso 2: Una vez creado el nuevo proyecto, nos vamos al “explorador de soluciones” y buscamos el que diga “My Project”, le damos doble clic y nos abrirá el cuadro de dialogo. En él, elegimos la pestaña “Configuración” y le ponemos los datos tal y como aparecen en la imagen.


¿Qué es lo que hicimos aquí? Bueno, resulta que esto en realidad es el archivo de configuración de nuestro programa.  Este nos permite guardar información importante que podamos utilizar en el futuro, como por ejemplo, en nuestro caso, darle una apariencia visual al programa.
Paso 3: Nos vamos a la pestañita que dice “Form1” y al formulario le agregamos los siguientes controles:
1.       Un label llamado “Label1”
2.       Dos Botones llamados Button1 y Button2
3.       Un ComboBox llamado Combobox1
Paso 4: Le damos a cada uno de los controles las siguientes propiedades (para acceder a ellas, solo haz clic derecho y luego haz clic en propiedades)
·         Al control Label1,  en la propiedad Text escribiremos Estilo:
·         Al control Button1, en la propiedad Text le escribiremos Aplicar
·         Al control Button2, en la propiedad Text escribiremos Salir
·         En el Control ComboBox1, seleccionamos  la propiedad ítems y al lado donde dice (Colección) damos un clic en el botón   y nos aparecerá un cuadro de diálogo, en donde debemos escribir estos valores tal y como vienen  en la siguiente imagen


Y nos quedará así

Paso 5: Crearemos una Clase “FormStyle”. Solo debemos ir a menú proyecto y elegimos “agregar clase”.
En el cuadro de dialogo elegimos la opción “Clase”, escribimos en el Nombre “FormStyle” y Lugo clic en aceptar
Paso 6: Escribimos el siguiente código –si lo desean, pueden copiarlo y luego pegarlo-
    Private background As System.Drawing.Color
    Private foreground As System.Drawing.Color
    Private FontName As String
    Private FontSize As Double

    'enumerador de estilos: Nos permitira saber que estilo queremos aplicar
    Public Enum Style
        Default_Style = 0
        Fire = 1
        Sea = 2
        Tec = 3
    End Enum


    Sub LoadStyleForm(ByVal form As Form)
        Dim ctr As Control
        'esto es lo que se ejecuta al abrir el programa
        'lo que hace este comando es cargar lo que guardamos en el archivo de configuración
        'cuando aplicamos un estilo

        Me.background = My.Settings.BACKGROUND
        Me.foreground = My.Settings.FOREGROUND
        Me.FontSize = My.Settings.FONTSIZE
        Me.FontName = My.Settings.FONTNAME
        My.Settings.Save()

        form.BackColor = Me.background
        form.ForeColor = Me.foreground
     
        form.Font = New Font(Me.FontName, Me.FontSize, FontStyle.Regular, GraphicsUnit.Point)

        'este bucle nos permite darle el formato de colores a los controles
        For Each ctr In form.Controls
            If ctr.GetType() Is GetType(Button) Then
                ctr.BackColor = Me.background
                ctr.ForeColor = Me.foreground
                ctr.Font = New Font(Me.FontName, Me.FontSize, FontStyle.Regular, GraphicsUnit.Point)
            ElseIf ctr.GetType Is GetType(Label) Then
                ctr.BackColor = Me.background
                ctr.ForeColor = Me.foreground
                ctr.Font = New Font(Me.FontName, Me.FontSize, FontStyle.Regular, GraphicsUnit.Point)
            ElseIf ctr.GetType() Is GetType(RadioButton) Then
                ctr.BackColor = Me.background
                ctr.ForeColor = Me.foreground
                ctr.Font = New Font(Me.FontName, Me.FontSize, FontStyle.Regular, GraphicsUnit.Point)
            ElseIf ctr.GetType() Is GetType(CheckBox) Then
                ctr.BackColor = Me.background
                ctr.ForeColor = Me.foreground
                ctr.Font = New Font(Me.FontName, Me.FontSize, FontStyle.Regular, GraphicsUnit.Point)
            Else
                'si es de otro tipo distinto a label, button, checkbox o frame, solo aplicara el estilo de fuente
                'con el color predeterminado para el control-ejemplo, un textbox
                ctr.Font = New Font(Me.FontName, Me.FontSize, FontStyle.Regular, GraphicsUnit.Point)
            End If
        Next




    End Sub

    Sub ApplyStyleToForm(ByVal Form As Form, ByVal style As Style)
        Dim ctr As Control
        'esto es lo que se ejecuta al dar click en el boton 'Aplicar'
        'lo que hace este comando es guardar en el archivo de configuración
        'los parametros del estilo segun el quen hallamos elegido

        If style = FormStyle.Style.Default_Style Then
            StyleDefault() 'estilo predeterminado
        ElseIf style = FormStyle.Style.Fire Then
            StyleFire() 'estilo fuego
        ElseIf style = FormStyle.Style.Sea Then
            StyleSea() 'estilo océano
        ElseIf style = FormStyle.Style.Tec Then
            StyleTec() 'estilo tecnológico
        End If
        'almacena los datos en el archivo de configuración...
        My.Settings.BACKGROUND = Me.background
        My.Settings.FOREGROUND = Me.foreground
        My.Settings.FONTSIZE = Me.FontSize
        My.Settings.FONTNAME = Me.FontName
        'y los guarda para usarlos la proxima vez que lo abramos
        My.Settings.Save()

        Form.BackColor = Me.background
        Form.ForeColor = Me.foreground
        Form.Font = New Font(Me.FontName, Me.FontSize, FontStyle.Regular, GraphicsUnit.Point)

        For Each ctr In Form.Controls
            If ctr.GetType() Is GetType(Button) Then
                ctr.BackColor = Me.background
                ctr.ForeColor = Me.foreground
                ctr.Font = New Font(Me.FontName, Me.FontSize, FontStyle.Regular, GraphicsUnit.Point)
            ElseIf ctr.GetType Is GetType(Label) Then
                ctr.BackColor = Me.background
                ctr.ForeColor = Me.foreground
                ctr.Font = New Font(Me.FontName, Me.FontSize, FontStyle.Regular, GraphicsUnit.Point)
            ElseIf ctr.GetType() Is GetType(RadioButton) Then
                ctr.BackColor = Me.background
                ctr.ForeColor = Me.foreground
                ctr.Font = New Font(Me.FontName, Me.FontSize, FontStyle.Regular, GraphicsUnit.Point)
            ElseIf ctr.GetType() Is GetType(CheckBox) Then
                ctr.BackColor = Me.background
                ctr.ForeColor = Me.foreground
                ctr.Font = New Font(Me.FontName, Me.FontSize, FontStyle.Regular, GraphicsUnit.Point)
            Else
                'si es de otro tipo distinto a label, button, checkbox y textbox, solo aplicara el estilo de fuente
                'con el color predeterminado para el control
                ctr.Font = New Font(Me.FontName, Me.FontSize, FontStyle.Regular, GraphicsUnit.Point)
            End If
        Next



    End Sub
    'estilo predeterminado
    Private Sub StyleDefault()
        background = Color.FromKnownColor(KnownColor.Control)
        foreground = Color.Black
        FontName = "Microsoft Sans Serif"
        FontSize = 8.25
    End Sub

    'estilo fuego
    Private Sub StyleFire()
        background = Color.OrangeRed
        foreground = Color.Yellow
        FontName = "Book Antiqua"
        FontSize = 8.25
    End Sub

    'estilo océano
    Private Sub StyleSea()
        background = Color.MidnightBlue
        foreground = Color.White
        FontName = "Tahoma"
        FontSize = 8.25
    End Sub

    'estilo tecnologico
    Private Sub StyleTec()
        background = Color.Black
        foreground = Color.Lime
        FontName = "BankGothic Md BT"
        'es la misma fuente usada en el juego "Call of Duty Modern Warfare. Pueden usar otra o descargarla
        'en http://www.911fonts.com/font/download_BankGothicMdBTMedium_1532.htm
        FontSize = 8.25
    End Sub

Paso 7: hacemos clic a la pestaña del formulario y a continuación, en el “Explorador de soluciones” hacemos clic en “Ver Código” y en el editor escribimos lo siguiente
Imports WindowsApplication1.FormStyle


'Nota debo colocar en lugar de WindowsApplication1, el nombre quese le dio y luego todo igual

Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim fs As New FormStyle
        fs.ApplyStyleToForm(Me, ComboBox1.SelectedIndex) 'selected index al ser nuemrico, va de 0 a 3, que son los valores del enumerador
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim fs As New FormStyle
        fs.LoadStyleForm(Me) 'me es el formulario actual
    End Sub


    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        End 'cierra el programa
    End Sub
End Class
Y ya lo tenemos listo


ara aplicar el estilo y guardarlo para la próxima vez que lo abramos, solo hace falta hacer clic en el botón que dice “Aplicar”… repite el ejercicio varias veces y veras que SI FUNCIONA
Esto es una muestra de cada uno de los estilos
  


Bueno, esto ha sido todo por hoy… espero que les haya sido de utilidad
Hasta pronto.

No hay comentarios.:

Publicar un comentario