powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Три статуса в Checkbox
9 сообщений из 9, страница 1 из 1
Три статуса в Checkbox
    #36170778
Dick Johnson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ситуация такая:
Нужно что бы пользователь мог сам устанавливать одно из трех положений чекбокса:
0 - "нет галочки"
1 - "есть галочка"
2 - "галочка на сером фоне".
И по клику результат писался бы в базу.

Стандартный чекбокс по клику пользователя позволяет ставить только 0 или 1. Либо нужно писать самостоятельную обработку кликов.

MS Forms Checkbox позволяет установить свойство TripleState и тогда пользователь может кликать и видеть один из трех вариантов "нет галочки", "есть галочка" или "галочка на сером фоне". Однако Value самого чекбокса может принимать только одно из двух значений причем не целые, а булевые True или False. И при этом когда устанавливается "галочка на сером фоне" событие Click не

Может кто-то сталкивался с подобной задачей? Можно ли как-то обойтись без написания собственной обработки клика.
...
Рейтинг: 0 / 0
Три статуса в Checkbox
    #36170864
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а среда какая?
...
Рейтинг: 0 / 0
Три статуса в Checkbox
    #36172258
Dick Johnson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proа среда какая? Простое VB приложение. Не VBA , если Вы об этом.
...
Рейтинг: 0 / 0
Три статуса в Checkbox
    #36172887
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dick Johnson,

null пробовали присвоить ?
...
Рейтинг: 0 / 0
Три статуса в Checkbox
    #36172954
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dick JohnsonShocker.Proа среда какая? Простое VB приложение. Не VBA , если Вы об этом.

У меня просто в VB обычный чекбокс из стандартного комплекта имеет три состояния Value. Так что вопрос пока немного не ясен....
...
Рейтинг: 0 / 0
Три статуса в Checkbox
    #36172963
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а, виноват, я не врубился до конца в вопрос
Ну, собственно, сделать свой чекбокс на основе базового - с тремя состояниями по клику пользователя не представляет проблемы....
...
Рейтинг: 0 / 0
Три статуса в Checkbox
    #36176529
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dick JohnsonМожет кто-то сталкивался с подобной задачей? Можно ли как-то обойтись без написания собственной обработки клика.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Sub Check1_Click()
    With Check1
        If .Tag = "1" Then .Value =  2 
        .Tag = .Value
    End With
End Sub

Private Sub Check1_GotFocus()
    Check1.Tag = Check1.Value
End Sub

Но это не есть совсем красиво - третье состояние родного CheckBox-а визуально практически неотличимо от задисабленного... Но тут уж или свой контрол делать или ComboBox юзать...
...
Рейтинг: 0 / 0
Три статуса в Checkbox
    #36176537
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrFНо это не есть совсем красиво - третье состояние родного CheckBox-а визуально практически неотличимо от задисабленного...

Хорошо отличимо, если есть Caption
...
Рейтинг: 0 / 0
Три статуса в Checkbox
    #36177713
Dick Johnson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndrFDick JohnsonМожет кто-то сталкивался с подобной задачей? Можно ли как-то обойтись без написания собственной обработки клика.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Sub Check1_Click()
    With Check1
        If .Tag = "1" Then .Value =  2 
        .Tag = .Value
    End With
End Sub

Private Sub Check1_GotFocus()
    Check1.Tag = Check1.Value
End Sub

Но это не есть совсем красиво - третье состояние родного CheckBox-а визуально практически неотличимо от задисабленного... Но тут уж или свой контрол делать или ComboBox юзать... Вот, спасибо чт онапомнили спро свойство Tag ! Вечно у меня из головы вылетает, начал выкручиваться с переменными формы. А плодить лишние переменные только код засорять.

Мне не очень понравилась изначальная последовательность, по этому сделал с Case-ом что бы было: пустой квадратик - бледная галочка на сером фоне - яркая галочка. Но это уже мои заморочки.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Private Sub Check1_Click()
    With Check1
        Select Case .Tag
            Case  0 
                .Value =  2 
            Case  1 
                .Value =  0 
            Case  2 
                .Value =  1 
        End Select
        .Tag = .Value
    End With
End Sub

Private Sub Check1_GotFocus()
    Check1.Tag = Check1.Value
End Sub

И еще меня немного нервирует, что каждый раз при изменении значения рекурсивно вызывается Check1_Click. Но это тоже не смертельно.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Три статуса в Checkbox
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]