Re: Общие принципы организации GUI для редактирования модели данных
От: maxkar  
Дата: 07.08.13 14:51
Оценка:
Здравствуйте, _hum_, Вы писали:

__>Далее,

__>1) забираем информацию, введенную пользователем;
__>2) проверяем ее на совместимость в модели (чтобы не нарушить целостность последней);
__>3) если все ОК, то обновляем модель и обновляем представление, если нет, то выдаем какое-то сообщение о невозможности.

Не обязательно. Подобная проверка может выполняться прямо в процессе ввода. Нужно смотреть на конкретные требования.

__>Тут вроде все ясно. Но! В большинcтве графических элементов ввода информации (текстовых полей, лист-контролов, таблиц) таких явных разделений на этапы инициации, ввода данных и подтверждения завершения ввода нет.


Правильно. Нет.
1. Компонент отображает только часть данных. "Текстовое поле" — это всего лишь часть сложного объекта данных. Может быть ситуация, когда нужно валидировать содерижмое нескольких полей вместе и сообщение о валидации не может быть привязано к отдельному визуальному компоненту.
2. Способов отображения невалидного состояния много. Можно отображать в самом контроле (или подсвечивать только неверную часть). Можно рядом с контролом. Можно вообще в отдельной области уведомлений (я так делал в одном приложении, в случае ошибок выводятся ошибки, в остальном — некоторая диагностика).
3. Для большинства компонентов характерно наличие невалидных данных в процессе ввода.

__>Как быть в таких случаях с проверкой на целостность?

Зависит от приложения. Вариантов масса:
1. Выполнять валидацию "на лету" и выводить нужные подсказки.
2. Выполнять валидацию только по нажатию кнопки и подсвечивать "Невалидные" поля.
3. Выполнять валидацию по клику и выводить информацию об ошибках в отдельном окне.
4. Выполнять валидацию по клику. При этом пытаться сделать автокоррекцию в окне информации об ошибках (или в основном окне). Это актуально, если выводится форма "подтверждения". Там можно вывести информацию о наличии автокоррекций и самих коррекциях. Например, можно исправить даты "начала/конца действия ограничения" если они заданы в неверном порядке.

Данные очень разные и решения нужно подбирать к конкретным вводимым данным и сценариям пользователей. И от самого приложения тоже много зависит. В веб и "толстом клиенте" могут использоваться разные подходы (из-за ограничений архитектуры или используемых библиотек).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.