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

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

serg1y

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

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

Получилось сделать, но не очень красиво. Делаю два чекбокса в событие Entering каждого прописываю код - если в соеднем птичка стоит - uidoc.GotoPrevField или uidoc.GotoNextField, т.е. не дается зайти в этот чекбокс. Но, может, можно как-то покрасивее сделать, а то код привязан к названиям чекбоксов, а если их сотня - долго каждый настраивать?
 
E

Elena Nefedova

<!--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)
А в свойствах обновления проставить, чтоб формулы пересчитывались после изменения чекбокса и чтоб варианты пересчитывались каждый раз при пересчете формул.
 
S

serg1y

Если делать так как вы говорите, то при выборе одного из вариантов, второй просто пропадает, а это не очень подходит.
Придумал такой вариант - в событие input translation чекбокса "field1" с двумя вариантами выбора добавляю формулу
@SetField("field1";@If( @Contains(field1;"Предоставить")&@Contains(field1;"Лишить");"";field1))
Но при попытке выбора двух вариантов одновременно, все обнуляется, а лучше если бы при выборе второго флажка обнулялся только первый, и наоборот. И если бы избавиться от упоминания названия поля, чтобы универсально было, например, вместо названия конкретного поля указать текущее активное поле.
Может, кто подскажет, как это реализовать.
 
O

Olejah

Может логичней сделать один radio button, но с тремя значениями "по умолчанию":"предоставить":"лишить". Где признак "по умолчанию" является ничего не деланием.
 
S

serg1y

Спасибо oshmianski, уже почти работает как надо, только при попытке выбора двух вариантов одновременно - все обнуляется, а лучше если бы при выборе второго флажка обнулялся только первый, и наоборот (как в radio button).
Olejah, radio button c тремя вариантами будет смотреться хуже.
 
O

Olejah

serg1y, если нам необходима красота, то можно сделать след. образом.
Нарисовать checkBox, а если мы боремся за красоту, то можно нарисовать checkBox со своим дизайном.
Вложить в форму как image-ресурс.
На рисунок наложить HotSpot`ы, на HotSpot повесить свой скрипт.

"Сложность" состоит в том, что на каждый отмеченный checkBox, нужно рисовать свой рисунок.
 
S

serg1y

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

Olejah

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

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

Куда необходимо копировать неограниченное число раз?
 
S

serg1y

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

Oksana

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

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

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

Olejah

Напимер, я сделал один check box ...
...
Можно ли такое сделать?

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

Здесь если и требуется изменение, то оно минимально.
 
S

serg1y

Спасибо всем за помощь. Получилось сделать как и хотел:
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.

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

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