Булевы переменные и флажки с тремя состояниями: как лучше всего выполнять преобразование типов? - PullRequest
0 голосов
/ 23 марта 2009

Это в VB6 (может также применяться к VB.net)

CheckBoxes может иметь три состояния (Checked, Unchecked, Greyed).

Но я использую их для установки логических переменных (MuteSound и т. Д.). Это определенно значение, которое имеет только два состояния . К сожалению, Checked и Unchecked не соответствуют значению True / False.

Итак, я не могу иметь:

bMuteSound = ChkMute.value .......... Если bMuteSound, то бла-бла

Два варианта: 1. Принудительно установить значение Boolean для значения / значения Checkbox.value:

bMuteSound = Checkbox.value = Проверено .....

Checkbox.value = ConvertBooleanToCheckBox

Ответы [ 4 ]

4 голосов
/ 23 марта 2009

bMuteSound = abs(chkMute.Value)<br> chkMute.Value = abs(bMuteSound)

1 голос
/ 25 марта 2009

Выглядит достаточно просто для меня:

Dim tsValue As VbTriState

'Conversions
tsValue = -Check1.Value
Check1.Value = -tsValue
0 голосов
/ 23 марта 2009

в общем смысле флажок также может быть неактивен и проверен, таким образом, у вас есть 4 возможных случая, просто используйте 2 логических значения, с точки зрения разделения ваш код обработки не должен ничего знать о флажках и, следовательно, не должен проходить вокруг серого или не серое состояние, а только активное или неактивное состояние.

0 голосов
/ 23 марта 2009

Имеет ли логическая переменная значение по умолчанию? Если это так, то просто не меняйте переменную, если поле отображается серым, и меняйте его на правильное значение, если оно не серое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...