我怎样才能在对话框中写代码 "If i click "cancel",对话框将关闭并且该字段将不显示任何内容。"?

How can i write the code "If i click "cancel" in the dialog box,the dialog box will close and the field will show nothing."?

对不起,我的发言太长了...

我有一个表单,该表单有一个按钮和 field:Button 名称和字段名称是 跟踪原因

如果我点击按钮,会出现一个选项框(选项框名称是askme)。在选项中,有一个选项,名字叫"other" , 供用户填写其他曲目原因。

如果我选择"other",然后会显示一个对话框来写入其他曲目reason.If我在对话框中写入一些东西(例如:测试),该字段将显示测试,并且对话框将 close.If 我在对话框中单击 "cancel",对话框将关闭并且该字段将不显示任何内容。

按钮代码如下:

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

现在,我的问题是...我如何编写代码“如果我在对话框中单击 "cancel",对话框将关闭并且该字段将不显示任何内容."? 因为问题出在这里:

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) + ")" )

现在,我单击 "cancel",对话框将关闭,但该字段将显示(示例:( Ariel 2020/02/25 02:20:00PM))。

我该怎么办?????

您需要检查用户是否按下了“确定”或“取消”。目前你不这样做。

像这样更改您的代码:

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

此外我建议使用后端class NotesDocument来设置文本,然后你可以让"TRACK_REASON"-字段计算(公式:@ThisValue)并且用户不能编辑它直接地。这在使用 frontendclass 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