PDA

Просмотр полной версии : Проблемы с Alret и фокусом


spacecadet
25.12.2009, 15:10
Здравствуйте все!
В моем проекте есть форма аторизации пользователя. Я проверяю наличие пользователя в базе данных, соответствие пароля и т.д. - все как обычно. При возникновении ошибок выдаю окошко Alert.show() с сообщением. Примерно так:
switch (checkUser(txtLogin.text, txtPassword.text, dataArr))
{
case "NO_USER": //нет такого логина в базе
Alert.show("Пользователь " + txtLogin.text + " не зарегестрирован в системе.","Ошибка авторизации");
txtLogin.text = "";
txtPassword.text = "";
stage.focus = txtLogin;
break;
case "WRONG_PASS": //пароль забыл
Alert.show("Неверный пароль","Ошибка авторизации");
txtPassword.text = "";
stage.focus = txtPassword;
break;
case "SUCCESSFUL_LOGIN": //нормальный вход
initAdminCollections();
currentState="AdminUser";
txtLogin.text = "";
txtPassword.text = "";
break;
}

Проблема в том, что после появления сообщения об ошибке, фокус ввода остается в текстовых полях и там можно что-нибудь писать. Получается что Alert.show не отображается не модально. Есть способ это победить? Заранее спасибо всем.

BeDLiNt
25.12.2009, 19:09
Фантастика какая-то, алерт по дефолту модальный:
The Alert control is modal, which means it will retain focus until the user closes it.
Вы там точно значение Alert.NONMODAL не подписываете?)

spacecadet
28.12.2009, 11:31
Нет, ничего не прописываю, все по дефолту. Ощущение такое, что после появления окна сразу же выполняется код после Alert.show, поскольку после нажатия кнопки ОК очистки текстового поля не происходит. Хотя по логике этот код должен выполнятся после нажатия на кнопку!

BeDLiNt
29.12.2009, 16:11
Конечно код после Alert.show будет выполняться сразу. Если вы хотите сделать какое-то действие после нажатия вам надо сделать слушатель события для Alert.
Alert.show("message", "title", Alert.OK | Alert.CANCEL, this, alertHandler, null, Alert.OK);

...

protected function alertHandler(event:CloseEvent):void
{
if (event.detail == Alert.OK)
trace("ok");
}

spacecadet
29.12.2009, 19:41
Спасибо огромное, разобрался! Тема закрыта.