Autor Beitrag
JPSelter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 24

Win98, Win2000
D5
BeitragVerfasst: Mi 09.11.05 14:34 
Im Moment verzweifle ich an der Tatsache, dass ein RadioGroup-Click-Event als RadioGroup-Change-Event behandelt wird (obwohl es dies gar nicht gibt!). Jedesmal, wenn ich an einer RadioGroup etwas ändere (also das Programm selbst zur Laufzeit, z.B. visible:=true oder :=false), dann führt er das OnClick Event aus, obwohl ich ja nicht mit der Mouse drauf klicke. Das führt jetzt natürlich zu unerwünschten Nebeneffekten... was ist da los? Ein Bug im Compiler?

_________________
Signaturen unterliegen manchmal sehr strengen Richtlinien...
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Mi 09.11.05 15:41 
Hallo,

ein Bug ist das nicht,
ich bin immer wieder erstaunt was in der Delphi-Hilfe zu finden ist :roll:
user profile iconDelphi-Hilfe hat folgendes geschrieben:
Das Ereignis OnClick ...
...Dieses Ereignis tritt normalerweise ein, wenn der Benutzer auf die primäre Maustaste drückt und sie wieder losläßt, während sich der Mauszeiger über dem Steuerelement befindet. Außerdem wird OnClick in folgenden Situationen ausgelöst:
....
• Die Eigenschaft Checked eines Optionsfeldes wird auf True gesetzt.
• Der Wert der Eigenschaft Checked eines Kontrollfeldes ändert sich.
...


Hier ein kleines Beispiel wie man die Situation umgehen kann:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
  showmessage('Hallo');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  RadioGroup1.OnClick := nil;
  RadioGroup1.ItemIndex := 1;
  RadioGroup1.OnClick := RadioGroup1Click;
end;


Es gibt noch eine andere Lösungsmöglichkeit, wenn ich sie wiederfinde, poste ich sie hier.

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )