PrepareViewStyleInfo is only hit for a cell when that cell is being redrawn. If you do not do something to trigger the redraw when the underlying progress value changes (like call RefreshRange), then the cell will not change what is displayed.
Here is a little sample that has a column of progressbars. It uses a timer to change the underlying value, and when it does, it also calls grid.RefreshRange so the cell is redrawn using the new values. It uses mode.QueryCellInfo to provide the value (instead of PrepareViewStyleInfo, but I think both should work). If you continue to have problems with PrepareViewStyleInfo, you could move your code to a Model.QueryCellInfo event handler to see if that will work better.
GDBGProgressBar5018_9433.zip