|
|
|
Совместимость с NVDA (программой экранного чтения)
|
|||
|---|---|---|---|
|
#18+
Кто-нибудь писал программы на Delphi, совместимые с программами экранного чтения для слабовидящих (например, NVDA)? Возникла проблема с старой программой, написанной на Delphi 7. На форме лежит TLabel с текстом что-то типа "Введите текст", СПРАВА от него лежит TEdit, в которой и надо ввести текст. Расстояние между этими двумя элементами 16 пикселей. Слабовидящий пользователь жалуется, что при использовании NVDA TEdit и TLabel воспринимаются как не связанные друг с другом. Из всей документации по написанию программ для слабовидящих у меня только эта ссылка: https://edn.embarcadero.com/article/33642 Рекомендуют включить TLabel в tab order - это, по-моему, невозможно для TLabel. Рекомендуют использовать TStaticText или TLabeledEdit - для моей программы это не совсем подходит. Главная рекомендация - размещать TEdit справа от TLabel - так и было сделано в моей программе. Кто-нибудь занимался вопросами совместимости программ на Delphi с NVDA? Буду признателен за советы; поделитесь секретами. Каких еще проблем стоит опасаться? (Буду пробовать уменьшить расстояние между элементами окна; если не поможет, попробую заменить TLabel на TStaticText.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 16:51 |
|
||
|
Совместимость с NVDA (программой экранного чтения)
|
|||
|---|---|---|---|
|
#18+
У TLabel свойство FocusControl установлено? Сам TLabel вообще NVDA читается? По идее не должен. Это же картинка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 17:19 |
|
||
|
Совместимость с NVDA (программой экранного чтения)
|
|||
|---|---|---|---|
|
#18+
crossaTLabeledEdit - для моей программы это не совсем подходит.Почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 17:21 |
|
||
|
Совместимость с NVDA (программой экранного чтения)
|
|||
|---|---|---|---|
|
#18+
crossa, NVDA и прочие реадеры используют стандартный "протокол" взаимодействия с элементами управления через UI Automation или ее простую форму Microsoft Active Accessibility. На внутреннем уровне оконному элементу посылается сообщение WM_GETOBJECT с запросом информации о объекте или его детях. Поскольку у TLabel нет своего окна, то вместо него сообщение принимает его родитель. И я не уверен, что Delphi7 знает, как правильно отвечать на сообщение WM_GETOBJECT. Для стандартных элементов управления в Windows есть встроенные механизмы ответа на WM_GETOBJECT. Поэтому самый простой способ сделать программу совместимой с UI Automation - использовать только стандартные контролы. В твоей ситуации проще всего действительно заменить TLabel на TStaticText. В Win10 есть Narrator, можешь посмотреть, как он реагирует на твое окно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 17:35 |
|
||
|
Совместимость с NVDA (программой экранного чтения)
|
|||
|---|---|---|---|
|
#18+
Aniskin, TLabej ни вкоем случае не элемент управления Windows. Это лишь картинка, как сазал _Vasilisk_ А TLabeledEdit это их помесь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 18:00 |
|
||
|
Совместимость с NVDA (программой экранного чтения)
|
|||
|---|---|---|---|
|
#18+
GatorTLabel ни вкоем случае не элемент управления Windows. Вопрос терминологии ) А StaticText - это элемент управления? По msdn-новскому он называется Static Control . A static control is a control that enables an application to provide the user with informational text and graphics that typically require no response. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 18:06 |
|
||
|
Совместимость с NVDA (программой экранного чтения)
|
|||
|---|---|---|---|
|
#18+
AniskinА StaticText - это элемент управления?Да. У него есть HWND ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 18:10 |
|
||
|
Совместимость с NVDA (программой экранного чтения)
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Gator Я не совсем понял. Вы бы не могли процитировать мое конкретное предложение в исходном ответе, которое вы оспариваете, где бы я утверждал, что TLabel является оконным элементом с собственным окном. Я как раз таки утверждал обратное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 18:14 |
|
||
|
Совместимость с NVDA (программой экранного чтения)
|
|||
|---|---|---|---|
|
#18+
AniskinИ я не уверен, что Delphi7 знает, как правильно отвечать на сообщение WM_GETOBJECTПосмотрел в XE3 и Rio. Кастомная обработка WM_GETOBJECT производится только в TCustomActionMenuBar. Так, что даже с TLabeledEdit не взлетит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 18:15 |
|
||
|
Совместимость с NVDA (программой экранного чтения)
|
|||
|---|---|---|---|
|
#18+
Aniskinкоторое вы оспариваете,Я не оспариваю. Я отвечаю на конкретный вопросAniskinА StaticText - это элемент управления? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 18:17 |
|
||
|
Совместимость с NVDA (программой экранного чтения)
|
|||
|---|---|---|---|
|
#18+
Aniskin, Пардон, оказалось, я для кроссы писал. Это его вопрос и он хендл TLabel ищет. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 18:29 |
|
||
|
Совместимость с NVDA (программой экранного чтения)
|
|||
|---|---|---|---|
|
#18+
crossa, чтобы разъяснить детали к-н DelphiControls, воспользуйся любым виншпионом Я юзаю Window Detective, в основном ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 18:36 |
|
||
|
Совместимость с NVDA (программой экранного чтения)
|
|||
|---|---|---|---|
|
#18+
Большое спасибо всем за ответы. Скачал свежую версию NVDA и нашел работающее решение для Delphi 7. Да, вы правы: про TLabel надо забыть. NVDA видит только TStaticText, наследника от TWinControl. Самый важный момент: в тексте файла DFM описание объекта TStaticText должно идти сразу же после описания объекта TEdit, к которому эта надпись относится. Только в этом случае NVDA свяжет вместе поле ввода данных и его описание. (Щелкнуть правой кнопкой мыши на форме, выбрать пункт контекстного меню "View as Text" и переместить объекты так, чтобы каждый TStaticText стоял после своего TEdit.) Свойства FocusControl и TabOrder у объекта TStaticText никакого значения не имеют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 21:56 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=68&tid=2039270]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
71ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 234ms |
| total: | 414ms |

| 0 / 0 |
