Prerequisites |
VB5 or VB6. |
|
While
the subclassing method detailed in WM_DRAWITEM: Set Command Button ForeColor
provides one way to create a
command button with coloured captions, this method takes a different and novel position to achieve virtually the same effect. Posted in the
newsgroups by Klaus H. Probst, his method uses a normal VB checkbox - yes checkbox - to achieve the same effect, without APIs. This method
has the added bonus of correctly colouring the text when a picture is assigned to a button. In the above-mentioned example, the TextOut API
coordinates would need to be changed to accommodate the displacement of the caption by the image. |
|
BAS
Module Code |
None. |
|
|
|
Form
Code |
|
To a form, add a control array of VB Checkbox buttons
(Check1(0) through Check1(9)) and a control array of option buttons (Option1(0) through Option1(9)), as well as an exit button (Command1). Set
the Style property of all check box buttons to 1-Graphical, and add any images, if desired. Add the following code: |
|
Option Explicit
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Copyright ©1996-2011 VBnet/Randy Birch, All Rights Reserved.
' Some pages may also contain other copyrights by the author.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Distribution: You can freely use this code in your own
' applications, but you may not reproduce
' or publish this code on any web site,
' online service, or distribute as source
' on any media without express permission.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'non-vb colours
Const vbDarkRed = &H90&
Const vbDarkBlue = &H900000
'consts for the Check1 button control array
Const nDefault = 0
Const nRed = 1
Const nGreen = 2
Const nBlue = 3
Const nYellow = 4
Const nMagenta = 5
Const nCyan = 6
Const nWhite = 7
Const nDkRed = 8
Const nDkBlue = 9
Private Sub Form_Load()
'create the coloured buttons
Check1(nRed).Forecolor = vbRed
Check1(nGreen).Forecolor = vbGreen
Check1(nBlue).Forecolor = vbBlue
Check1(nYellow).Forecolor = vbYellow
Check1(nMagenta).Forecolor = vbMagenta
Check1(nCyan).Forecolor = vbCyan
Check1(nWhite).Forecolor = vbWhite
Check1(nDkRed).Forecolor = vbDarkRed
Check1(nDkBlue).Forecolor = vbDarkBlue
'set the default BackColor
Option1(0).Value = True
End Sub
Private Sub Check1_Click(Index As Integer)
'when the click event occurs, which normally
'makes the check button toggle its
'presses/unpressed state, mimic the
'action of a standard command button by
'cancelling the pressed state.
If Check1(Index).Value = vbChecked Then
Check1(Index).Value = vbUnchecked
'Button is back to 'normal', so
'place your action code here....
End If
End Sub
Private Sub Command1_Click()
Unload Me
End Sub
Private Sub Option1_Click(Index As Integer)
Dim clrref As Long
Select Case Index
Case 0: clrref = vbButtonFace
Case 1: clrref = vbApplicationWorkspace
Case 2: clrref = vbBlack
Case 3: clrref = vbWhite
Case 4: clrref = vbRed
Case 5: clrref = vbGreen
Case 6: clrref = &H900000
Case 7: clrref = vbCyan
Case 8: clrref = vbMagenta
Case 9: clrref = vbYellow
End Select
Check1(nRed).BackColor = clrref
Check1(nGreen).BackColor = clrref
Check1(nBlue).BackColor = clrref
Check1(nYellow).BackColor = clrref
Check1(nMagenta).BackColor = clrref
Check1(nCyan).BackColor = clrref
Check1(nWhite).BackColor = clrref
Check1(nDkRed).BackColor = clrref
Check1(nDkBlue).BackColor = clrref
End Sub |
|
Comments |
Save the project and start with full compile to check or
errors. The check buttons will be coloured as shown in the illustration, and selecting option buttons will show the effect of the
colour in combination with a non-standard background colour. |
|