Отправляет email-рассылки с помощью сервиса Sendsay

Screen reader JAWS for Windows Russian

[JFWRus] Тотал, jaws и коректное чтение выделенности.

Доброго времени суток всем джозистам!
Вот что я только что обнаружил. Помните, Михаил Духонин несколько дней
назад писал о некоректном чтении выделенности файлов в тотале? Так
вот, всё до банальности намного проще. Большинство из нас пользуются
разными русификаторами jaws, а в джозе есть файлик colors.ini, в котором даются
названия цветов. В одних русификациях эти названия переведены, а в
других нет. Из-за этого и вся путаница. В моих скриптах красный цвет
обозначался по-английски словом "red" а в русификации красный цвет
записан словом "красный". Я заменил в скриптах тотала все слова "red"
словом "красный" и всё заработало красиво и без ошибок. Это я сделал в
челюстях 4.51 с русским интерфейсом. Затем этот же
эксперимент для уверенности проделал в версии 7.0. Там в файле
colors.ini красный цвет обозначался словом "red". Я скопировал только
что исправленные скрипты от 4.51 в седьмой jaws и, как Вы уже
догадались, они опять работают неправильно с выделением. Заменил
обратно в скриптах слово "красный" на "red" и всё работает. Так что,
как говорится, ларчик просто открывался. А мы ломаем голову, хотя
вроде скрипты написаны грамотно, и компилируются без ошибок. Буду рад,
если эта информация кому-то пригодится.

Ответить   Иван Штефуряк Thu, 11 May 2006 23:39:47 +0300 (#547634)

 

Ответы:

Здравствуйте,

[... описание эффекта перевода поскипано...]

Иван, есть два пути более универсального решения этой проблемы.
1. Насаженный сверху не очень корректный, но работающий. Завести глобальную
переменную с любым именем, затем например в функции Void Function
AutoStartEvent () добавить такую конструкцию":
Вариант А.
If RedColor == "" then
let RedColor = iniReadString ("Colors","255000000","","colors.ini")
EndIf
Вариант Б.
If RedColor == "" then
let RedColor = GetColorName (255000000) ; здесь необходимо проверить
значение чиселки, мне просто лень самому проверять, идея итак ясна.
EndIf
затем сравнивать вместо абсолютного значения со значением переменной
RedColor. Здесь я принял утверждение, что RedColor - это Ваша глобальная
переменная, которая была Вами заведена. Если Вы завели переменную с другим
именем, то внесите коррективы в предыдущие утверждения. Ещё раз подчеркну,
что такой способ не особо корректен, хотя и работоспособен.

2. Убрать вызов функции GetColorName, оставив только вызов GetColorText.
Соответственно необходимо будет поменять тип переменной, которой
присваивается значение на int. Далее сравнивать данную переменную со
цифровым значением, вместо строкового. Цифровое значение не зависит ни от
каких файлов и даёт полностью корректное значение в любой ситуации, даже при
отсутствии файла colors.ini.

До свидания.

***
Это сообщение No3864
было разослано для 306 участников дискуссионного листа
[JFWRus] Re: Тотал, jaws и коректное чтение выделенности.

Ответить   Thu, 11 May 2006 13:05:49 -0700 (#547833)