Работа С Chechbox

Тема в разделе "Lotus - Программирование", создана пользователем Mitya, 15 июл 2012.

  1. Mitya

    Mitya Well-Known Member

    Регистрация:
    13 июн 2012
    Сообщения:
    111
    Симпатии:
    0
    Добрый день.

    Подскажите, как правильно реализовать...

    в документе 2 поля...
    1-ое - поле со списком:
    всё | 1
    2 верхних флажка | 2
    3 нижних флажка | 3

    2-е набор флажков:
    первый | 1
    второй | 2
    третий | 3
    четвертый | 4
    пятый | 5

    Хочу, чтобы при выборе значения в 1-м поле, автоматически проставлялись флажки:
    в свойствах 1 поля поставил "Обновлять поля при обновлении значения"
    во 2-м поле, в "Значении по умолчанию" пишу... @If(1-поле ="";"";@if(1-поле="1";"1":"2":"3":"4":"5";@if(1-поле="2";"1":"2";"3":"4":"5")))

    =( не работает...
     
  2. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    во втором поле поставить флажок - обновлять значения при обновлении документа
     
  3. Mitya

    Mitya Well-Known Member

    Регистрация:
    13 июн 2012
    Сообщения:
    111
    Симпатии:
    0
    ставлю... не работает... B)
     
  4. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    значит в первом не поставил флажен обновлять документ при изменении значения
     
  5. Mitya

    Mitya Well-Known Member

    Регистрация:
    13 июн 2012
    Сообщения:
    111
    Симпатии:
    0
    В Первом стоит : "Обновлять поля при изменении значения" - как я понимаю, это и есть "обновлять документ при изменении значения" + "Разрешить синонимы ключевых слов"
    Во Втором стоит: "Обновлять список при обновлении документа" + "Разрешить синонимы ключевых слов"

    В "значение по умолчанию" 2-го поля... @If(1-поле="1";"1";"")... B) не работает
     
  6. Darker

    Darker Гость

    Первому полю в событие OnChange вставьте:
    Код (LotusScript):
    Const FORMULA={ temp:=@If(1-поле ="";"";@if(1-поле="1";"1":"2":"3":"4":"5";@if(1-поле="2";"1":"2";"3":"4":"5")));
    @SetField("1-поле"; temp)}

    Dim ws as New NotesUIWorkspace
    Dim t as Variant

    t=Evaluate(FORMULA, ws.CurrentDocument.Document)
    а также в свойствах (3-я вкладка) первого поля поставьте галочку напротив Run Exiting/OnChange events after value change
     
  7. Mitya

    Mitya Well-Known Member

    Регистрация:
    13 июн 2012
    Сообщения:
    111
    Симпатии:
    0
    хм... не понимаю данный код, поэтому такие вопросы:
    почему нигде не используется 2-е поле (с флажками), и можно прокомментировать данный код, метод. Спасибо
     
  8. Darker

    Darker Гость

    Ошибочка вышла:
    Const FORMULA={ temp:=@If(1-поле ="";"";@if(1-поле="1";"1":"2":"3":"4":"5";@if(1-поле="2";"1":"2";"3":"4":"5")));
    @SetField("2-поле"; temp)}


    Смысл в том, что присваивание значения 2-му полю происходит в момент изменения первого поля
     
  9. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Перенесите эту формулу в список выбора для второго поля и укажите ему в качестве источника значений "Use formula for choices"
     
  10. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    стесняюсь спросить... а второе поле должно быть редактируемым?

    Добавлено:
    Прошу прощения... и что это даст?
     
  11. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Я понял, что вопрошающему нужно, чтобы менялся список выбора второго чекбокса при изменении значения первого.
    Перечитал, пришёл к выводу, что ему нужно формулу в Input Translation первого поля:
    @If(@ThisValue ="";""; @ThisValue="1"; FIELD ПОЛЕ2 := "1":"2":"3":"4":"5"; @ThisValue="2"; FIELD ПОЛЕ2 := "1":"2"; @ThisValue="3"; FIELD ПОЛЕ2 := "3":"4":"5");
    @ThisValue
     
  12. Mitya

    Mitya Well-Known Member

    Регистрация:
    13 июн 2012
    Сообщения:
    111
    Симпатии:
    0
    Да, 2-е поле должно быть редактируемым

    Добавлено:
    немножко не так. Чекбокс имеет постоянные значения (ничего в нем не надо менять). Я хочу, чтобы в зависимости от значения в 1 поле - автоматически проставлялись флажки во 2 поле.
     
  13. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Внимательно прочитайте мой предыдущий пост до конца.
     
  14. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Ну в общем похоже что ты что-то не так делаешь. Тебе уже говорили работающие решение:
    это (как ты уже заметил в нем есть ошибки.. но в принципе логика понятна)

    Либо вариант на скрипте для OnChange все того же первого поля:
    Код (LotusScript):
        Dim ws As New NotesUIWorkspace 
    Dim doc As NotesDocument

    Set doc = ws.CurrentDocument.Document

    doc.test2 = ""

    If doc.test1(0) = "1" Then
    doc.test2 = Arrayappend(doc.test2, "1")    
    doc.test2 = Arrayappend(doc.test2, "2")    
    doc.test2 = Arrayappend(doc.test2, "3")    
    doc.test2 = Arrayappend(doc.test2, "4")    
    doc.test2 = Arrayappend(doc.test2, "5")    
    End If

    If doc.test1(0) = "2" Then
    doc.test2 = Arrayappend(doc.test2, "1")    
    doc.test2 = Arrayappend(doc.test2, "2")    
    End If

    If doc.test1(0) = "3" Then
    doc.test2 = Arrayappend(doc.test2, "3")    
    doc.test2 = Arrayappend(doc.test2, "4")    
    doc.test2 = Arrayappend(doc.test2, "5")    
    End If

    Call ws.CurrentDocument.Refresh
     
  15. Мыш

    Мыш Lotus team
    Lotus team

    Регистрация:
    12 фев 2008
    Сообщения:
    1.019
    Симпатии:
    8
    Кажись, "значение по умолчанию" не перевычисляется при обновлении документа - или я не прав? Если прав, тогда - как и сказал уважаемый nvy - в Input Translation 1-го поля добавить код, выставляющий значение 2-го поля.
     
  16. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Вычисляется если поле Computed B)
    Ну в общем тут наверное только через OnChange и получится.
    Ну либо рекалк документа
     
  17. KingGLEB

    KingGLEB Active Member

    Регистрация:
    8 май 2008
    Сообщения:
    30
    Симпатии:
    0
    И все таки есть способ проще.
    field1 - поле со списком. У него установлен параметр "Refresh fields on keyword change" ("Обновлять поля при изменении значения") + "Allow keyword synonyms" ("Разрешить синонимы ключевых слов").
    field2 - флажки. Параметры: "Editable", "Allow keyword synonyms" ("Разрешить синонимы ключевых слов").
    field3 - флажки. Параметры: "Computed", "Allow keyword synonyms" ("Разрешить синонимы ключевых слов").

    В field2 Input Translation (Преобразование данных), в field3 Value вставляем формулу:
    @If(
    field1="1"; "1":"2":"3":"4":"5";
    field1="2";"1":"2";
    field1="3"; "3":"4":"5";
    @ThisValue
    )

    Результат: при выборе из списка проставляются нужные галочки. В поле field2 их можно изменить, в field3 нет.
     
  18. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Чтобы понимать элементарный код, читайте мануалы и книги. По разработке в 7-й версии Domino Designer полно книг в сети.
    Уважайте чужое время.

    P.S. Я вообще за то, чтобы такие, RTFM'ные, темы удалять, т.к. 100 раз об одном и том же, а толку для форума ноль.
     
Загрузка...
Похожие Темы - Работа Chechbox
  1. Andrey Kha
    Ответов:
    0
    Просмотров:
    23
  2. Hoasker
    Ответов:
    0
    Просмотров:
    64
  3. garri671
    Ответов:
    0
    Просмотров:
    54
  4. lelik200969
    Ответов:
    0
    Просмотров:
    50
  5. Kozolick
    Ответов:
    0
    Просмотров:
    140

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