Einzelnen Beitrag anzeigen

Mysticus

Registriert seit: 16. Sep 2003
Ort: Gomaringen
13 Beiträge
 
Delphi 2009 Professional
 
#1

RadioGroup.Itemindex verstellt sich selbst?!?

  Alt 6. Dez 2006, 14:54
Hallo,

obwohl ich schon sehr viel mit Delphi und VCL programmiert habe, bin ich heute auf ein Problemchen gestoßen, das sich letztlich schon anhand von nur zwei effektiven Programmzeilen demonstrieren läßt, welche mit aber Rätsel aufgeben, die ich Euch nicht vorenthalten will:

Eine VCL-Anwendung (Delphi 7) mit zwei Formularen; Form1 enthält lediglich einen Button, dessen OnClick-Ereignisfunktion das zweite Formular anzeigt:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2.Show();
end;
Form2 enthält lediglich eine RadioGroup mit den drei Items "A", "B", und "C", deren ItemIndex in der OnShow-Ereignisfunktion auf 0 gesetzt wird:

Delphi-Quellcode:
procedure TForm2.FormShow(Sender: TObject);
begin
  RadioGroup1.ItemIndex := 0;
end;
So, das war's schon. Ich starte nun dieses Progrämmchen, betätige den Button, worauf sich Form2 öffnet. Hier wähle ich in der RadioGroup Item "C" aus und schließe Form2 (durch Click auf das Schließen-Symbol oben rechts) wieder. Wenn ich jetzt den Button erneut betätige, öffnet sich Form 2 wieder und nun kommt das (für mich) Unglaubliche: in der RadioGroupo ist Item "C" selektiert, d.h. der ItemIndex ist 2, obwohl ich ihn in FormShow() explizit auf 0 setze und dieser Code auch tatsächlich durchlaufen wird.

Das Problem tritt im C++-Builder 5 genauso auf.

Anscheinend wird irgendwo in den Tiefen der VCL nach dem Aufruf von FormShow() der RadioGroup1.ItemIndex wieder auf den Wert restauriert, der beim Schließen des Formulars galt. Aber warum, was soll dieses unverständliche "Eigenleben"? Und weiß jemand einen eleganten Weg, den ItemIndex beim erneuten Anzeigen des Formulars dennoch auf einen Startwert zurücksetzen?
  Mit Zitat antworten Zitat