RadioGroup

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Andromeda
Beiträge: 120
Registriert: So 4. Jan 2015, 20:18

RadioGroup

Beitrag von Andromeda »

Hallo,

ich verwende eine Radiogroup, deren ItemIndex ich in einer IniDatei abspeichere. Beim Starten des Programms wird das richtige Item auch wieder ausgewählt. Jetzt möchte ich beim Programmstart aber auch noch den entsprechenden Code ausführen, also den gleichen Code, als hätte ich auf der RadioGroup ein Item angeklickt. Ich bräuchte also so etwas wie RadioGroup.click. Leider habe ich auch über Google nichts dazu gefunden.

Benutzeravatar
theo
Beiträge: 10920
Registriert: Mo 11. Sep 2006, 19:01

Re: RadioGroup

Beitrag von theo »

Du meinst wohl SelectionChanged?

Code: Alles auswählen

 
procedure TForm1.RadioGroup1SelectionChanged(Sender: TObject);
begin
  Caption:=RadioGroup1.Items[RadioGroup1.ItemIndex];
end;  

Andromeda
Beiträge: 120
Registriert: So 4. Jan 2015, 20:18

Re: RadioGroup

Beitrag von Andromeda »

Vielen Dank, ich habe jetzt rausgefunden, wie man das macht. Ich habe in das OnCreate-Ereigbnis des Formulars geschrieben: RadioGroup1click(Sender).

Tut mir leid, dass ich Euch mit so doofen Fragen belästigt habe.

Benutzeravatar
theo
Beiträge: 10920
Registriert: Mo 11. Sep 2006, 19:01

Re: RadioGroup

Beitrag von theo »

Habe gerade eine Entdeckung gemacht:
Bei einer Radiogroup löst auch ein Wechsel der Radiobuttons via Tastatur ein OnClick Ereignis aus. Lazarus 1.5 r50025M FPC 3.1.1 x86_64-linux-gtk 2

- Ist das bei euch auch so?
- Soll das so sein, bzw. gibt es da Informationen dazu?

wp_xyz
Beiträge: 5188
Registriert: Fr 8. Apr 2011, 09:01

Re: RadioGroup

Beitrag von wp_xyz »

theo hat geschrieben:Habe gerade eine Entdeckung gemacht:
Bei einer Radiogroup löst auch ein Wechsel der Radiobuttons via Tastatur ein OnClick Ereignis aus. Lazarus 1.5 r50025M FPC 3.1.1 x86_64-linux-gtk 2

- Ist das bei euch auch so?
- Soll das so sein, bzw. gibt es da Informationen dazu?
Ja, dasselbe unter Win7, Laz 1.5/fpc2.6.4.

Ich vermute, dass das so sein soll, weil ein KeyPress hier denselben Effekt hat wie ein Klick, anders als bei einer Combobox, wo man per Tastatur durch die aufgeklappte Liste scrollen kann und den zu übernehmenenden Wert erst duch Klick oder Space übernehmen muss. Allerdings sind LCL/VCL bzgl. OnClick nicht sehr konsistent und ich rufe den entsprechenden Eventhandler lieber 1x zuviel auf als lange nach dem Fehlverhalten suchen zu müssen.

Benutzeravatar
theo
Beiträge: 10920
Registriert: Mo 11. Sep 2006, 19:01

Re: RadioGroup

Beitrag von theo »

wp_xyz hat geschrieben: Ja, dasselbe unter Win7, Laz 1.5/fpc2.6.4.

Ich vermute, dass das so sein soll, weil ein KeyPress hier denselben Effekt hat wie ein Klick, anders als bei einer Combobox, wo man per Tastatur durch die aufgeklappte Liste scrollen kann und den zu übernehmenenden Wert erst duch Klick oder Space übernehmen muss. Allerdings sind LCL/VCL bzgl. OnClick nicht sehr konsistent und ich rufe den entsprechenden Eventhandler lieber 1x zuviel auf als lange nach dem Fehlverhalten suchen zu müssen.
Danke. Aber für das beschriebene Verhalten gibt es doch OnSelectionChanged.
Für mich ist ein OnClick, welches auf ein Nicht-Mausereignis reagiert eigentlich ein Bug, oder zumindest unschön.

wp_xyz
Beiträge: 5188
Registriert: Fr 8. Apr 2011, 09:01

Re: RadioGroup

Beitrag von wp_xyz »

Macht sinn. Aber: Das beschriebene Verhalten sehe ich, wie gerade ausprobiert, auch bei Delphi XE2; und dort gibt es auch kein OnSelectionChanged. Da man die Delphi-Kompatibilität nicht zerstören will, wird es sich nicht lohnen, einen Bug-Report zu schreiben.

Patito
Beiträge: 203
Registriert: Di 22. Sep 2009, 13:08
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: RadioGroup

Beitrag von Patito »

theo hat geschrieben: Danke. Aber für das beschriebene Verhalten gibt es doch OnSelectionChanged.
Für mich ist ein OnClick, welches auf ein Nicht-Mausereignis reagiert eigentlich ein Bug, oder zumindest unschön.
So etwas gibt es bei Event-Handlern oft, in der Dokumentation von Delphi zu TControl.OnClick stehen noch
- Pfeiltasten
- Leertaste wenn das Control den Fokus hat
- Formular mit Default-Controls (Enter, Escape)
- Aktivierung über Tastenkürzel, die mit dem Control verknüpft sind

Am unschönsten ist es wenn man so ein Event ohne direkte Interaktion vom Benutzer bekommt - nur weil im Code ein Property geändert wurde.

Die Events rund um KeyDown, KeyPress, KeyUp, MouseDown, MouseUp, sind normalerweise am verlässlichsten.
Bei allem anderen (OnXYZChange, ...), muss man sich damit herumschlagen was für Events kommen, in welcher Reihenfolge sie kommen,
ob sie doppelt kommen.

Antworten