powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / OptionGroup может при одном Button снимать выбор
7 сообщений из 7, страница 1 из 1
OptionGroup может при одном Button снимать выбор
    #36221148
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!

Сделал класс на основе OptionGroup и у меня такая проблема, что при единственном пункте если сначала его выбрать - выберется, но повторный клик по нему убирает точку, т.е. снимает "выбранность опции". Получается эффект чекбокса и это мешает!

В чем м.б. дело? Как устранить сей эффект?

в классе ничего нет - просто создал класс на основе OptionGroup и все, впрочем стандарный OptionGroup с одной кнопкой ведет себя точно так же. В свойствах ничего такого не нашел и в хелпах тоже - я понимаю что опг создан для выбора когда он есть, но иногда бывает что его нет - дизаблить его тогда, чтоли...

вфп90

спасибо
...
Рейтинг: 0 / 0
OptionGroup может при одном Button снимать выбор
    #36221281
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какой смысл щелкать по элементу, если он не должен ничего выполнять? Естесственно, его надо дизейблить. Причем, дизейблить не одиночный переключатель, а всю группу. Тогда одиночный переключатель будет выглядеть как активный

Ну, можно еще в OptionGroup.InteractiveChange() тупо прописать

Код: plaintext
This.Value =  1 

Значение изменится, но в InteractiveChange() изменится снова на 1.

Наконец, еще один вариант - это добавить второй элемент, но сделать его невидимым и не активным.
...
Рейтинг: 0 / 0
OptionGroup может при одном Button снимать выбор
    #36221697
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо за подсказки!

Но теперь я вообще в полном недоумении...
Итак, сделал следующее - если опция одна, все равно ставлю Value=0, но в InteractiveChange следующее:
Код: plaintext
1.
2.
3.
4.
   * для вариантов когда в списке тока  1  запись
   IF this.ButtonCount= 1 
	  this.Enabled = .F.
	  this.Buttons( 1 ).Enabled = .T.
   ENDIF
вторая строчка необходима т.к. у OptionGroup есть метод enabled_assign, который выставляет всем опциям такой же Enabled как и у родителя, т.е.
Код: plaintext
1.
2.
3.
LPARAMETERS tlEnabled
THIS.Enabled = m.tlEnabled
this.SetAll('Enabled',m.tlEnabled)
т.е. как только я нажму на единственный батон OptionGroup становится недоступным, а опция в нем - выглядит доступной, но т.к. OptionGroup недоступен, то и опция в нем - тоже. Но только фигушки! Прекрасно себе отрабатывает дальше как чекбокс! Причем уже проверял многократно - Enabled точно .F., но опция в нем при этом щелкается! Убираю косметическую строчку this.Buttons(1).Enabled = .T. - тогда все нормально, но дизаблиццо и опция в нем. Издевательство какое-то... тупо все равно ему Enabled он или нет...
...
Рейтинг: 0 / 0
OptionGroup может при одном Button снимать выбор
    #36221701
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
переделал все под идею со второй невидимой кнопкой - все нормально стало! Все таки получается что игра в OptionGroup.Enabled приводит к глюкам. Хочет OptionGroup минимум 2 опции и все тут :)
...
Рейтинг: 0 / 0
OptionGroup может при одном Button снимать выбор
    #36221998
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как мне кажется, Вы сами придумали себе дополнительные проблемы и теперь их героически преодолеваете.

1. Какой смысл выставлять Value = 0, если после первого же выбора вы запрещаете этот выбор менять? Т.е. поставить Value = 1 можно, а вернуть в Value = 0 - нельзя. Ну и смысл ставить Value = 0?

2. Какой смысл выполнять операцию "у OptionGroup есть метод enabled_assign, который выставляет всем опциям такой же Enabled как и у родителя", если блокировка контейнера и так блокирует все вложенные элементы? Если для того, чтобы потом прочитать значение, то надо делать не assign, а access, который как раз и предназначен для чтения значений. Там и анализировать Enabled-родителя.
...
Рейтинг: 0 / 0
OptionGroup может при одном Button снимать выбор
    #36222070
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) смысл такой:
- при выборе 1 из предлагаемых пунктов осуществляется автоматический переход на следующую страницу (организовано на PageFrame без заголовков). Если сделать автовыбор, то на ините, а тогда программа падает, т.к. переход происходит в инитеконтрола, т.е. когда форма еще не инициализировалась.
Поэтому, даже если пункт всего 1 его надо явно выбрать вручную чтобы перейти на следующий шаг. Кроме того юзер дложен понимать что происходит, что выбрано и что соответственно от него требуется.
По сути пункт бывает один только на ранней стадии, когда юзеры просто еще не повносили в соотв. таблицы разнообразия.

2) смысл в том чтобы юзер явно видел что контрол недоступен, т.к. при Enabled=.F. контрол выглядит доступным и в понимании юзера - глючит.
...
Рейтинг: 0 / 0
OptionGroup может при одном Button снимать выбор
    #36222319
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, а недоступным пункт я пытался сделать для того, чтобы нельзя было снять выбор вернувшись на шаг назад.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / OptionGroup может при одном Button снимать выбор
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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