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

Тема в разделе "Lotus - Программирование", создана пользователем serg1y, 2 апр 2007.

Статус темы:
Закрыта.
  1. serg1y

    serg1y Гость

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

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

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

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

    serg1y Гость

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

    oshmianski Гость

    Для: serg1y
     
  5. Olejah

    Olejah Гость

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

    serg1y Гость

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

    Olejah Гость

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

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

    serg1y Гость

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

    Olejah Гость

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

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

    serg1y Гость

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

    Oksana Lotus team
    Lotus team

    Регистрация:
    10 янв 2006
    Сообщения:
    330
    Симпатии:
    0
    А нельзя ли поподробнее о самой задаче, чего предоставить? чего лишить? может задачу можно решить иначе, а то тут все топчатся от исходного варианта "чекбокса"
     
  12. Olejah

    Olejah Гость

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

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

    serg1y Гость

    Спасибо всем за помощь. Получилось сделать как и хотел:
    1. В чекбоксе - формула выбора -
    Код (Text):
    @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
    Код (Text):
    @If(@thisvalue!="1":"6";@Do(@SetField(@ThisValue;@Max(@ThisValue)));@SetField(@ThisValue;"1"))
    3.Поставить две галочки в свойствах чекбокса, касаемые Refresh.

    Согласен, - громоздко, но работает именно так, как надо. Может, кто предложит еще проще.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей