Login | Register   
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: VB6
Expertise: Intermediate
Dec 30, 2000

Change a CheckBox or OptionButton style at runtime

Visual Basic doesn't let you change the Style property of a CheckBox or an OptionButton control at runtime. However, you can easily do it by manipulating the control's style bit, with the SetWindowLong API function. Here's a routine that does the trick:

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 newValue As Long) As Long

Const GWL_STYLE = (-16)
Const BS_PUSHLIKE = &H1000&

Sub SetButtonStyle(Ctrl As Control, ByVal Graphical As Boolean)
    If Graphical Then
        SetWindowLong Ctrl.hWnd, GWL_STYLE, GetWindowLong(Ctrl.hWnd, _
            GWL_STYLE) Or BS_PUSHLIKE
    Else
        SetWindowLong Ctrl.hWnd, GWL_STYLE, GetWindowLong(Ctrl.hWnd, _
            GWL_STYLE) And Not BS_PUSHLIKE
    End If
    Ctrl.Refresh
End Sub
Using the routine is straightforward. For example, this code changes the style of all the OptionButton controls in the Option1 array

    Dim c As Control
    For Each c In Option1
        SetButtonStyle c, True
    Next
Francesco Balena
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap