Снегопат

Обсуждение Снегопата
Текущее время: 22 ноя 2024, 18:29

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
СообщениеДобавлено: 04 мар 2013, 15:44 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
В теле скрипта пишешь:
Код:
events.connect(windows, "onDoModal", SelfScript.self)

это подключает перехват появления модальных диалогов.
Теперь обработчик:
Код:
function onDoModal(dlgInfo)
{
    if(dlgInfo.stage == afterInitial && dlgInfo.caption == "Конфигуратор")
    {
        // Проверим, а не мессадж ли бокс нужный нам это
        // В нем первый контрол - это надпись с текстом
        var text = dlgInfo.form.getControl(0).value
        if(text && text.length && text.indexOf('Не удалось соединиться с хранилищем конфигурации.') == 0)
        {
            // Найдем кнопку с заголовком "Да"
            for(var i = 1, c = dlgInfo.form.controlsCount; i < c; i++)
            {
                if(ЗначениеВСтрокуВнутр(dlgInfo.form.getControl(i).props.getValue("Заголовок"))== '{"#",87024738-fc2a-4436-ada1-df79d395c424,\n{1,"#","Да"}\n}')
                {
                    // Установим ей доступность в false
                  dlgInfo.form.getControl(i).props.setValue("Доступность", false)
                  break;
                }
            }
        }
    }
}

Примерно так.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 мар 2013, 15:02 
Не в сети

Зарегистрирован: 25 мар 2012, 10:50
Сообщения: 22
А что такое props?


Вложения:
05-03-2013 16-01-48.jpg
05-03-2013 16-01-48.jpg [ 24.59 КБ | Просмотров: 10029 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 мар 2013, 15:16 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Версия снегопата какая?
props - это недавно добавилось.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 мар 2013, 15:34 
Не в сети

Зарегистрирован: 25 мар 2012, 10:50
Сообщения: 22
orefkov писал(а):
Версия снегопата какая?
props - это недавно добавилось.

Ой да, не обновил. Теперь на props не ругается.
Ругается в dlgInfo.form.getControl(i).props.getValue("Заголовок") на неверный индекс


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 мар 2013, 15:38 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Заключи обращение к props.getValue("Заголовок") в try{ ...код... }catch(e){}


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 мар 2013, 15:45 
Не в сети

Зарегистрирован: 20 дек 2011, 10:31
Сообщения: 588
Откуда: Украина, Запорожье
Попробуй с помощью отладки посмотреть. Вот пример как я отлаживаю http://www.screencast.com/t/CEJlf6fa


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 мар 2013, 15:49 
Не в сети

Зарегистрирован: 25 мар 2012, 10:50
Сообщения: 22
orefkov писал(а):
Заключи обращение к props.getValue("Заголовок") в try{ ...код... }catch(e){}

Ну так ошибок не показывает, но и условие ни разу не выполняется


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 мар 2013, 15:53 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Показывай весь код


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 мар 2013, 15:55 
Не в сети

Зарегистрирован: 25 мар 2012, 10:50
Сообщения: 22
.


Последний раз редактировалось Deon 06 мар 2013, 00:56, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 мар 2013, 00:55 
Не в сети

Зарегистрирован: 25 мар 2012, 10:50
Сообщения: 22
Так и не смог понять, почему параметром getValue() не может быть "Заголовок", но, к примеру "Доступность" он понимает.
Пока сделал некрасиво - перебором всех свойств каждого контрола формы. Работает, но хотелось бы таки сделать хорошо.
Код:
events.connect(windows, "onDoModal", SelfScript.self)

function onDoModal(dlgInfo)
{
    if(dlgInfo.stage == afterInitial && dlgInfo.caption == "Конфигуратор")
    {
        // Проверим, а не мессадж ли бокс нужный нам это
        // В нем первый контрол - это надпись с текстом
        var text = dlgInfo.form.getControl(0).value
        if(text && text.length && text.indexOf('Не удалось соединиться с хранилищем конфигурации.') == 0)
        {
            // Перебор всех элементов формы
            for(var i = 1, c = dlgInfo.form.controlsCount; i < c; i++)
            {
                var ctr = dlgInfo.form.getControl(i)

                // Перебор всех свойств элемента
                for(var idx = 0, cnt = ctr.props.count; idx < cnt; idx++)
                {
                    var v = toV8Value(ctr.props.getValue(idx))

                    // Кнопка "Да"
                    if( v.toStringInternal() == '{"#",87024738-fc2a-4436-ada1-df79d395c424,\n{1,"#","Да"}\n}')
                    {
                        // Установим кнопке доступность в false
                        ctr.props.setValue("Доступность", false)
                        break;
                    }
                }
            }
        }
    }
}


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу Пред.  1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB