If you want to use the ProgressIndicator , you can do something like this:
(*version 1.0*) Manipulate[ msg = "busy..."; result = process[ Unevaluated@progressCounter , max]; msg = "done!"; result, Dynamic@Grid [{ {ProgressIndicator[progressCounter, {0, 100}, ImageSize -> {105, 23}, ImageMargins -> 0, BaselinePosition -> Bottom], Spacer[5], progressCounter, " %"}, {msg} } ], {{max, 100, "maximum"}, 10, 10000, 10, Appearance -> "Labeled", ContinuousAction -> False}, {{progressCounter, 0}, None}, {{result, 0}, None}, SynchronousUpdating -> False, TrackedSymbols :> {max}, Initialization :> ( process[c_, max_] := Module[{i, tbl}, c = 0.; tbl = Table[0, {max}]; Do[ tbl[[i]] = {i, i^2}; Pause[0.00001]; c = i/max*100., {i, 1, max} ]; c = 0.; tbl[[-1]] ] ) ]

source share