Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Закрытие окна крестиком :)
|
|||
|---|---|---|---|
|
#18+
Только не смейтесь - у меня вопрос по закрытию окна. Обнаружил давеча, что большинство моих юзеров считают закрытие окна по нажатию на крестике - нормальной операцией в результате которой все внесенные изменения должны быть сохранены. В отличие от нажатия кнопки Cancel. Я будучи в полной уверенности, что нажатие крестика - то же самое, что и кнопка Cancel, не обрабатываю сию ситаевину. А теперь вниманиеЮ знатоки - вопрос: где же правда? И стоит ли определять как юзер закрыл окно - через крестик или по Cancel и вести себя по разному. Или достаточно поставить на QueryUnload запрос "сохранить изменения али нет"? Не хочется отслеживать в каждой форме изменения по каждому полю. Много кода. Может кто подскажет более красивое решение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2004, 13:20 |
|
||
|
Закрытие окна крестиком :)
|
|||
|---|---|---|---|
|
#18+
Все что ты хотел сделать в кнопке Cancel, следует делать в событии выгрузки формы, а в Cancel следует поместить только одну функцию - Unload. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2004, 13:27 |
|
||
|
Закрытие окна крестиком :)
|
|||
|---|---|---|---|
|
#18+
Yuriy GoodzТолько не смейтесь - у меня вопрос по закрытию окна. Обнаружил давеча, что большинство моих юзеров считают закрытие окна по нажатию на крестике - нормальной операцией в результате которой все внесенные изменения должны быть сохранены. В отличие от нажатия кнопки Cancel. Я будучи в полной уверенности, что нажатие крестика - то же самое, что и кнопка Cancel, не обрабатываю сию ситаевину. А теперь вниманиеЮ знатоки - вопрос: где же правда? И стоит ли определять как юзер закрыл окно - через крестик или по Cancel и вести себя по разному. Или достаточно поставить на QueryUnload запрос "сохранить изменения али нет"? Не хочется отслеживать в каждой форме изменения по каждому полю. Много кода. Может кто подскажет более красивое решение? Открываем Word, редактируем документ, жмем на X, Word переспрашивает "сохранять изменения ?" Так что, увы... Но, ИМХО вам нужно "поставить на QueryUnload запрос "сохранить изменения али нет"? - это как простой вариант. Как более сложный - таки отслеживать изменения по контролам, считать некий CRC и на основании его определять спрашивать о сохранении изменений или нет. В принципе в подсчете CRC нет ничего особо сложного. Пишется некий метод, куда передается сама форма. В методе происходит обход по всем контролам и если они редактируемы - высчитывается некоторая контрольная сумма. Сценарий примерно такой: Загрузили форму m_lngCRC = CalculateCRC(Me) QueryUnload IF CalculateCRC(Me) <> m_lngCRC THEN MsgBox "Сохранить изменения ?" END IF Save (там где вы сохраняете) m_lngCRC = CalculateCRC(Me) Конечно в реализации CalculateCRC есть трудности. Рекурсивность из-за контейнеров, некоторые проблемы с радиокнопками, но в целом - не так сложно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2004, 13:36 |
|
||
|
Закрытие окна крестиком :)
|
|||
|---|---|---|---|
|
#18+
Спасибо. Посмотрев на QueryUnload повынимательнее обнаружил там переменную UnloadMode. Типа сразу понятно, куда юзер тыкнул. Таким образом пожно именно на нажатие крестика задавать дурацкие вопросы. Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Dim i As Byte If UnloadMode = vbFormControlMenu Then i = MsgBox("Вы действительно хотите выйти?", vbQuestion + vbYesNo) If i <> vbYes Then Cancel = True End If End Sub Конечно для полного саксеса и сатисфая нужно все-таки анализировать были изменения или нет..так что вариант с использованием CRC - классная идея. Только я не до конца ею проникся. Алексей, можно подробнее? Или какой-нибудь существующий пример CalculateCRC? Чего там все-таки вычислять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 10:39 |
|
||
|
Закрытие окна крестиком :)
|
|||
|---|---|---|---|
|
#18+
я бы при запуске формы1 сделал ее клон , а при выходе из формы1 через for each обошел клон, например, все текстовые поля и сравнил бы их значения со значениями на рабочей форме(форма1). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 11:15 |
|
||
|
Закрытие окна крестиком :)
|
|||
|---|---|---|---|
|
#18+
Yuriy Goodz..так что вариант с использованием CRC - классная идея. Только я не до конца ею проникся. Алексей, можно подробнее? Или какой-нибудь существующий пример CalculateCRC? Чего там все-таки вычислять? Готового примера под рукой нет. Смысл такой : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Фактически рассчитывается контрольная сумма, на основе данных контролов, лежащих на форме. В методе CalculateCrcForString нужно выполнить расчет контрольной суммы для строки. В интернете есть алгоритмы. Вот пример расчета CRC для файлов. Не проверял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 13:13 |
|
||
|
|

start [/forum/topic.php?fid=60&tid=2168758]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 358ms |

| 0 / 0 |
