Dies habe ich jetzt umgangen, in dem ich OnChange vor der Timeränderung auf nil setzte.
Dies würde so funktionieren.
Nun zu Frage macht man dies so, oder gibt es da eine bessere Lösung ?
Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
begin
TrackBar1.Max := 10000;
Timer1.Interval:=20;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
p: integer;
oc: TNotifyEvent;
begin
oc := TrackBar1.OnChange;
TrackBar1.OnChange := nil;
p := TrackBar1.Position;
Inc(p, 3);
if p >= TrackBar1.Max then begin
p := 0;
end;
TrackBar1.Position := p;
TrackBar1.OnChange := oc;
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
WriteLn('change'); // Zur Überprüfung
end;