Работа С Chechbox

  • Автор темы Mitya
  • Дата начала
M

Mitya

#1
Добрый день.

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

в документе 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")))

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

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 233
18
#2
во втором поле поставить флажок - обновлять значения при обновлении документа
 
M

Mitya

#5
значит в первом не поставил флажен обновлять документ при изменении значения
В Первом стоит : "Обновлять поля при изменении значения" - как я понимаю, это и есть "обновлять документ при изменении значения" + "Разрешить синонимы ключевых слов"
Во Втором стоит: "Обновлять список при обновлении документа" + "Разрешить синонимы ключевых слов"

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

Darker

#6
Первому полю в событие OnChange вставьте:
Код:
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
 
M

Mitya

#7
Первому полю в событие OnChange вставьте:
Код:
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
хм... не понимаю данный код, поэтому такие вопросы:
почему нигде не используется 2-е поле (с флажками), и можно прокомментировать данный код, метод. Спасибо
 
D

Darker

#8
почему нигде не используется 2-е поле (с флажками)
Ошибочка вышла:
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-му полю происходит в момент изменения первого поля
 

nvyush

Lotus team
22.04.2009
2 317
0
#9
во 2-м поле, в "Значении по умолчанию" пишу... @If(1-поле ="";"";@if(1-поле="1";"1":"2":"3":"4":"5";@if(1-поле="2";"1":"2";"3":"4":"5")))

=( не работает...
Перенесите эту формулу в список выбора для второго поля и укажите ему в качестве источника значений "Use formula for choices"
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 809
21
#10
стесняюсь спросить... а второе поле должно быть редактируемым?

Добавлено:
Перенесите эту формулу в список выбора для второго поля и укажите ему в качестве источника значений "Use formula for choices"
Прошу прощения... и что это даст?
 

nvyush

Lotus team
22.04.2009
2 317
0
#11
Прошу прощения... и что это даст?
Я понял, что вопрошающему нужно, чтобы менялся список выбора второго чекбокса при изменении значения первого.
Перечитал, пришёл к выводу, что ему нужно формулу в 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
 
M

Mitya

#12
стесняюсь спросить... а второе поле должно быть редактируемым?
Да, 2-е поле должно быть редактируемым

Добавлено:
Я понял, что вопрошающему нужно, чтобы менялся список выбора второго чекбокса при изменении значения первого.
Перечитал, пришёл к выводу, что ему нужно формулу в 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
немножко не так. Чекбокс имеет постоянные значения (ничего в нем не надо менять). Я хочу, чтобы в зависимости от значения в 1 поле - автоматически проставлялись флажки во 2 поле.
 

nvyush

Lotus team
22.04.2009
2 317
0
#13
немножко не так. Чекбокс имеет постоянные значения (ничего в нем не надо менять). Я хочу, чтобы в зависимости от значения в 1 поле - автоматически проставлялись флажки во 2 поле.
Внимательно прочитайте мой предыдущий пост до конца.
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 809
21
#14
Да, 2-е поле должно быть редактируемым

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

Либо вариант на скрипте для OnChange все того же первого поля:
Код:
	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
 

Мыш

Lotus team
12.02.2008
1 099
10
#15
Кажись, "значение по умолчанию" не перевычисляется при обновлении документа - или я не прав? Если прав, тогда - как и сказал уважаемый nvy - в Input Translation 1-го поля добавить код, выставляющий значение 2-го поля.
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 809
21
#16
Кажись, "значение по умолчанию" не перевычисляется при обновлении документа - или я не прав? Если прав, тогда - как и сказал уважаемый nvy - в Input Translation 1-го поля добавить код, выставляющий значение 2-го поля.
Вычисляется если поле Computed B)
Ну в общем тут наверное только через OnChange и получится.
Ну либо рекалк документа
 

KingGLEB

Active member
08.05.2008
30
0
#17
И все таки есть способ проще.
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 нет.
 

VladSh

начинающий
Lotus team
11.12.2009
1 276
6
#18
хм... не понимаю данный код, поэтому такие вопросы:
Чтобы понимать элементарный код, читайте мануалы и книги. По разработке в 7-й версии Domino Designer полно книг в сети.
Уважайте чужое время.

P.S. Я вообще за то, чтобы такие, RTFM'ные, темы удалять, т.к. 100 раз об одном и том же, а толку для форума ноль.