AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Wie wird verhindert das bei SetFocus der RadioButton gecheckt wird
Thema durchsuchen
Ansicht
Themen-Optionen

Wie wird verhindert das bei SetFocus der RadioButton gecheckt wird

Ein Thema von yörsch · begonnen am 11. Jun 2010 · letzter Beitrag vom 14. Jun 2010
 
Benutzerbild von yörsch
yörsch

Registriert seit: 10. Jan 2007
Ort: Lampertheim
206 Beiträge
 
Delphi XE2 Architect
 
#1

Wie wird verhindert das bei SetFocus der RadioButton gecheckt wird

  Alt 11. Jun 2010, 09:55
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;
Jörg
have FUN

Geändert von yörsch (11. Jun 2010 um 10:33 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz