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

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

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

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

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

У меня просто в VB обычный чекбокс из стандартного комплекта имеет три состояния Value. Так что вопрос пока немного не ясен....
...
Рейтинг: 0 / 0
01.09.2009, 15:38
    #36172963
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Три статуса в Checkbox
а, виноват, я не врубился до конца в вопрос
Ну, собственно, сделать свой чекбокс на основе базового - с тремя состояниями по клику пользователя не представляет проблемы....
...
Рейтинг: 0 / 0
03.09.2009, 12:35
    #36176529
AndrF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Три статуса в Checkbox
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
03.09.2009, 12:37
    #36176537
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Три статуса в Checkbox
AndrFНо это не есть совсем красиво - третье состояние родного CheckBox-а визуально практически неотличимо от задисабленного...

Хорошо отличимо, если есть Caption
...
Рейтинг: 0 / 0
03.09.2009, 19:34
    #36177713
Dick Johnson
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Три статуса в Checkbox
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
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Три статуса в Checkbox / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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