Надеюсь, что в предыдущем посте помог ответить на первую часть вопроса.
Если каждая звезда организована отдельным компонентом, то, соответственно, вы всегда можете узнать по какой звезде был клик и раскрасить все звезды до нее (включительно) в желтый цвет.
Ниже скинул программку для герерации TPathData звезды, может пригодится
star generator.zip
Можно использовать генерируемую строку TPathData, или использовать код
procedure star;
var i: byte;
a1,a2: single;
begin
Path.Clear;
Path.MoveTo(PointF(0,-r));
a1:=Pi/5-Pi/2; a2:=-Pi/2;
for i:=1 to 5 do begin
Path.LineTo(PointF((r*cos(Pi/5)-d)*cos(a1+(i-1)*2*Pi/5),(r*cos(Pi/5)-d)*sin(a1+(i-1)*2*Pi/5)));
Path.LineTo(PointF(r*cos(i*2*Pi/5+a2),r*sin(i*2*Pi/5+a2)));
end;
Path.ClosePath;
path.Translate(r*cos(Pi/10),r);
end;
Где R - радиус описанной окружности вокруг звезды. В програме он равен 100. d - Разность радиусов внешней и внутренней окружности согласно рисунка