Zona HTML Zona Java Zona PHP Zona ASP Zona Bases de datos
Inicio > Foros > Visual Basic > color de letra del boton
-Foros de debate

Visual Basic
Lista de foros | Lista de mensajes de este foro

Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.

color de letra del boton
Enviado por mªjose el día 28 de noviembre de 2003

¿Como se cambia el color de letra del CommandButton? Pues mucho que busco no lo encuentro.

Un saludo

 
Re: color de letra del boton
Enviado por Pablo el día 29 de noviembre de 2003

Te digo que el CommandButton no posee la propiedad Forecolor, por lo cual es imposible que cambies el color de la letra, aunque lo hagas desde la paleta de colores de VB.
En este caso, solo podras verlo en tiempo de diseño.
La solucion que podria darte es que crees una imagen con un buen fondo y con el color de letra que quieras.
Luego la pones que la propiedad Picture del command
Saludos...

 
Re: Re: color de letra del boton
Enviado por matamala el día 29 de noviembre de 2003

Hola amigos.
decir que es cierto que al command button no se le puede cambiar el color del texto, pero no sé si sabeis que exiten los Sherinad 3D controls, en los componentes qu son los mismo pero en 3D. y estos si t epermiten cambiarles el color de la fuente y algun que otro efecto visual más.
si no te aparece dicho controlen la lista de componentes, dale a la opción examinar y lo seleccionas.
está en :windows\system\ threed32.ocx.
espero haverte ayudado, un saludo .

 
Re: Re: Re: color de letra del boton
Enviado por Baltasar el día 30 de noviembre de 2003

La propiedad Forecolor como tal no existe para los Commandbutton, pero como casi siempre, existen soluciones.
Una de ellas es el siguiente, eso sí, es un poco largo, pero si queremos botones con texto de colores, habrá que ponerlo.

Los Sheridan3D, como indica matamala, son otra solución y están preciosos.

Bueno, a lo que íbamos. hay que poner lo siguiente en un módulo:

Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Private Declare Function GetParent Lib "user32" _
(ByVal hWnd As Long) As Long

Private Declare Function GetWindowLong Lib "user32" Alias _
"GetWindowLongA" (ByVal hWnd As Long, _
ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias _
"SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Const GWL_WNDPROC = (-4)

Private Declare Function GetProp Lib "user32" Alias "GetPropA" _
(ByVal hWnd As Long, ByVal lpString As String) As Long
Private Declare Function SetProp Lib "user32" Alias "SetPropA" _
(ByVal hWnd As Long, ByVal lpString As String, _
ByVal hData As Long) As Long
Private Declare Function RemoveProp Lib "user32" Alias _
"RemovePropA" (ByVal hWnd As Long, _
ByVal lpString As String) As Long

Private Declare Function CallWindowProc Lib "user32" Alias _
"CallWindowProcA" (ByVal lpPrevWndFunc As Long, _
ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
(Destination As Any, Source As Any, ByVal Length As Long)

Private Const ODT_BUTTON = 4
Private Const ODS_SELECTED = &H1
Private Const WM_DESTROY = &H2
Private Const WM_DRAWITEM = &H2B

Private Type DRAWITEMSTRUCT
CtlType As Long
CtlID As Long
itemID As Long
itemAction As Long
itemState As Long
hwndItem As Long
hDC As Long
rcItem As RECT
itemData As Long
End Type

Private Declare Function GetWindowText Lib "user32" Alias _
"GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, _
ByVal cch As Long) As Long
Private Declare Function DrawText Lib "user32" Alias "DrawTextA" _
(ByVal hDC As Long, ByVal lpStr As String, ByVal nCount As Long, _
lpRect As RECT, ByVal wFormat As Long) As Long
Private Declare Function SetTextColor Lib "gdi32" (ByVal hDC As Long, _
ByVal crColor As Long) As Long
Private Declare Function SetBkMode Lib "gdi32" (ByVal hDC As Long, _
ByVal nBkMode As Long) As Long
Private Const TRANSPARENT = 1

Private Const DT_CENTER = &H1
Public Enum TextVAligns
DT_VCENTER = &H4
DT_BOTTOM = &H8
End Enum
Private Const DT_SINGLELINE = &H20

Public Sub ExtButtonSubclass(hWndForm As Long)

Dim l As Long

l = GetProp(hWndForm, "ExtBtnProc")
If l <> 0 Then
Exit Sub
End If

SetProp hWndForm, "ExtBtnProc", _
GetWindowLong(hWndForm, GWL_WNDPROC)
SetWindowLong hWndForm, GWL_WNDPROC, AddressOf ExtButtonProc

End Sub

Public Sub ExtButtonUnSubclass(hWndForm As Long)

Dim l As Long

l = GetProp(hWndForm, "ExtBtnProc")
If l = 0 Then
Exit Sub
End If

SetWindowLong hWndForm, GWL_WNDPROC, l
RemoveProp hWndForm, "ExtBtnProc"

End Sub

Public Function ExtButtonProc(ByVal hWnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long

Dim lOldProc As Long
Dim di As DRAWITEMSTRUCT

lOldProc = GetProp(hWnd, "ExtBtnProc")

ExtButtonProc = CallWindowProc(lOldProc, hWnd, wMsg, wParam, lParam)

If wMsg = WM_DRAWITEM Then
CopyMemory di, ByVal lParam, Len(di)
If di.CtlType = ODT_BUTTON Then
If GetProp(di.hwndItem, "VBTCustom") = 1 Then
DrawButton di.hwndItem, di.hDC, di.rcItem, _
di.itemState

End If

End If

ElseIf wMsg = WM_DESTROY Then
ExtButtonUnSubclass hWnd

End If

End Function

Private Sub DrawButton(ByVal hWnd As Long, ByVal hDC As Long, _
rct As RECT, ByVal nState As Long)

Dim s As String
Dim va As TextVAligns

va = GetProp(hWnd, "VBTVAlign")

SetBkMode hDC, TRANSPARENT
SetTextColor hDC, GetProp(hWnd, "VBTForeColor")

s = String$(255, 0)
GetWindowText hWnd, s, 255
s = Left$(s, InStr(s, Chr$(0)) - 1)

If va = DT_BOTTOM Then
rct.Bottom = rct.Bottom - 4
End If

If (nState And ODS_SELECTED) = ODS_SELECTED Then
rct.Left = rct.Left + 1
rct.Right = rct.Right + 1
rct.Bottom = rct.Bottom + 1
rct.Top = rct.Top + 1
End If

DrawText hDC, s, Len(s), rct, DT_CENTER Or DT_SINGLELINE _
Or va

End Sub

Public Sub SetButtonForecolor(ByVal hWnd As Long, _
ByVal lForeColor As Long, Optional ByVal VAlign As TextVAligns = DT_VCENTER)

Dim hWndParent As Long

hWndParent = GetParent(hWnd)
If GetProp(hWndParent, "ExtBtnProc") = 0 Then
ExtButtonSubclass hWndParent
End If

SetProp hWnd, "VBTCustom", 1
SetProp hWnd, "VBTForeColor", lForeColor
SetProp hWnd, "VBTVAlign", VAlign

End Sub

Public Sub RemoveButton(ByVal hWnd As Long)

RemoveProp hWnd, "VBTCustom"
RemoveProp hWnd, "VBTForeColor"
RemoveProp hWnd, "VBTVAlign"

End Sub


Y para usarlo, simplemente:

SetButtonForecolor Command1.hWnd, RGB(255, 0, 0)


Saludos

 
Re: Re: Re: Re: color de letra del boton
Enviado por mªjose el día 2 de diciembre de 2003

Hola a todos. Pues no, no me aparece el Sherinad 3D en la lista de componente, y voy a buscar el threed32.ocx y tampoco lo encuentro en la ubicación que me has indicado matamala. ¿Como se podria conseguir entonces?

Un saludo

 
Re: Re: Re: Re: Re: color de letra del boton
Enviado por matamala el día 2 de diciembre de 2003

Hola Mª.José por e-mail te e mandado el OCX.
lleva como asunto:
el ocx 3d mencionado en el foro.
un saludo.
espero que no te de ningún problema.

 
color de letra del boton
Enviado por Zoila el día 17 de abril de 2008

Hola si desea puedes enviar el archivo ocx 3d por casualidad me entere que lo tienes en este foro Gracias Zoila

 


Re: Re: Re: Re: Re: color de letra del boton
Enviado por matamala el día 2 de diciembre de 2003

Hola Mª.José por e-mail te e mandado el OCX.
lleva como asunto:
el ocx 3d mencionado en el foro.
un saludo.
espero que no te de ningún problema.

 
Re: Re: Re: Re: Re: Re: color de letra del boton
Enviado por Jorge el día 2 de diciembre de 2003

yo he probado el modulo que envia baltazar y me funciona bien. los sheridam esos vale la pena bajarlos?

 



Re: Re: Re: Re: color de letra del boton
Enviado por alma el día 20 de junio de 2006

pues si, si sirve esto, eh!!

 


Re: Re: Re: color de letra del boton
Enviado por ocruz el día 9 de diciembre de 2003

A mi no me funciona el codigo de baltasar quisiera que me explicara un poco mas

 
Re: Re: Re: Re: color de letra del boton
Enviado por Baltasar el día 9 de diciembre de 2003

Tal vez no los estés usando de la forma apropiada:

Has de poner en un módulo (por si no lo sabes, en la zona donde agregas los formularios te da la opción de crear módulos) y dentro de ese módulo el código que expuse. Luego, cuando quieras cambiar el color del texto de algún botón haces:
SetButtonForecolor Command1.hWnd, RGB(255, 0, 0)

siendo Command1 el nombre del control, y rgb(255,0,0) el color elegido.

Saludos

 
Re: Re: Re: Re: Re: color de letra del boton
Enviado por matamala el día 10 de diciembre de 2003

Decir por otro lado que en las propiedades del command button, la propiedad Style debe de cambiarse a graphical.

 
Re: Re: Re: Re: Re: Re: color de letra del boton
Enviado por Victor el día 10 de diciembre de 2003

Tambien existe un ocx llamado Ariad interface component 1.3. .Se encuentra en C:\WINDOWS\system32\AS-IFce1.ocx
En el hay un control llamado asxToolBotton.
Se puede cambiar el color del texto con la propiedad que dice: "textcolor".

 


Re: Re: Re: Re: Re: color de letra del boton
Enviado por calaceiro el día 11 de diciembre de 2003

nada, yo tb le he intentado, poniendo el codigo en un modulo y luego en el form_load del formulario poniendo setbuttonforecolor command1.hWnd, RGB (255, 0, 0) y tampoco se cambia. por que sera?¿

 
Re: Re: Re: Re: Re: Re: color de letra del boton
Enviado por LLE el día 21 de junio de 2006

Hola el código que propuso Baltasar funciona perfecto. Para que funcione, como dijo, la propiedad Style del Command debe estar en Graphical

saludos


www.recursosvisualbasic.com.ar

 





Re: Re: color de letra del boton
Enviado por nestor el día 24 de abril de 2008

hola matamala, aqui de entrometido busque Sherinad 3D controls, claro el OCX en mi pc y no lo tengo, ojala ubiese la posibilidad de que me lo puedas enviar. De antemano gracias

 



Tienda
Patrocinados
 

Copyright © 1999-2006 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network