9

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?

Shannon Matthews
  • 9,649
  • 7
  • 44
  • 75
  • 2
    possible duplicate of [Creating Accessible UI components in Delphi](http://stackoverflow.com/questions/16320914/creating-accessible-ui-components-in-delphi) Remy's excellent answer at this question will guide you to the solution – David Heffernan Jul 08 '13 at 10:49
  • 1
    @DavidHeffernan Thanks for the link. I don't think this question is an exact duplicate. Remy's answer addresses implementing IAccessible, which is only one of the possible APIs that could be implemented. – Shannon Matthews Jul 08 '13 at 11:15

1 Answers1

6

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)

Community
  • 1
  • 1
Shannon Matthews
  • 9,649
  • 7
  • 44
  • 75
  • 1
    I rather suspect that MSAA will be easier for you to implement than UIAutomation. I also think that the older MSAA will have broader support than the more recent UIAutomation. So, unless you need to support functionality that is only available in UIAutomation you may be better served with MSAA. – David Heffernan Jul 08 '13 at 11:12