[644] | 1 | #require <Classes/ActiveBasic/Windows/UI/ButtonBase.ab>
|
---|
[642] | 2 |
|
---|
| 3 | Namespace ActiveBasic
|
---|
| 4 | Namespace Windows
|
---|
| 5 | Namespace UI
|
---|
| 6 |
|
---|
[644] | 7 | Enum CheckState
|
---|
| 8 | Unchecked = BST_UNCHECKED
|
---|
| 9 | Checked = BST_CHECKED
|
---|
| 10 | Indeterminate = BST_INDETERMINATE
|
---|
| 11 | End Enum
|
---|
| 12 |
|
---|
[642] | 13 | /*!
|
---|
| 14 | @date 2008/07/13
|
---|
| 15 | @brief チェックボックスを表すクラス。
|
---|
| 16 | @author Egtra
|
---|
| 17 | */
|
---|
| 18 | Class CheckBox
|
---|
| 19 | Inherits ButtonBase
|
---|
| 20 | Protected
|
---|
| 21 | Override Sub GetCreateStruct(ByRef cs As CREATESTRUCT)
|
---|
| 22 | Super.GetCreateStruct(cs)
|
---|
| 23 | cs.style Or= BS_AUTOCHECKBOX
|
---|
| 24 | End Sub
|
---|
| 25 | Public
|
---|
| 26 | /*!
|
---|
| 27 | @brief チェックされているかどうかの取得。
|
---|
| 28 | @retval true チェックされているもしくは第3状態
|
---|
| 29 | @retval false チェックされていない
|
---|
| 30 | */
|
---|
| 31 | Const Function Checked() As Boolean
|
---|
| 32 | Checked = SendMessage(BM_GETCHECK) > 0
|
---|
| 33 | End Function
|
---|
| 34 |
|
---|
| 35 | /*!
|
---|
| 36 | @brief チェックされているかどうかの設定。
|
---|
| 37 | @param[in] check チェックを入れるならtrue, 外すならfalse。
|
---|
| 38 | */
|
---|
| 39 | Sub Checked(check As Boolean)
|
---|
| 40 | SendMessage(BM_SETCHECK, check As WPARAM, 0)
|
---|
| 41 | End Sub
|
---|
| 42 |
|
---|
| 43 | /*!
|
---|
[644] | 44 | @brief チェック状態の取得
|
---|
| 45 | */
|
---|
| 46 | Const Function State() As CheckState
|
---|
| 47 | Dim ret = SendMessage(BM_GETCHECK)
|
---|
| 48 | /*
|
---|
| 49 | If ret = BST_UNCHECKED Or ret = BST_CHECKED Or ret = BST_INDETERMINATE Then
|
---|
| 50 | State = ret As CheckState
|
---|
| 51 | */
|
---|
| 52 | If ret = BST_CHECKED Then
|
---|
| 53 | State = CheckState.Checked
|
---|
| 54 | ElseIf ret = BST_INDETERMINATE Then
|
---|
| 55 | State = CheckState.Indeterminate
|
---|
| 56 | Else
|
---|
| 57 | State = CheckState.Unchecked
|
---|
| 58 | End If
|
---|
| 59 | End Function
|
---|
| 60 |
|
---|
| 61 | /*!
|
---|
| 62 | @brief チェック状態の設定
|
---|
| 63 | */
|
---|
| 64 | Sub State(state As CheckState)
|
---|
| 65 | SendMessage(BM_SETCHECK, state As WPARAM, 0)
|
---|
| 66 | End Sub
|
---|
| 67 |
|
---|
| 68 | /*!
|
---|
[642] | 69 | @brief クリック時に自動で状態変化するかどうかの取得。
|
---|
| 70 | @retval true 自動変化する
|
---|
| 71 | @retval false 自動変化しない
|
---|
| 72 | */
|
---|
| 73 | Function AutoCheck() As Boolean
|
---|
[644] | 74 | AutoCheck = autoCheck(Style)
|
---|
[642] | 75 | End Function
|
---|
| 76 |
|
---|
| 77 | /*!
|
---|
| 78 | @brief クリック時に自動で状態変化するどうかの設定。
|
---|
| 79 | @param[in] check 自動で変化させるならTrue、そうでないならFalse。
|
---|
| 80 | */
|
---|
| 81 | Sub AutoCheck(autoCheck As Boolean)
|
---|
| 82 | If autoCheck Then
|
---|
| 83 | Style = Style Or BS_AUTOCHECKBOX
|
---|
| 84 | Else
|
---|
| 85 | Style = (Style And (Not BS_AUTOCHECKBOX)) Or BS_CHECKBOX
|
---|
| 86 | End If
|
---|
| 87 | End Sub
|
---|
[644] | 88 |
|
---|
| 89 | /*!
|
---|
| 90 | @brief 3状態目を使用するどうかの設定。
|
---|
| 91 | @param[in] useThreeState 3状態目を使用するならTrue、そうでないならFalse。
|
---|
| 92 | */
|
---|
| 93 | Sub ThreeState(useThreeState As Boolean)
|
---|
| 94 | Dim oldStyle = This.Style
|
---|
| 95 | Dim style = oldStyle And (Not 7)
|
---|
| 96 | Dim buttonType = oldStyle And 7
|
---|
| 97 | If useThreeState = threeState(buttonType) Then
|
---|
| 98 | Exit Sub
|
---|
| 99 | End If
|
---|
| 100 | If useThreeState Then
|
---|
| 101 | If buttonType = BS_AUTOCHECKBOX Then
|
---|
| 102 | style Or= BS_AUTO3STATE
|
---|
| 103 | Else
|
---|
| 104 | style Or= BS_3STATE
|
---|
| 105 | End If
|
---|
| 106 | Else
|
---|
| 107 | If buttonType = BS_AUTO3STATE Then
|
---|
| 108 | style Or= BS_AUTOCHECKBOX
|
---|
| 109 | Else
|
---|
| 110 | style Or= BS_CHECKBOX
|
---|
| 111 | End If
|
---|
| 112 | End If
|
---|
| 113 | Style = style
|
---|
| 114 | End Sub
|
---|
| 115 |
|
---|
| 116 | /*!
|
---|
| 117 | @brief 3状態目を使用しているかどうかの取得。
|
---|
| 118 | */
|
---|
| 119 | Function ThreeState() As Boolean
|
---|
| 120 | ThreeState = threeState(Style)
|
---|
| 121 | End Function
|
---|
| 122 | Private
|
---|
| 123 | Static Function threeState(style As DWord) As Boolean
|
---|
| 124 | style And= 7
|
---|
| 125 | Return style = BS_3STATE Or style = BS_AUTO3STATE
|
---|
| 126 | End Function
|
---|
| 127 |
|
---|
| 128 | Static Function autoCheck(style As DWord) As Boolean
|
---|
| 129 | style And= 7
|
---|
| 130 | Return (style = BS_AUTOCHECKBOX Or style = BS_AUTO3STATE)
|
---|
| 131 | End Function
|
---|
[642] | 132 | End Class
|
---|
| 133 |
|
---|
| 134 | End Namespace 'UI
|
---|
| 135 | End Namespace 'Widnows
|
---|
| 136 | End Namespace 'ActiveBasic
|
---|