События формы

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 802
21
#1
Всем привет!
Помогите плиз... нужно отловить момент когда пользователь при закрытии вормы на вопрос "Сохранить?" нажимает кнопку "Нет"
Не соображу что-то как это сделать :(
 

medin84

Well-known member
27.06.2007
106
0
#2
Думаю можно попробовать так.
в querysave в какую нибудь переменную в случае нажатия да присвоить значение
допустим click="yes"
тоесть если нажать на нет при запросе на сохранение событие querysave не срабатывает
значит в queryclose значение click будет пустое
 

Kee_Keekkenen

Well-known member
05.09.2006
639
4
#3
непонятно что это за кнопка и где она..
а.. это системная хрень вроде не отлавливается..
у формы есть события Querysave и Queryclose,
Querysave срабатывает каждый раз при сохранении документа через интерфейс,
Queryclose срабатывает при закрытии формы документа..
соответственно в случае, если пользователь нажимает Нет, то Querysave не срабатывает и Queryclose срабатывает,
т.о. на логике этих событий можно что-то построить.. ну, то что вы хотите..
 
R

RonTermit

#4
отловить результат окна нельзя ....зато можно запретить егго появление...создать в документе поле SaveOptions и утановить парметр в 0 тогда документ будет не возможно сохранить из интерфейса пользователя....
принудительно сохранение на кнопке будет выглядеть следующим образом ......
doc.SaveOptions=1
Call uidoc.Save
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 802
21
#5
про SaveOptions знаю... оно мне не подходит
но не хочется с этим играться.
Надо попробовать отловить системное событие
буду пробовать как говорит Kee_Keekkenen
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 802
21
#6
так... то что хотел сделал.... просто оказывается при закрытии формы сначала идет событие QueryClose

Ну да это не столь важно... вопрос теперь в другом.... есть ли какой-то метод или событие о том что документ модифицировался (не путать с EditMode ) ???
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#7
нету, только перебором, на сколько мне известно...
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 802
21
#10
перебор полей это хорошо... но не хочется B)
но похоже придется ;)
 

Kee_Keekkenen

Well-known member
05.09.2006
639
4
#12
есть маленькая возможность определить редактировались ли поля документа при условии, что не выполнялся рефреш формы ни пользователем, ни одним из изменных полей..
тогда при сохранении документа свойство Notesuidocument.ModifiedSinceSaved имеет значение true .. в хелпе почему-то этого свойства нет, вероятно оно новое.. да, это работает с семерки..

метод не надежный..
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#13
Агент на изменение/добавление документа.

Или вы про что? :(
про старую добрую задачу :) как определить были ли внесены изменения в открытый документ. например, СавеОпшинс у тебя =1, и ты хочешь самостоятельно выдать запрос пользователю, нужно ли изменить изменения
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 802
21
#14
SaveOptions - не подходит. И запрос тоже... я изгалился.. и одной формой пользуюсь как обычно и как шаблон для DialogBox. По еэто му лишние вопросы пользователю из DialogBox не приемлемы. Нужно какое-то универсальное средство прозрачное для пользователя в любом варианте
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#16
SaveOptions - не подходит. И запрос тоже... я изгалился.. и одной формой пользуюсь как обычно и как шаблон для DialogBox. По еэто му лишние вопросы пользователю из DialogBox не приемлемы. Нужно какое-то универсальное средство прозрачное для пользователя в любом варианте
Может разделить на две формы? Эту форму запихнуть в подформу. Создать еще одну форму. В обе формы запихнуть подформу. Одна формы для диалога, другая - обычная.

Что-то я намудрил. Можно обойтись одной формой и одной подформой.
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 802
21
#17
Omh
Дело в том, при использовании DialogBox возникает только событие QueryClose, а QuerySave + не возникает вообще

Если просто пользоваться формой без DialogBox Source.DialogBoxCancelled не возникает вообще

Отсюда вопрос.... как сохранять документ если он модифицирован или создан. Под созданием понимаю заполненине хоть одного поля

Medevic
просто не хочется плодить формы :( и следить за несколькими... да и в форме этой много всевозможных проверок... конечно все это можно вынести в библиотеку... вобщем я думаю над этим
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#18
NickProstoNick
Поэтому я и предлагаю всё перенести в подформу(subform). Чтобы всё общее было в одном месте. В диалоге используешь подформу без вопросов пользователю. Иначе используешь форму с внедренной подформой. Там же делаешь вопросы пользователю.
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#20
Да здесь всё очевидно. :(
Лично я никогда не использую одну и ту же форму и для диалога, и просто для работы.