Autor Beitrag
Tankard
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Administrator
Beiträge: 217
Erhaltene Danke: 96



BeitragVerfasst: Mo 27.12.10 20:12 
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


ausblenden volle Höhe 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 user profile iconNarses: Beiträge zusammengefasst---

TabStop scheint auch nicht immer zu funktionieren.
Einloggen, um Attachments anzusehen!
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 27.12.10 22:08 
- Nachträglich durch die Entwickler-Ecke gelöscht -
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 27.12.10 22:10 
user profile iconTankard hat folgendes geschrieben Zum zitierten Posting springen:
TabStop scheint auch nicht immer zu funktionieren.
Wenn ich das im Quelltext setze, funktioniert das auch. :nixweiss:
Tankard Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Administrator
Beiträge: 217
Erhaltene Danke: 96



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 28.12.10 04:23 
user profile iconTankard hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile iconTankard hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Administrator
Beiträge: 217
Erhaltene Danke: 96



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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: