Hallo,
da wurde das Problem schon mal durchgekaut und zwei Workarouds gefunden:
[VCL Win32] TAB-Stop in RadioGroup nicht deaktivierbar
Zwischenzeitlich habe ich eine andere Lösung gefunden.
Jann1k hat folgendes geschrieben: |
| Ich habe ein bisschen rumprobiert und rausgefunden, dass man die Radiogroups (wenn tabstop auf false) nur erreichen kann, wenn ein Item selektiert wurde (also itemindex>-1), folglich liegt der Schluss nahe, dass ich irgendwie bei den einzelnen Items in der Radiogroup TabStop deaktivieren muss, diese gebe ich ja aber nur als String bei Items ein. |
Das hast Du richtig erkannt.
Die Items werden intern als TGroupButton in der Eigenschaft TRadiogroup.Controls verwaltet.
Grob gesagt, durch das Selectieren eines Items wird bei diesem GroupButton Tabstop auf True gesetzt.
Also in OnClick -da wird ja selectiert- Tabstop bei dem selectierten Item auf False setzen.
Diese zwei Zeilen in alle OnClick-Eventhandler der RadioGroups einbinden:
Delphi-Quelltext
1: 2:
| whit TRadiogroup do TRadioButton(Controls[ItemIndex]).TabStop := False; |
Ist der ItemIndex der RadioGroups im OI auf ein Item gesetzt, so ist es noch erforderlich in OnCreate der Form für alle RadioGroups den Code einzubauen:
Delphi-Quelltext
1: 2:
| whit RadioGroupX do TRadioButton(Controls[ItemIndex]).TabStop := False; |
Setzt man zur Laufzeit den Itemindex einer RadioGroup wird automatisch OnClick ausgelöst und die volle Funktionalität ist gegeben.