Что-то среднее между Check Box и Radio Button

  • Автор темы Автор темы serg1y
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
S

serg1y

Есть Какой-то доступ. Его можно предоставить и лишить, а можно не трогать.

Удобно было бы в форме отобразить это двумя чекбоксами - "предоставить" и "лишить", а если - "не трогать" - то не выбирать ни один из них. Но тогда нужно, чтобы нельзя было выбрать два одновременно.
Если делать с помощью radio button - то не получается сделать, чтобы ничего не было выбрано. Можно сделать три варианта (флажка) - предоставить, лишить, не трогать, но с двумя как-то красивее.

Получилось сделать, но не очень красиво. Делаю два чекбокса в событие Entering каждого прописываю код - если в соеднем птичка стоит - uidoc.GotoPrevField или uidoc.GotoNextField, т.е. не дается зайти в этот чекбокс. Но, может, можно как-то покрасивее сделать, а то код привязан к названиям чекбоксов, а если их сотня - долго каждый настраивать?
 
<!--QuoteBegin-serg1y+2:04:2007, 18:48 -->
<span class="vbquote">(serg1y @ 2:04:2007, 18:48 )</span><!--QuoteEBegin-->Но, может, можно как-то покрасивее сделать, а то код привязан к названиям чекбоксов, а если их сотня - долго каждый настраивать?
[snapback]60983" rel="nofollow" target="_blank[/snapback]​
[/quote]Наверное, надо в одном чекбоксе сделать варианты выбора по формуле
@if(myChoice="";"Предоставить":"Лишить";myChoice)
А в свойствах обновления проставить, чтоб формулы пересчитывались после изменения чекбокса и чтоб варианты пересчитывались каждый раз при пересчете формул.
 
Если делать так как вы говорите, то при выборе одного из вариантов, второй просто пропадает, а это не очень подходит.
Придумал такой вариант - в событие input translation чекбокса "field1" с двумя вариантами выбора добавляю формулу
@SetField("field1";@If( @Contains(field1;"Предоставить")&@Contains(field1;"Лишить");"";field1))
Но при попытке выбора двух вариантов одновременно, все обнуляется, а лучше если бы при выборе второго флажка обнулялся только первый, и наоборот. И если бы избавиться от упоминания названия поля, чтобы универсально было, например, вместо названия конкретного поля указать текущее активное поле.
Может, кто подскажет, как это реализовать.
 
Может логичней сделать один radio button, но с тремя значениями "по умолчанию":"предоставить":"лишить". Где признак "по умолчанию" является ничего не деланием.
 
Спасибо oshmianski, уже почти работает как надо, только при попытке выбора двух вариантов одновременно - все обнуляется, а лучше если бы при выборе второго флажка обнулялся только первый, и наоборот (как в radio button).
Olejah, radio button c тремя вариантами будет смотреться хуже.
 
serg1y, если нам необходима красота, то можно сделать след. образом.
Нарисовать checkBox, а если мы боремся за красоту, то можно нарисовать checkBox со своим дизайном.
Вложить в форму как image-ресурс.
На рисунок наложить HotSpot`ы, на HotSpot повесить свой скрипт.

"Сложность" состоит в том, что на каждый отмеченный checkBox, нужно рисовать свой рисунок.
 
Olejah, и реально сделать один такой image-ресурс с HotSpot`ами, а потом копировать его неограниченное число раз без изменения кода?
 
Olejah, и реально сделать один такой image-ресурс с HotSpot`ами, а потом копировать его неограниченное число раз без изменения кода?

serg1y, вопрос не понят.

Куда необходимо копировать неограниченное число раз?
 
Напимер, я сделал один check box прописал два варианта выбора - Предоставить, Лишить. Потом сделал таблицу на 100 строк и два столбца. В левый столбец вписал сто названий, а в правый в каждую строку скопировал ранее созданный check box, и мне не нужно заходить в каждый чекбокс и менять код (например, провисывать название этого чекбокса, а оно у каждого разное) и все работает быстро и красиво, ну пока, не совсем красиво. Я готов потратить время и сделать один универсальный image-ресурс с HotSpot-ом, но не хочется менять код в каждом из ста image-ресурсов с HotSpot-ом.
Можно ли такое сделать?
 
Есть Какой-то доступ. Его можно предоставить и лишить, а можно не трогать.

Удобно было бы в форме отобразить это двумя чекбоксами - "предоставить" и "лишить", а если - "не трогать" - то не выбирать ни один из них. Но тогда нужно, чтобы нельзя было выбрать два одновременно.
......

А нельзя ли поподробнее о самой задаче, чего предоставить? чего лишить? может задачу можно решить иначе, а то тут все топчатся от исходного варианта "чекбокса"
 
Напимер, я сделал один check box ...
...
Можно ли такое сделать?

Если я правильно понял, то мой совет такой( возможно покажется банальным):
Выписываешь код от твоего "старого" checkBox`a в библиотеку в виде функции со входными необходимыми параметрами( типа имя checkBox`a).
Рисуешь checkBox, расставляешь HotSpot`ы, на них вешаешь вызов ф-ии из библиотеки.
и Copy->Past`ом вставляешь в небходимые места дизайна, меняя при этом параметры в вызфваемой ф-ии.

Здесь если и требуется изменение, то оно минимально.
 
Спасибо всем за помощь. Получилось сделать как и хотел:
1. В чекбоксе - формула выбора -
Код:
@If(@ThisValue="";"Предоставить | 1":"Лишить | 2";@If(@Max(@ThisValue)="1";"Предоставить | 1":"Лишить | 2";@If(@Max(@ThisValue)="2";"Предоставить | 3":"Лишить | 2";@If(@Max(@ThisValue)="3";"Предоставить | 3":"Лишить | 4";@If(@Max(@ThisValue)="4";"Предоставить | 5":"Лишить | 4";@If(@Max(@ThisValue)="5";"Предоставить | 5":"Лишить | 6";@If(@Min(@ThisValue)="1"&@Max(@ThisValue)="6";"Предоставить | 1":"Лишить | 2";@If(@Max(@ThisValue)="6";"Предоставить | 1":"Лишить | 6";"Предоставить | 5":"Лишить | 6"))))))))
2. В событии input translation
Код:
@If(@thisvalue!="1":"6";@Do(@SetField(@ThisValue;@Max(@ThisValue)));@SetField(@ThisValue;"1"))
3.Поставить две галочки в свойствах чекбокса, касаемые Refresh.

Согласен, - громоздко, но работает именно так, как надо. Может, кто предложит еще проще.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!