проверка данных листа свойств - PullRequest
0 голосов
/ 10 июля 2011

Когда пользователь нажимает кнопку «ОК» или «ПРИМЕНИТЬ» на листе свойств и программа определяет, что данные на какой-либо странице являются недействительными, как я могу заставить страницу, содержащую ошибку, отображаться вместе с окном сообщения с описанием ошибки?

В настоящее время процедура, выполняющая проверку, выполняет следующие действия при обработке уведомления PSN_APPLY.

MessageBox (hDlg, "Data must be positive!", "Error", MB_OK);
SetWindowLong (hDlg, DWL_MSGRESULT, PSNRET_INVALID);

Это работает нормально, если в данный момент отображается страница, выполняющая проверку (A), но если какая-то другая страница (B)), появляется окно сообщения с отображаемой страницей (B), а затем, когда на окно сообщения ответили, отображается страница с ошибкой проверки (A).Я думал о том, чтобы установить какой-либо флаг, чтобы, когда эта страница (A) получала уведомление PSN_SETACTIVE, она отображала окно сообщения, но это выглядит довольно странно.

Win32 API в c ++, без MFC, без NET, ничего необычного.* * 1008

1 Ответ

0 голосов
/ 10 июля 2011

Я думаю, что проблема заключается в дизайне вашей проверки и ее презентации.

Правильно ли я считаю, что вы просматриваете свои списки свойств, проверяете их и отображаете окно сообщения, если что-то не так?Конечно, то, что вы засвидетельствовали, произойдет, если я нахожусь на странице свойств 3, и я написал дерьмо в поле на странице свойств 1.

Самое простое решение - при проверке отметить, какая страница свойствполе, о котором идет речь, и установите его активным, если пользователь написал дерьмо в одном из ваших полей.Это кажется самым быстрым из возможных способов.

Кроме того, вместо того, чтобы открывать надоедливое окно сообщения, зарезервируйте место под страницами свойств для отображения текстового (красного или иного) предупреждения о почему , а затем перейдите на соответствующую страницу свойств и выделите нарушающий элемент управления.Ваша подпрограмма валидации может сделать это легко и просто, поскольку она проходит цикл.

Еще лучше, не останавливайтесь на первой ошибке.Одна вещь, которую я НЕНАВИЖУ, это исправление одного поля, которое, как мне кажется, является единственной проблемой, только когда каждый раз, когда я нажимаю «OK» или «SUBMIT», мне говорят, что есть что-то еще, что я пропустил.пройдя лишнюю милю здесь ... переберите ВСЕ элементы управления и добавьте все недопустимые в список.Затем измените цвет фона каждого элемента управления, цвет вкладки и т. Д. Затем пользователь может работать и исправлять, независимо от того, сколько ошибок он или она допустил.

...