Leandro Ascierto

Visual Basic

 
Skins para Formularios (Ejemplo Simple)

SKINS PARA FORMULARIOS

 

Ejemplo:

A continuación se encuentra un ejemplo sencillo que les enseñará cómo aplicar dichos Skins a un formulario, además se mostrarán las propiedades y funciones con las que cuenta.
Nota: Es aconsejable implementarlo cuando estemos por compilar y no cuando estemos construyendo algún proyecto ya que de haber algún error este podría provocar el cierre de Visual Basic y no nos permitirá guardar los cambios de nuestro proyecto.


Option Explicit

' Declaramos cSkin como la clase ClsSkinner.
Dim cSkin As ClsSkinner

Private Sub Form_Load()

    ' Creamos e inicializamos a cSkin
    Set cSkin = New ClsSkinner
    
    ' Esto es si queremos que el área del cliente se pinte con el tema del skin.
    ' Ojo!! esto hará que los controles Labels, Image, Shapes y Line que estén directamente sobre el formuario no se muestren.
    ' En el caso que no querramos que esto pase lo dejamos  = False.
    cSkin.PaintClientArea = True
    
    ' Indicamos el path donde debe leer el archivo.Skin
    cSkin.LoadSkinFromFile App.Path & "\Comander.Skin"
    
    ' Si quisiéramos leer el Skin desde un archivo de recursos llamamos a la función. LoadSkinFromResource
    ' Donde 101 es el index y "SKIN" es la sección.
    cSkin.LoadSkinFromResource 101, "SKIN"
    
    ' Aplicamos el Skin a nuestro Formulario.
    cSkin.HookForm Me.hwnd

End Sub

Private Sub Form_Unload(Cancel As Integer)

    ' Detenemos la Sublcasificación.
    cSkin.UnHookForm Me.hwnd
    
    ' Descargamos la clase de la memoria
    Set cSkin = Nothing

End Sub
										


Descargar Ejemplo Simple.zip
38 Kb
Descargado 513 veces



5/5 puntos (1 voto)


Bookmark and Share

25 Comentarios

  1.  

    Muchas gracias por este ejemplo men sigue asi

  2.  

    El skinn esta bueno y lo mejor de todo que solo se le aplica a la cascara del formulario y no todos los controles.
    Estaria bueno poder cambiarle el color amarillo por otro, quiza plomo, es cuestion de gustos, saludos

  3.  

    Chevere

  4.  

    Ante todo buena pg.
    Quisiera una consulta.no entiendo muy bien tengo que hacer ya me descargue el de los skins pero bueno primero lo que hago es crear mi formulario normal pero de ahi como hago para darle el aspecto que yo quiero seleccionar de los skin
    =( , y con respecto al codigo tengo que crearlo en otra clase o en donde. espero tu respuesta gracias

  5.  

    @Jeffer si no me equivoco vos preguntaste en el foro el Hacker.net y decias utilizar .net, esta clase es solo para visual basic 6, sinceramente no te podria ayudar en .net ya que no lo utilizo.

    Saludos

  6.  

    Leandro quisiera saber como aplicar los skins en una formulario datareport...espero tu respuesta gracias.

  7.  

    Hola Cesar dentro del DataRepor pegas este codigo

    Option Explicit
    Dim cSkin As ClsSkinner

    Private Sub DataReport_Initialize()
    Set cSkin = New ClsSkinner
    cSkin.LoadSkinFromFile App.Path & "\Cooper.Skin"
    cSkin.HookForm Me.hwnd
    End Sub

    Private Sub DataReport_Terminate()
    cSkin.UnHookForm Me.hwnd
    Set cSkin = Nothing
    End Sub

    Tene en cuenta que deve estas el skin Cooper.Skin dentro de la carpeta del proyecto, pero bueno eso modificalo a tu gusto.

    Saludos

  8.  

    He entrado en tu página casi por casualidad y me he quedado realmente impresionado. Es simplemente GENIAL. Muchas gracias por compartirlo con nosotros. Y tambien te animo a que continúes con el proyecto de skinner. Si puedo ayudarte en algo sólo tienes que decirlo.
    Un saludo
    Manuel

  9.  

    hola, mira he leido algo sobre los skins, pero lamentablemente no me queda muy claro la manera de aplicarlos a mis formularios,serias tan amable de enviarme algun manual donde se explique paso a paso?
    De antemano te agradezco la atencion.
    gracias

  10.  

    Hola leandro, este proyecto es ¡EXCELENTE!, pero espero que me puedas ayudar. He creado una aplicación usando MDI Form y he aplicado los skins en su manera simple (hook para cada form), la dificultad se presenta en los Foms Child, los controles de formulario no responden (Min, Max, Cerrar), he notado que esto ocurre cuando tengo el tema de Windows XP en "Clasico". ¿Como haria para que el skin funcione sin importar el tema de windows?. Ayuda porfavor. ¡Gracias de antemano!
    Observacion: Estoy aplicando skin para que los forms se parescan a Windows Vista

  11.  

    Leandro, debes saber, que no puedo usar el Ejemplo con Sub Main porque uso un formulario de Splash para hacer algunas comprobaciones de la aplicacion y si uso Sub Main llamando a este form, sale un error cuando este se descarga. Ayuda porfavor ¡Gracias de nuevo!

  12.  

    Patrick, hazlo de esta forma

    Private Sub main()
    FrmSplash.Show
    StartHooking
    ChangeSkin App.Path & "\Skins\Cooper.Skin"
    MDIForm1.Show
    End Sub

    En cuanto a lo de te de falla con el boton cerrar cuando no estan los temas de windows presente, me resulta raro, se que puede aber algunos problemas con el repintado pero no que no respondan los controles, con otro skin tambien te da el mismo problema?

    Saludos.

  13.  

    Estimado leandro, el error del repintado ocurre con todos los skins ke he probado, recalco que solo ocurre en los formularios MDIChild y solo cuando uso el ejemplo simple (hook para cada form)

  14.  

    Leandro te comento que al correr el programa me da un error que dice que "NO SE HA DEFINIDO EL TIPO DEFINIDO POR EL USUARIO" esto se refiere cuando escribo: Dim cSkin As ClsSkinner

  15.  

    @Jose tienes que agregar el modulo clase ClsSkinner.cls al proyecto, fijate mas arriva que esta el link de descarga.

    Saludos.

  16.  

    Hola Leandro espero no ser muy molesto, es que me encanta el Cls de Skins, pero tengo un problemita. Cuando presiono ALT + IMPR PANT para capturar una Form (SDI) ya sea en modo normal o MDIChild, se cuelga la aplicación, pero esto no ocurre en un Form MDI.

    NOTA: Esto ocurre cuando utilizo el ejecutable compilado, pero no ocurre cuando uso F5 de VB6. Pruébalo compilando el ejemplo simple que tu mismo publicaste.

    Ayuda porfavoorrrrrrrrrrrr. Eres el único en este planeta que puede ayudarme.

  17.  

    @Patrick, si acabo de ver ese detalle y otros más, asíi que lo corregi y lo subi nuevamente.
    igualmente me quedan otras cositas más por corregir pero no hacen al funcionamiento del módulo si no mas a una forma mas correcta de programar y organizar el código.

    Saludos.

  18.  

    Hola leandro, si no fuera mucho molestar cual es la modificación exactamente, yo pude solucionarlo poniendo como comentario en el procedimiento HookForm la parte que indica "ssc_AddMsg FrmH, WM_SYSKEYDOWN, MSG_BEFORE", claro obvio que no es la mejor opción y si pudieras porfavor podrías publicar un historial de cambios que vas realizando con sus respectivas fechas para asi saber que cambio y cuando, porque algunos COMO YO pensamos que el módulo sigue siendo el mismo y no lo descargamos ¡gracias de antemano!.

  19.  

    Hola leandro de nuevo, quisiera saber si lograste corregir el error de que la aplicacion (exe) se cuelga al presionar ALT y IMPR PANT esque suscede que no solo pasa con esa combinación sino con muchas que usen ALT, ejem: ALT + ENTER, ALT + DIRECCIONALES o combinaciones con 03 teclas: Ejemplo: ALT+SHIFT+C, creo que la lista es interminable, Ayuda por favorrrrrrrrrrrrrr............

    Gracias de antemano....

  20.  

    Hola Patrick si ya esta solucionado, pero bueno no recuerdo bien que es lo que modifique porque estoy trabajando a full y mi cabesa esta volando creo que el problema estaba en la funcion GetMenuFromChar y la variable hMenu la ponia = 0 perdiendo el puntero del menu.

    If hMenu = 0 Then
    hMenu = GetMenu(FrmH)
    SetMenu FrmH, 0
    End If


  21.  

    Hola leandro, quería preguntar si lograste corregir el repintado de los controles (min, max, cerrar) en forms child, ya que estos no responden cuando el tema de xp esta en clásico pero trabajan normal con otros temas. Pasa usando el ejemplo simple (para ello agregale un MDI Form y el Form Comun (SDI) ponle MdiChild=True y llamalo con show desde el MDIForm).

  22.  

    Hola de nuevo, esta vez te escribo para decirte que me tome la libertad de agregarle una función "LoadSkinFromDLL" a tu módulo ClsSkinner.cls, este sirve para poder sacar un skin que está en una DLL no en RES, te envío el módulo, lo revisas y me comentas, quisa se pueda mejorar algo mas con respecto a esa función.

    aki te va el link: http://www.megaupload.com/?d=9LCEF0W1

  23.  

    Leandro tengo que felicitarte por tus códigos, son una maravilla, puedo deciros que sos muy bueno, quería pedirte si podés desarrollar un OCX de tipo calendario pero que sea identico al que tiene windows vista o windows 7 incluyendo su comportamiento claro. Sería de agradecer

  24.  

    Como te va leandro, espero que bien, sólo quería consultarte si podemos usar tu módulo de skins en aplicaciones que deseamos vender, soy un programador que vende algunas aplicaciones pero me gusta que tengan buena presentación por ello es la consulta.

    Podemos usar tu modulo de forma gratuita y ponerlo en agradecimiento colocando como referencia tu sitio web o tenemos que pagarte algo, agradecería mucho tu respuesta.

  25.  

    No hay problema, son para usar

Deja tu comentario

Todos los campos son requeridos excepto el de la web

Tu Nombre o Nick

Tu Email (no ser publicado)

Pgina Web (opcional)

Comentario


Cdigo de seguridad