Практический вопрос
От: Аноним  
Дата: 11.10.11 07:09
Оценка:
Есть форма в Windows приложении. Утверждают, что при нажатии закрыть форму должно происходить
сохранение всех измененных полей в базу данных. Т.е. должно происходтить то же самое что и при нажатии кнопки
Сохранить.
Насколько это правильно? В Windows, например в свойствах диска при нажатии на кнопку все изменения НЕ сохраняются.
Re: Практический вопрос
От: okman Беларусь https://searchinform.ru/
Дата: 11.10.11 07:13
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть форма в Windows приложении. Утверждают, что при нажатии закрыть форму должно происходить

А>сохранение всех измененных полей в базу данных. Т.е. должно происходтить то же самое что и при нажатии кнопки
А>Сохранить.
А>Насколько это правильно? В Windows, например в свойствах диска при нажатии на кнопку все изменения НЕ сохраняются.

Правильно, наверное, использовать флаг IsDirty. При закрытии формы, если есть измененные данные,
по "этикету" надлежит спросить у юзера — сохранить или игнорировать изменения.
Ну и многое зависит от общей концепции. Если форма открывается-закрывается по 20 раз за минуту,
то наверное лучше юзера каждый раз не спрашивать, чтобы не надоедать и не отвлекать от работы.
Re: Практический вопрос
От: Аноним  
Дата: 11.10.11 08:02
Оценка: +1
Закрытие формы — это, по сути, аналог нажатия какой-то кнопки на форме, особенно если эта форма для заполнения БД.
Поэтому логика проста: если на форме есть только одна кнопка "Сохранить", значит при закрытии тоже сохранять. А если две кнопки — "Сохранить" и "Отмена", то при закрытии отменять весь ввод пользователя.

> В Windows, например в свойствах диска при нажатии на кнопку все изменения НЕ сохраняются.

правильно, там есть кнопка "Отмена"
а вот другой пример: Configuration Manager в Visual Studio. Там только одна кнопка Close, и всем понятно, что при закрытии формы все настройки сохраняются.
Re[2]: Практический вопрос
От: ylem  
Дата: 11.10.11 08:58
Оценка: +1
А>а вот другой пример: Configuration Manager в Visual Studio. Там только одна кнопка Close, и всем понятно, что при закрытии формы все настройки сохраняются.

С одной стороны головой я не понимаю, зачем нужно "сохранять" документы в Word. Куда их сохранять? Я вот открыл документ, пишу в нем. Я что, не в документ пишу, что это еще и сохранять надо, что бы оно не потерялось?

С другой стороны опыт поколений работает, и на этой самой "вкладке" в Visual Studio мне всегда не комфортно от того, что нет кнопки Оk.
Re: Практический вопрос
От: grosborn  
Дата: 11.10.11 12:29
Оценка:
> Есть форма в Windows приложении. Утверждают, что при нажатии закрыть форму должно происходить
> сохранение всех измененных полей в базу данных. Т.е. должно происходтить то же самое что и при нажатии кнопки
> Сохранить.
> Насколько это правильно? В Windows, например в свойствах диска при нажатии на кнопку все изменения НЕ сохраняются.

Типовое поведение OK,Save,Accept — изменения сохранять не спрашивая, Cancel,Esc, отдельная большая кнопка Close — изменения не сохранять закрывать не спрашивая. Другое закрытые окна по любым причинам — запрос на сохранение изменений.
Если хранится история, хорошее решение форкать текущее состояние документа, форк и текущую историю сохранять автоматом.
Posted via RSDN NNTP Server 2.1 beta
Забанен на рсдн за применение слова "Маргинал"
Re: Практический вопрос
От: Ромашка Украина  
Дата: 18.10.11 14:34
Оценка:
11.10.2011 10:09, Здравствуйте, Аноним 557 :
> Насколько это правильно?

Насколько я себе представляю, неправильно. Получается "ни рыба, ни мясо".

Есть in-place редактирование, результаты которого сохраняются сразу
после изменений, привнесенных пользователем. Например, когда мы тягаем
кривые в настройках графической карты, это типичный пример такого
редактирования. Кнопка "Сохранить" была бы тут неуместной, ведь
результат редактирования уже применен на объекте и сохранен.

Есть редактирование, которое "оторвано" от результата. То есть мы
сначала редактируем, валидируем результат и только потом принимаем
решение о сохранении или отказе. В таком случае результат сохраняется по
команде пользователя. При закрытии такого редактирования обычно
спрашивают "сохранять?" "не сохранять?" и "отменять закрытие?".

Другие изыски меня, как пользователя, вгоняют в ступор. Если на форме
есть кнопка "Сохранить" это второй случай и софтина должна вопрошать
меня при закрытии о том, какое действие ей совершить, если такой кнопки
нет, я подразумеваю что это in-place и данные сохраняются сразу, а не
при закрытии (тем более у меня открытые формы могут неделями висеть).
Posted via RSDN NNTP Server 2.1 beta


Всё, что нас не убивает, ещё горько об этом пожалеет.
Re: Практический вопрос
От: Кодт Россия  
Дата: 16.11.11 08:48
Оценка: 9 (1)
Здравствуйте, Аноним, Вы писали:

А>Есть форма в Windows приложении. Утверждают, что при нажатии закрыть форму должно происходить

А>сохранение всех измененных полей в базу данных. Т.е. должно происходтить то же самое что и при нажатии кнопки
А>Сохранить.
А>Насколько это правильно? В Windows, например в свойствах диска при нажатии на кнопку все изменения НЕ сохраняются.

В разных средах — разные традиции.
Винды и KDE — изменения в форме применяются явно, по Ok/Apply. GTK (Gnome, XFCE) — изменения применяются мгновенно (конечно, если свойства независимые). Как там в MacOS — не помню.

Так что, если исходить из принципа наименьшего удивления, — то сделать Ok/Cancel (может быть, Apply/Ok/Cancel), и на [x] реагировать, как на Cancel.
Чуть большее удивление вызовет форма с единственной кнопкой Ok ("а как мне отменить ошибочные изменения?").
Наконец, форма с единственной кнопкой Close (она же [x]) — вызовет первый раз удивление ("а в какой момент изменения переданы?"), а в остальные — раздражение (либо "чёрт, как откатить?", если изменения моментальные; либо "да!да!сохранить!", если появится диалог подтверждения).
Минус явных кнопок — визуальный шум. Зато полное понимание, гармония и подвластность пользователю.
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.