Hallo,
ich habe ein Formular mit mehreren Komponenten (TEdit, TButton, TCheckBox, TRadioGroup, ...).
Wenn der Nutzer die Eingabe in einem Edit-Feld beendet hat und z.B. auf eine andere Komponente klickt, werte ich im OnExit-Ereignis die Eingabe aus und verlange ggf. in einem zur Laufzeit erzeugtem Formular noch eine ergänzende Eingabe. Nach dieser zusätzlichen Eingabe hat aber die Edit-Komponente wieder den Focus.
Ich möchte aber, dass nach der zusätzlichen Eingabe, der vorher getätigte Klick unmittelbar ausgeführt wird.
dazu verwende ich folgenden Code:
Delphi-Quellcode:
procedure TFmEdit_PrSch.EditVkExit(Sender: TObject);
var ac : TControl;
begin
ac := ActiveControl;
EditVk.Text := FormatVk(EditVk.Text);
if ChangeMod and (Artikel <> nil) then
SaveArtikelDaten; // hier erfolgt ggf. die Zusatzabfrage
TWinControl(ac).SetFocus;
if ac is TButton then
TButton(ac).OnClick(ac)
else
if ac is TCheckBox then
TCheckBox(ac).OnClick(ac)
// else
// if ac is TGroupButton then
// TGroupButton(ac).OnClick(nil);
end;
Es funktioniert mit allen Komponenten, außer TRadioGroup!?
Der Classname von ActiveControl ist nach einem Klick auf die TRadioGroup-Komponente: TGroupButton.
TGroupButton ist aber in der
Unit ExtCtrls nicht im Interface-Teil deklariert, deshalb im Code auskommentiert.
Irgendwie stehe ich da z.Z. auf dem Schlauch und weiß im Moment nicht wie ich da runter komme.
Hat jemand eine Idee? Wie kann ich den Klick auf die Radiokomponete ausführen?
Ich hoffe ihr könnt mir auch diesmal helfen.
Gruß Klaus