Закрыть форму без запроса на сохранение

  • Автор темы 777DEN777
  • Дата начала
7

777DEN777

#1
Есть форма которая служит для ввода параметров по котором формируется отчет, например пользователь указывает период.
Соответственно, если поля отредактированы при закрытии формы выходит сообщении о сохранении документа ("Do you want to save this new document?"), как игнорировать это сообщение и закрыть форму без изменений.

Хотелось так же услышать мнение: верно использовать данный метод для указания параметров при формировании отчета?
 

Omh

Lotus team
04.07.2007
2 210
1
#2
Ну цеж бойан
Поле "SaveOptions" со значением "0" и ничего спрашиватся не будет.
 

nvyush

Lotus team
22.04.2009
2 317
0
#4
Есть форма которая служит для ввода параметров по котором формируется отчет, например пользователь указывает период.
Соответственно, если поля отредактированы при закрытии формы выходит сообщении о сохранении документа ("Do you want to save this new document?"), как игнорировать это сообщение и закрыть форму без изменений.
Из хелпа: поле SaveOptions; "0" - запрос на сохранение не выдаётся, документ не сохраняется (даже принудительно), "1" - документ сохраняется без запроса.
От ВЕЛИКИХ ГУРУ - если SaveOptions не "0" и не "1", а, например, "00" - запрос на сохранение не выдаётся, документ можно сохранить.
Лучше SaveOptions делать CFD.


а где его прописать, в каком событии формы?
На форме нарисовать :)
 

nvyush

Lotus team
22.04.2009
2 317
0
#7
В самом верху собственно формы добавляем пустую строку, на неё добавляем поле, именуем SaveOptions, тип - техт, computed for display (CFD), на предпоследней вкладке свойств ставим флажки скрытия во всех клиентах, чтоб глаза не мозолило.
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 233
18
#9
777DEN777
а чем для ввода параметров вас диалогбокс не устроил?
 
7

777DEN777

#10
В самом верху собственно формы добавляем пустую строку, на неё добавляем поле, именуем SaveOptions, тип - техт, computed for display (CFD), на предпоследней вкладке свойств ставим флажки скрытия во всех клиентах, чтоб глаза не мозолило.
спасибо, буду знать ;)

...работает

а чем для ввода параметров вас диалогбокс не устроил?
честно говоря не в курсе... ;)

можно подробней?
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 233
18
#12
честно говоря не в курсе...

можно подробней?
удобсво диалогбокса как раз в том что это окно над окном, и его размеры как и его все кнопки - настраиваемы
 
7

777DEN777

#13
удобсво диалогбокса как раз в том что это окно над окном, и его размеры как и его все кнопки - настраиваемы
Не пойму как его открыть, в хелпе нашел пример
Код:
Sub Click(Source As Button)
Dim workspace As New NotesUIWorkspace
Call workspace.DialogBox _
( "policy", True, True, True, True, _
False, False, "Policy" )
End Sub
выходит ошибка "DialogBox cannot be used in this context; a document must be selected"
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 233
18
#14
777DEN777
используете форму "policy" которая у вас судя по всему лишь для респонсов

Код:
Syntax
flag = notesUIWorkspace.DialogBox( form$ , [autoHorzFit] , [autoVertFit] , [noCancel] , [noNewFields] , [noFieldUpdate] , [readOnly] , [title$] , [notesDocument] , [sizeToTable] , [noOkCancel] , [okCancelAtBottom] )

3.	This script brings up a dialog box with the category and subject of the first document in the "By Category" view.
Sub Click(Source As Button)
Dim db As NotesDatabase
Dim s As New NotesSession
Dim workspace As New NotesUIWorkspace
Dim view As NotesView
Dim doc As NotesDocument
Set db = s.CurrentDatabase
Set view = db.GetView( "By Category" )
Set doc = view.GetFirstDocument
Call workspace.DialogBox _
("Dialog Box", True, True, False, False, False, _
False, "Dialog Box", doc)
Call doc.save (True, False)
End Sub
 
L
#15
В продолжение темы... почему у меня, при том, что в Dialogbox-форме поля те же, что и в доке, по которому она вызвана, непосредственно ПОСЛЕ диалога значения в доке не меняются? (А после переоткрытия новые, как ни в чем не бывало)...
Код:
	Dim wfdocGlobal As NotesDocument
Dim col As NotesDocumentCollection
Set col = db.unprocessedDocuments
Set wfdocGlobal = col.GetFirstDocument
If UIWrkSpc.DialogBox("DateTimeForAction", True, True, False, False,False, False,"Определите дату, время и участников встречи с кандидатом") Then
If (Cstr(WFDocGlobal.MeetDate(0))="" Or Cstr(WFDocGlobal.MeetTimeB(0))="" Or Cstr(WFDocGlobal.MeetParticipants(0))="") Then
(вот сюда ВСЕГДА заходит, хотя все поля потом оказываются вполне заполненными...) ((( 
WFID_ErrorName = {Не заполнено одно из полей (дата, время, участники). Переход не будет выполнен}
WFID_ErrorCode = 1
Exit Sub

End If
End If
Что я делаю не так??? Суть на самом деле в проверке заполненности полей после диалога, при этом диалог ОБЯЗАТЕЛЬНО должен быть по доку, потому что в одном из полей - MV по другим полям, по-другому их я не добуду, КАК?
 

hosm

* so what *
18.05.2009
2 442
6
#16
Может, добавить параметр документа в вызов UIWrkSpc.DialogBox?
или где-то рефреш (RefreshParentNote) из диалога не вызывается?
 

hosm

* so what *
18.05.2009
2 442
6
#18
если кастомизированная кнопка ОК - обязательно.

Добавлено: у вас вроде стандартная, должно само обновлять... попробуйте WFDocGlobal добавить в диалогбокс.