[Lazarus] Simulating a DBNavigator

michael.vancanneyt at wisa.be michael.vancanneyt at wisa.be
Fri Aug 5 14:47:18 CEST 2011



On Fri, 5 Aug 2011, Felipe Monteiro de Carvalho wrote:

> The problem is caused because TDBNavigator uses TSpeedButton to
> implement it's buttons, which are buttons which cannot receive focus.
>
> This is Delphi-compatible, but to me this is also a major
> accessibility issue. It means that blind people for example cannot use
> TDBNavigator!

I'm sure that blind people can live with this limitation, so I don't really
consider this argument very valid :-)

> To fix this I want to introduce a Options property with the style
> noFocusableButton. If this option is activated, then the buttons will
> be based on TBitBtn instead, so the control will be accessible, so it
> remain fully Delphi compatible, but you can adapt it to be accessible
> too.
>
> Any comments or anyone opposed?

There is a reason why these buttons cannot receive focus.

If they receive focus, then the currently active control loses focus.

If it is a DB-Aware control, This means that the control may decide to post
pending data changes. This in turn will change the state of the dataset to
something other than the state the navigator button expects, and the state 
change notification will arrive too late for the button to ignore the click.

So changing this is IMHO not per se a good idea. 
If you do include this option, make sure it is not activated by default.

Michael.




More information about the Lazarus mailing list