• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
Всем привет!
Помогите плиз... нужно отловить момент когда пользователь при закрытии вормы на вопрос "Сохранить?" нажимает кнопку "Нет"
Не соображу что-то как это сделать :(
 
M

medin84

Думаю можно попробовать так.
в querysave в какую нибудь переменную в случае нажатия да присвоить значение
допустим click="yes"
тоесть если нажать на нет при запросе на сохранение событие querysave не срабатывает
значит в queryclose значение click будет пустое
 
K

Kee_Keekkenen

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

RonTermit

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

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
про SaveOptions знаю... оно мне не подходит
но не хочется с этим играться.
Надо попробовать отловить системное событие
буду пробовать как говорит Kee_Keekkenen
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
так... то что хотел сделал.... просто оказывается при закрытии формы сначала идет событие QueryClose

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

Akupaka

нету, только перебором, на сколько мне известно...
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
перебор полей это хорошо... но не хочется B)
но похоже придется ;)
 
K

Kee_Keekkenen

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

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

Akupaka

Агент на изменение/добавление документа.

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

NickProstoNick

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

Medevic

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

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

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
Omh
Дело в том, при использовании DialogBox возникает только событие QueryClose, а QuerySave + не возникает вообще

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

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

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

Medevic

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

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Да здесь всё очевидно. :(
Лично я никогда не использую одну и ту же форму и для диалога, и просто для работы.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!