Отмена сохранения формы

LuMee

Well-known member
02.05.2006
477
0
#1
Есть у меня форма. При сохранении онной пользователю выдается диалог (NotesUIWorkspace.DialogBox), который пользователь должен заполнить (так я веду историю изменений документа). При этом я хочу сделать так, чтобы при нажатии "Отмена" в этом диалоге документ не сохранялся, оставаясь открытым в режиме редактирования.
Сохранение у меня могут выполнять два action'а:
Сохранить и закрыть:
Код:
@If(
@IsValid;
@Do(
@Command([FileSave]);
@Command([FileCloseWindow])
);

""
)
и Сохранить:
Код:
@If(
@IsValid;
@Do(
@Command([FileSave]);
@Command([EditDocument]; "0")
);

""
)
На Querysave формы пишу код такого рода:
Код:
Dim doc As NotesDocument
Dim db As NotesDatabase
...
If (юзер сделал то, что надо отразить в истории) Then
Set doc = New NotesDocument(db)
If workspace.DialogBox(..., doc) Then
...
Call doc.Save(True, True)
Else
Continue = False
End If
End If
Проблема заключается в том, что если юзер жмет "Отмену" на диалоге, то, если выполняется Сохранить и закрыть, все равно выдается сообщение, не желаю ли я, мол, сохранить документ. При выполнении Сохранить Notes и вовсе торжественно зависает.
Подскажите, плз, что же я делаю не так?
 

Murtas

Lotus team
11.04.2006
128
0
#2
не знаю про насчет зависает ... но тут сразу бросается в глаза то, что ты можешь не дать сохранить документ в Querysave ... а в кнопке Save and Close после неудачного сохранения пытаешся закрыть. Вот оно и спрашивает хочешь ли ты сохранить ... по сути нужно нужно запретить и закрытие если чего-то не сделано. Поэтому в твоем случае, видно, лучше разделить кнопки Сохранить и Закрыть.
 
R

root

#3
Можно сделать обработку с применением SaveOptions =0
 

LuMee

Well-known member
02.05.2006
477
0
#4
но тут сразу бросается в глаза то, что ты можешь не дать сохранить документ в Querysave ... а в кнопке Save and Close после неудачного сохранения пытаешся закрыть. Вот оно и спрашивает хочешь ли ты сохранить ... по сути нужно нужно запретить и закрытие если чего-то не сделано.
Почему не могу не дать сохранить в QuerySave? Он вроде для того и нужен. Кстати, на QueryClose стоит похожий обработчик (диалогов не показывает, а просто проверяет, что все правильно.. если что - Continue = False). Так что по идее он не должен закрываться в принципе.
 

Murtas

Lotus team
11.04.2006
128
0
#5
... выполняется <!--QuoteBegin-LuMee+11:08:2006, 15:26 -->
<span class="vbquote">(LuMee @ 11:08:2006, 15:26 )</span><!--QuoteEBegin-->@Command([FileSave]);
@Command([FileCloseWindow])
[snapback]42121" rel="nofollow" target="_blank[/snapback]​
[/quote]

и если команда @Command([FileSave]); не сохранила документ, а @Command([FileCloseWindow]) выполняется всегда, то показывается диалог.
 
E

Elena Nefedova

#6
Для Lumee:
Лучший вариант кнопки "Сохранить и закрыть" придумала компания Lotus, когда еще не вошла в IBM:
Код:
@If(@Command([FileSave]); @Command([FileCloseWindow]); @Success)