TEMA CREADO POR sNipeR-Ola
Buen hace un tiempo he posteado un tuto para cambiar el visual de vuestros proyectos de vb.
Para ver los enlaces debes ser usuario
Crear Usuario o
Hacer SesionAhora, les dejo algunas mejoras y trukos k pueden ser utiles con esta tecnica:
El .manifest es un poco aburrido, por eso usaremos un editor de resources k tiene la opcion para anadir el manifest por defecto:
Para ver los enlaces debes ser usuario
Crear Usuario o
Hacer SesionXN Resource Editor
Lo k tenemos k hacer es compilar nuestro proyecto y en seguida abrimos el .exe con el XN Resource Editor.
Resource > Add Resource > XP Theme Manifest
Guardamos y listo, nuestro programa ya tiene estilo XP, sin necesitar el .manifest. De esta forma el .manifest esta en los recursos del proprio .exe.
Ahora les dejo algunos trukos para algunos controlos de vb:
Para k sea aplicado el estilo xp tenemos k usar o los controlos normales del vb o los controlos del comctl32.dll
Uno de los grandes problemas es aplicar estilo XP a una listview. Porke? Porke la listview del comctl32.dll es una **** , no tenemos opcion de fullrowselect (selecionar toda una linea), gridlines, y tampoco podemos aplicar imagenes de 256 colores usando una imagelist( buen esto ya sera problema de la imagelist

)
Ahora la solucion para estos problemas:
FullRowSelect:
En un modulo:
Option Explicit
Public Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const LVM_FIRST = &H1000
Public Const LVM_SETEXTENDEDLISTVIEWSTYLE = (LVM_FIRST + 54)
Public Const LVM_GETEXTENDEDLISTVIEWSTYLE = (LVM_FIRST + 55)
Public Const LVS_EX_FULLROWSELECT = &H20
En un Form:
Private Sub Form_Load()
Call SendMessage(ListView1.hwnd, LVM_SETEXTENDEDLISTVIEWSTYLE, LVS_EX_FULLROWSELECT, ByVal True)
End Sub
Gridlines:
El mismo metodo del FullRowSelect pero remplazamos la constante LVS_EX_FULLROWSELECT por LVS_EX_GRIDLINES, Osea:
En un modulo:
Option Explicit
Public Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const LVM_FIRST = &H1000
Public Const LVM_SETEXTENDEDLISTVIEWSTYLE = (LVM_FIRST + 54)
Public Const LVM_GETEXTENDEDLISTVIEWSTYLE = (LVM_FIRST + 55)
Public Const LVS_EX_GRIDLINES = &H1
En un Form:
Private Sub Form_Load()
Call SendMessage(ListView1.hwnd, LVM_SETEXTENDEDLISTVIEWSTYLE, LVS_EX_GRIDLINES, ByVal True)
End Sub
Imagenes de 256 colores con ImageList (comctl32.dll):
Agregamos una ImageList del mscomctl y ponemos las imagenes k keremos en esa imagelist:
Como esa no es compatible con la listview del comctl32, al ejecutar el proyecto tenemos k cojer las imagenes de la imagelist (mscomctl) y ponerlas en la imagelist (comctl32)
Option Explicit
Private Sub Form_Load()
Dim i As Integer
For i = 1 To ilsMSCOMCTL.ListImages.Count
ilsCOMCTL32.ListImages.Add , , ilsMSCOMCTL.ListImages(i).Picture
Next i
End Sub
El ultimo problema del estilo XP es el trazo negro en los Command Buttons y OptionButtons kuanto estos son aplicados en frames.
La solucion es simplemente ponerlos en una PictureBox y la PictureBox la ponemos en el frame. De este modo los controlos kedaran normales.
Ahora una sugerencia personal:
Hay kien no les guste el FocusRect en los tabstrips, mismo con el estilo XP keda muy feo (en mi opinion), asi k lo k hago es el seguinte:
Private Sub Control_GotFocus()
cmdFocus.SetFocus
End Sub
El cmdFocus es un boton k esta escondido (no invisible o no funciona) y kuando el control k keremos k no tenga focus recibe focus reedirecciona el focus a ese boton.
Uff, creo k es todo, espero comentarios.
Salu2
******************************************************************************************************
TEMA CREADO POR H4NG3Rese sniper, eres mi dios mi musa mi inspiración, mi meta a seguir juas me pasao un poko xo lo vales!
enga nos vemos

edito: uso un control llamado calendar (k es un calendario xd) el fondo del qual me keda de ese gris feo, k puedo hacer?
H4NG3R