Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Проблемы с Alret и фокусом (http://www.flasher.ru/forum/showthread.php?t=134284)

spacecadet 25.12.2009 15:10

Проблемы с Alret и фокусом
 
Здравствуйте все!
В моем проекте есть форма аторизации пользователя. Я проверяю наличие пользователя в базе данных, соответствие пароля и т.д. - все как обычно. При возникновении ошибок выдаю окошко Alert.show() с сообщением. Примерно так:
Код AS1/AS2:

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.
Код AS3:

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

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


Часовой пояс GMT +4, время: 00:22.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.