Developer OneChen has a demo project up on GitHub showing how to build a progress circle using basic Firemonkey components. As you can see in the featured image it is a circle with a percentage in the center and a progress line around the inside of the circle. It is composed of a TCircle component with a TArc, a TCircle, and a TText component nested inside of it. These components are available in Delphi XE5, Delphi XE6, C++Builder, and AppMethod. They should also work on all four platforms (Android, IOS, Windows, and OSX) The TArc makes up the white line on the inside that appears to move around the circle. The round ends of the TArc are achieved by changing the Stroke Cap property to Round instead of Flat. The progress of the line is controlled by simply changing the angle of the TArc component. As you change the angle the line appears to move around the circle. Other notable properties of the effect are Stroke Thickness which controls the size of the line and it is set at 15. And lastly the StartAngle property of the TArc is set to -90. The TCircle in the center is just set to align Client and so is the TText which contains the percentage. The object is built up using other objects so it would be easy to customize the colors to your needs. You could also easily include this code with a TTimer or anonymous thread to replace TAniIndicator if that component doesn’t suite your needs. Here is the code that handles the progress setting of the TArc component:

<div id="LC48" class="line"><span class="k">procedure</span> <span class="nc">TForm1</span><span class="o">.</span><span class="nf">TrackBar1Change</span><span class="p">(</span><span class="n">Sender</span><span class="o">:</span> <span class="kt">TObject</span><span class="p">)</span><span class="o">;</span></div> <div id="LC49" class="line"><span class="k">begin</span></div> <div id="LC50" class="line"> <span class="k">if</span> <span class="n">TrackBar1</span><span class="o">.</span><span class="n">Value</span> <span class="o"><></span> <span class="mi">0</span> <span class="k">then</span></div> <div id="LC51" class="line"> <span class="n">Arc1</span><span class="o">.</span><span class="n">EndAngle</span> <span class="o">:=</span> <span class="mi">360</span> <span class="o">/</span> <span class="p">(</span><span class="mi">100</span> <span class="o">/</span> <span class="n">TrackBar1</span><span class="o">.</span><span class="n">Value</span><span class="p">)</span></div> <div id="LC52" class="line"> <span class="k">else</span> <span class="n">Arc1</span><span class="o">.</span><span class="n">EndAngle</span> <span class="o">:=</span> <span class="mi">0</span><span class="o">;</span></div> <div id="LC53" class="line"> <span class="n">Text1</span><span class="o">.</span><span class="n">Text</span> <span class="o">:=</span> <span class="nb">Trunc</span><span class="p">(</span><span class="n">TrackBar1</span><span class="o">.</span><span class="n">Value</span><span class="p">)</span><span class="o">.</span><span class="n">ToString</span> <span class="o">+</span> <span class="s">'%'</span><span class="o">;</span></div> <div id="LC54" class="line"><span class="k">end</span><span class="o">;</span></div> 1 2 3 4 5 6 7 < div id = "LC48" class = "line" > < span class = "k" > procedure < / span > < span class = "nc" > TForm1 < / span > < span class = "o" > . < / span > < span class = "nf" > TrackBar1Change < / span > < span class = "p" > ( < / span > < span class = "n" > Sender < / span > < span class = "o" > : < / span > < span class = "kt" > TObject < / span > < span class = "p" > ) < / span > < span class = "o" > ; < / span > < / div > < div id = "LC49" class = "line" > < span class = "k" > begin < / span > < / div > < div id = "LC50" class = "line" > < span class = "k" > if < / span > < span class = "n" > TrackBar1 < / span > < span class = "o" > . < / span > < span class = "n" > Value < / span > < span class = "o" > < > < / span > < span class = "mi" > 0 < / span > < span class = "k" > then < / span > < / div > < div id = "LC51" class = "line" > < span class = "n" > Arc1 < / span > < span class = "o" > . < / span > < span class = "n" > EndAngle < / span > < span class = "o" > : = < / span > < span class = "mi" > 360 < / span > < span class = "o" > / < / span > < span class = "p" > ( < / span > < span class = "mi" > 100 < / span > < span class = "o" > / < / span > < span class = "n" > TrackBar1 < / span > < span class = "o" > . < / span > < span class = "n" > Value < / span > < span class = "p" > ) < / span > < / div > < div id = "LC52" class = "line" > < span class = "k" > else < / span > < span class = "n" > Arc1 < / span > < span class = "o" > . < / span > < span class = "n" > EndAngle < / span > < span class = "o" > : = < / span > < span class = "mi" > 0 < / span > < span class = "o" > ; < / span > < / div > < div id = "LC53" class = "line" > < span class = "n" > Text1 < / span > < span class = "o" > . < / span > < span class = "n" > Text < / span > < span class = "o" > : = < / span > < span class = "nb" > Trunc < / span > < span class = "p" > ( < / span > < span class = "n" > TrackBar1 < / span > < span class = "o" > . < / span > < span class = "n" > Value < / span > < span class = "p" > ) < / span > < span class = "o" > . < / span > < span class = "n" > ToString < / span > < span class = "o" > + < / span > < span class = "s" > '%' < / span > < span class = "o" > ; < / span > < / div > < div id = "LC54" class = "line" > < span class = "k" > end < / span > < span class = "o" > ; < / span > < / div >

Head over and check out the full Delphi XE6 Firemonkey progress circle demo project and download it from GitHub.