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]) — вызовет первый раз удивление ("а в какой момент изменения переданы?"), а в остальные — раздражение (либо "чёрт, как откатить?", если изменения моментальные; либо "да!да!сохранить!", если появится диалог подтверждения).
Минус явных кнопок — визуальный шум. Зато полное понимание, гармония и подвластность пользователю.
Перекуём баги на фичи!
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.
Практический вопрос
От: Аноним  
Дата: 11.10.11 07:09
Оценка:
Есть форма в Windows приложении. Утверждают, что при нажатии закрыть форму должно происходить
сохранение всех измененных полей в базу данных. Т.е. должно происходтить то же самое что и при нажатии кнопки
Сохранить.
Насколько это правильно? В Windows, например в свойствах диска при нажатии на кнопку все изменения НЕ сохраняются.
Re: Практический вопрос
От: okman Беларусь https://searchinform.ru/
Дата: 11.10.11 07:13
Оценка:
Здравствуйте, Аноним, Вы писали:

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

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

Правильно, наверное, использовать флаг IsDirty. При закрытии формы, если есть измененные данные,
по "этикету" надлежит спросить у юзера — сохранить или игнорировать изменения.
Ну и многое зависит от общей концепции. Если форма открывается-закрывается по 20 раз за минуту,
то наверное лучше юзера каждый раз не спрашивать, чтобы не надоедать и не отвлекать от работы.
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


Всё, что нас не убивает, ещё горько об этом пожалеет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.