У меня есть ползунок для изменения громкости, но после смены пользователя я постепенно изменяюсь на новое значение (в процессе обновления ползунка текущая громкость). Я использую свойство TAG ползунков, чтобы указать изменение программы c, пока я обновляю его позицию, но каким-то образом это все равно вызывает мою процедуру new-target-volume и, таким образом, отменяет весь тинг. Что я делаю не так?
procedure TMain.VolumeBarChange(Sender:TObject);
begin
try
If VolumeBar.Tag=0 then Begin;
StartVolumeFade(IncSecond(Now,3),VolumeBar.Position);
LogWrite('Volume changed via slider.',debug);
End else begin;
LogWrite('Ignoring Volumebar change.',debug);
end;
except
end;
end;
и
procedure TMain.UpdateVolumeBar;
Var
CurrentVolume:Integer;
Begin;
VolumeBar.Tag:=1;
try
CurrentVolume:=GetPlayerVolume;
If CurrentVolume>-1 then Begin;
VolumeBar.Enabled:=TRUE;
VolumeBar.Position:=CurrentVolume;
end else Begin;
VolumeBar.Enabled:=FALSE;
VolumeBar.Position:=0;
End;
except
//removed for post
End;
VolumeBar.Tag:=0;
End;
какие-либо причины, почему это не должно работать? У меня такое ощущение, что событие OnChange срабатывает слишком поздно (после того, как мой UpdateVolumebar уже завершен) ...: - /