Hallo Zusammen,
ich navigiere mit der Tabtaste durch ein Form...
damit ich alle Controls erreiche hab ich selbst eine Funktion geschrieben...
denn z.B.: Radiobuttons werden nur erreicht wenn diese checked := True haben!
soweit sogut (vieleicht gibts da auch was besseres ist aber hier nicht die Frage...)
Wenn ein RadioButton mit SetFocus den Fokus bekommen, so ist dieser danach gechecked!
Das soll nicht automatisch passieren!
Der Anwender kann mit der SPACE-Taste, wie bei CheckBoxen, checken!
Wenn der Anwennder sich mit TAB durch die Anwendung navigiert,
ist das nervig wenn danach alle RadioButtons verändert sind....
Hier ein Auszug was ich mit den aktiven Controls mache
Delphi-Quellcode:
procedure TFoNavBase.NextControlSetFocus();
begin
try
//Fucus setzen
FActivControl.SetFocus;
//Mit Farbe markieren
FActivControl.color := FParameter.Color[cPaN_ActivControlColor]
finally
end;
end;
Gefunden hab ich, das dies von Windoof selbst kommt =>
Mit
Windows.SetFocus(RadioButton1.Handle);
wird auch gecheckt...
Auch über Papa Google war das der beste Link den ich gefunden hab...
http://www.lazarusforum.de/viewtopic.php?f=19&t=2930
Also: Wie kann ich verhindern, das ein TRadioButton das mit SetFocus den Focus bekommt gecheckt wird?
PS:
ein Workarround mit selbst zurücksetzten geht, ist aber nicht sinne des Erfinders...
Delphi-Quellcode:
if (FActivControl is TRadioButton) then
begin
// Workaround...
RB_Checked := -1;
for i := FActivControl.Parent.ControlCount - 1 downto 0 do
if (FActivControl.Parent.Controls[i] is TRadioButton)
and ((FActivControl.Parent.Controls[i] as TRadioButton).checked)
then
RB_Checked := i;
// Workaround...
FActivControl.SetFocus;
// Workaround...
if RB_Checked = -1 then
(FActivControl as TRadioButton).Checked := False
else
(FActivControl.Parent.Controls[RB_Checked] as TRadioButton).Checked := True;
// Workaround...
end
else
FActivControl.SetFocus;