Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - RadioButton ist nicht mit Tab anwählbar.
Tankard - Mo 27.12.10 20:12
Titel: RadioButton ist nicht mit Tab anwählbar.
Hallo,
ich blick das hier im Moment nicht. Im Anhang mal ein Screenshot zum besseren Verständnis. Die Radiobutton funktionieren wie gewünscht, wenn ich sie mit der Maus bediene, via Tastatur komm ich an Sie komischerweise nicht ran. Die Zeilen sind von 1 bis 14 durchnummeriert.
Nehmen wir mal die erste Zeile, dort kann ich in die EditBoxen 3 Daten eintragen. Nun will ich, mit den Radiobuttons bestimmen, welchen Datenwert ich nehmen möchte. Soweit funktioniert das auch, wenn ich die Maus benutze. Mit der Tab Taste kann ich nur die Eingabefelder anspringen, nicht aber die Radiobuttons. Kann mir einer erklären wie ich das hinbekomme?
Danke
Gruss
Tankard
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40:
| procedure TForm1.FormCreate(Sender: TObject); var i,j,st:Integer; rb: TRadioButton; db: TEdit; panel: TPanel; sb: TScrollBox; t: TLabel; begin for i:=1 to 14 do begin panel:=TPanel.Create(Panel2); panel.BevelOuter:=bvNone; panel.Width:=Panel2.Width-35; panel.Height:=20; panel.Top:=(i-1)*23;
t:=TLabel.Create(panel); t.Left:=3; t.Caption:=IntToStr(i); t.Width:=15;
panel.InsertControl(t); st:=t.Left+t.Width+3; for j:=0 to 2 do begin rb:=TRadioButton.Create(panel); rb.Left:=st; rb.Width:=rb.Height; panel.InsertControl(rb);
db:=TEdit.Create (panel); db.Left:=rb.Left+rb.Width; db.Width:=50; panel.InsertControl(db); st:=db.Left+db.Width+10 end; panel2.InsertControl(panel); end; end; |
---
Moderiert von
Narses: Beiträge zusammengefasst---
TabStop scheint auch nicht immer zu funktionieren.
Delete - Mo 27.12.10 22:08
- Nachträglich durch die Entwickler-Ecke gelöscht -
jaenicke - Mo 27.12.10 22:10
Tankard hat folgendes geschrieben : |
| TabStop scheint auch nicht immer zu funktionieren. |
Wenn ich das im Quelltext setze, funktioniert das auch. :nixweiss:
Tankard - Mo 27.12.10 22:42
Hi,
1) geh mal mit tab alle durch. ein 2 durchlauf funktioniert nicht, da werden die radiobuttons nicht wieder angesprochen.
2) mit tabstop wird wohl auch ein click event gesendet und er markiert den radiobutton. was er eigentlich nicht sollte.
Gruss
tankard
jaenicke - Di 28.12.10 04:23
Tankard hat folgendes geschrieben : |
| 1) geh mal mit tab alle durch. ein 2 durchlauf funktioniert nicht, da werden die radiobuttons nicht wieder angesprochen. |
Stimmt, das muss ich mir noch einmal anschauen.
Tankard hat folgendes geschrieben : |
| 2) mit tabstop wird wohl auch ein click event gesendet und er markiert den radiobutton. was er eigentlich nicht sollte. |
Ein RadioButton wird per Definition Checked, wenn er den Fokus erhält. Das ist so und egal was du machst, das lässt sich AFAIK auch nicht ändern.
Wenn du das nicht willst, wirst du wohl eine eigene Komponente schreiben müssen...
// EDIT:
Das Problem liegt darin, dass du keine der RadioBoxen als checked markiert hast. Mit der Tab-Taste werden (ohne dass TabStop true ist) immer die ausgewählten RadioButtons jeder Gruppe angesprochen. Damit man dann mit den Pfeiltasten eine andere Auswahl treffen kann.
Eben weil das Setzen des Fokus gleichbedeutend mit der Auswahl der Option ist.
Tankard - Di 28.12.10 13:12
mhm. hab das jetzt mit checkboxen implementiert inkl. kleinem code das nur eine checkbox aktiv ist.
funktioniert auch soweit, nur ist das fuer den benutzer sehr verwirrend finde ich. muss dann doch wohl die radiobuttons selber zeichnen. kann man irgendwoher die grafiken dazu bekommen. weil die buttons sehen unter xp ja anders aus als unter win7.
jemand ne idee wie ich das mache? am besten plattformübergreifend, da ich das ganze mit lazarus mache.
jaenicke - Di 28.12.10 13:32
Wie gesagt: es reicht auch, wenn du einfach gleich jeweils einen RadioButton als Standard auf Checked setzt...
Sonst bekommst du das mit dem ThemeManager gezeichnet, aber mit plattformübergreifend wird das wohl kaum etwas dann. :lol:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!