Как я могу написать код «Если я нажму« отмена »в диалоговом окне, диалоговое окно закроется, и поле ничего не будет отображать.»? - PullRequest
1 голос
/ 25 февраля 2020

Извините, мое утверждение слишком длинное ...

У меня есть форма, форма имеет кнопку и поле: Имя кнопки и имя поля причина отслеживания .

если я нажму на кнопку, появится окно опций (имя поля опций - askme). Среди опций есть опция, имя которой называется "other" , и пользователь может написать другую. причина отслеживания.

Если я выберу «другое», то появится диалоговое окно для записи причины другого отслеживания. Если я что-то напишу в диалоговом окне (пример: тест), поле покажет test, и диалоговое окно закроется. Если я нажму «отменить» в диалоговом окне, диалоговое окно закроется, и в поле ничего не отобразится.

Ниже приведен код кнопки:

data(0) = "New vendor"
data(1) = "More than tracked amount"  
data(2) = "Change vendor"
data(3) = "other"
askme = ws.prompt(PROMPT_OKCANCELLIST,"Track reason","Please choose the reason..." , data(0) , data())
If askme = "" Then
   Call uipr.FieldSetText("TRACK_MARK" ,"")
   uipr.Refresh
   Exit Sub
Else
   If askme = data(0) Or askme = data(1) Or askme = data(2) Then
      Call uipr.FieldSetText("TRACK_REASON" , askme + username(0) + " " + Cstr(temp_servertime) + ")" )
   Else
      Call ws.DialogBox("TrackComments" , True , True , False , False , False , False , "Please enter other reason..." ,  , True , False)
      Call uipr.FieldSetText("TRACK_REASON" , "(" + uipr.FieldGetText("ANOTHER_REASON") + username(0) + " " + Cstr(temp_servertime) + ")" )
   End If
End If

А теперь мой вопрос ... Как мне написать код "Если я нажму" отмена "в диалоговом окне, диалоговое окно закроется, и поле ничего не покажет." ? Поскольку проблема здесь:

Call ws.DialogBox("TrackComments" , True , True , False , False , False , False , "Please enter other reason..." ,  , True , False)
Call uipr.FieldSetText("TRACK_REASON" , "(" + uipr.FieldGetText("ANOTHER_REASON") + username(0) + " " + Cstr(temp_servertime) + ")" )

Теперь я нажимаю кнопку «Отмена», диалоговое окно закрывается, но поле отображается (пример: (Ariel 2020/02/25 02:20: 00 вечера)).

Как я должен сделать ??????

1 Ответ

3 голосов
/ 25 февраля 2020

Вам необходимо ПРОВЕРИТЬ, если пользователь нажал OK или отмена. На данный момент вы этого не делаете.

Измените свой код следующим образом:

Dim ok as Variant
ok = ws.DialogBox("TrackComments" , True , True , False , False , False , False , "Please enter other reason..." ,  , True , False)
If ok then
  Call uipr.FieldSetText("TRACK_REASON" , "(" + uipr.FieldGetText("ANOTHER_REASON") + username(0) + " " + Cstr(temp_servertime) + ")" )
Else
  Call uipr.FieldSetText("TRACK_REASON" , "" )
End If

Кроме того, я бы предложил использовать внутренний класс NotesDocument для задания текста, а затем вы можете сделать поле "TRACK_REASON" вычисленным (формула : @ThisValue), и пользователь не может редактировать его напрямую. Это невозможно при использовании внешнего интерфейса NotesUIDocument.

Тогда ваш код будет:

If ok then
  Call uipr.Document.ReplaceItemValue("TRACK_REASON" , "(" + uipr.Document.GetItemValue("ANOTHER_REASON")(0) + username(0) + " " + Cstr(temp_servertime) + ")" )
Else
  Call uipr.Document.ReplaceItemValue("TRACK_REASON" , "" )
End If
...