I'm trying to improve the accessibility of my Delphi made application to vision impaired users. My application uses many custom GUI components. They mostly descend from TWinControl or TGraphicControl.
My custom components seem to be invisible when testing with NVDA. For example NVDA will respond by reading the name of the control (or other details) when mousing over regular Delphi VCL controls such as buttons or forms. By contrast NVDA doesn't respond at all when mousing over any of my custom controls.
How do I make my custom components visible to NVDA and other screen reading software?
display:none or visibility: hiddenThe content is removed from the visual flow of the page and is ignored by screen readers. Do not use this CSS if you want the content to be read by a screen reader.
The conventional way is to use CSS ( display:none; and visibility:hidden; ) or the HTML 5 `hidden` attribute. These properties hide elements not only on the screen, but also for screen reader users. Thus, these elements will not be visible nor vocalized by Assistive technologies (AT).
Like astrological, musical, political and religious symbols. Yes, Unicode characters might look interesting and stand out visually. But they are inaccessible to screen reader users. Screen readers may skip them entirely or read something irrelevant to the user.
The good news is that all screen readers read the CSS generated content in Chrome, Safari, and Microsoft Edge.
Found the answer on the NVDA Design Overview page. NVDA uses a number of accessibility APIs to gather information about GUI controls. NVDA supports:
It looks like I'll need to implement one of the above APIs. Not sure what the pros and cons of each API are yet.
Creating Accessible UI components in Delphi provides details on implementing IAccessible. (Thanks for the link David)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With