Hallo Wendelin
danke für dein Minimalprojekt.
Ich kann das von dir beschriebene Verhalten für XE6 bestätigen.
Wie du beschreibst:
1a. u2 - rb => r2 checked - ich klick auf form 1 => radio 1 checked [nicht gut]
1b. u2 - rb => r2 checked - f2 schliessen => radio 1 checked [nicht gut]
Wenn du
zuerst RadioButton2 klickst und dann 1a oder 1b ausführst, dann bleibt RadioButton2 wie erwartet aktiv:
2a. r2 checken - u2 - rb - r2 checked - ich klick auf form 1 => radio 2 bleibt aktiv [gut]
2b. r2 checken - u2 - rb => r2 checked - f2 schliessen => radio 2 bleibt aktiv [gut]
Ich empfehle dir diesen Workaround:
Füge in unit1 für Form1 hinzu:
Delphi-Quellcode:
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
RadioButton1.SetFocus;
end;
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
RadioButton2.SetFocus;
end;
Ändere in unit2 für Form 2:
Delphi-Quellcode:
procedure TForm2.SpeedButton2Click(Sender: TObject);
begin
Form1.RadioButton2Click( self ); // NEU
// Form1.RadioButton2.Checked := True; // BISHER
end;
In XE6 funktioniert es so - ich habe gerade keine Zeit für Tests in Delphi 7.
NEU
1a. u2 - rb => r2 checked - ich klick auf form 1 => radio 2 checked [gut]
1b. u2 - rb => r2 checked - f2 schliessen => radio 2 checked [gut]
Ich hoffe es funktioniert auch bei dir.
Gruss
Michael