Am 17.08.2019 um 23:40 schrieb Christian Schmitt:
> procedure form1.TestbuttonClick(Sender:TObject);
> begin
> RadioGroup1.Button[0].Setfocus;
> RadioGroup1.Itemindex:=1;
> end;
Ersma: es muss Buttons[0] heißen.
> Wenn man den Testbutton klickt, hat man folgenden Status: Die Radiogroup hat den Focus, genauer gesagt, das 0te Item. Ausgewählt, also mit schwarzem Punkt, ist aber das 1. Item. Sobald nun das Fenster neu gezeichnet wird, weil es z.B. inaktiv und wieder aktiv wird, springt der Radiobutton dorthin, wo der Focus war/ist, auf das 0. Element.
Das macht D7 genauso und ist m.E. richtig so. Nur: was soll der Fokus
auf einem Item einer Radiogroup? Ein Radiogroup1.SetFocus würde für mich
mehr Sinn machen.
> Natürlich kommt jetzt der Einwand, warum sollte man sowas tun?! Natürlich sollte man das nicht :-), es hat sich nur so ergeben: Ich habe eine Anwendung, in der ich zum Einen per Mausklick die Radiobuttons setzen kann, zum anderen aus einem anderen Fenster heraus mit Messages und ItemIndex die Radiobuttons gesetzt werden. Und wenn dies geschieht und ich vorher im aktiven Fenster als letztes einen Radiobutton angeklickt hatte (der also den Focus hat wenn das Fenster wegen wechsels Inaktiv wird) und dann mit einer Message vom anderen Fenster ein anderer Radiobutton ausgewählt wird und ich dann wieder das Fenster aktiviere (Repaint), dann springt mein Radiobutton dorthin, wo er nicht hingehört :-(. Ist das ein Bug oder bin ich zu blöd? Ich habe mir jetzt als Workaround beholfen, in dem ich bei jedem Setzen des ItemIndex auch ein Setfocus hinterher schiebe. Dann habe ich keine Probleme. Das kann aber doch nicht die Lösung sein, oder doch?
Ich verstehe nicht, was du genau willst: Was heißt "andere Anwendung,
die Radiobuttons setzt"?
Werden neue Items erzeugt oder soll nur ein anderer Item gewählt werden?
Alfred.