Da das sehr einfach umzusetzen ist, würde ich es mal eben selbst bauen. Du kannst auch einfach einen weißen und einen roten Stern als Bitmap nehmen und die dann hintereinander zeichnen.
Vielleicht verwendest Du einfach eine TPaintbox und überschreibst sowohl die Click- als auch die Paint-Methode. Die OnClick-Methode nimmt Maus-X, relativ zur Paintbox und teilt sie durch 5. das ist die Anzahl der Sterne (+1), die die Paint-Methode dann zeichnen muss.
Eine Form, eine Paintbox und eine Imagelist mit zwei Bitmaps: Weißer und gelber Stern.
Delphi-Quellcode:
Procedure TForm14.PaintBoxClick(Sender: TObject);
Var
p: TPoint;
pb: TPaintBox;
Begin
pb := Sender As TPaintBox;
p := pb.ScreenToClient(Mouse.CursorPos);
pb.tag := p.x Div (pb.Width Div 5);
pb.Invalidate;
End;
Procedure TForm14.PaintBoxPaint(Sender: TObject);
Var
stars: Integer;
canvas: TCanvas;
bounds: TRect;
I, wd: Integer;
Procedure _PaintStar(PaintClickedStar: Boolean; x: Integer);
Var
imageIndex: Integer;
Begin
If PaintClickedStar Then
imageIndex := 1
Else imageIndex := 0;
ImageList.Draw(canvas, x + 2, 2, imageIndex, dsTransparent, itImage);
End;
Begin
canvas := (Sender As TPaintBox).Canvas;
stars := (Sender As TPaintBox).Tag;
bounds := (Sender As TPaintBox).BoundsRect;
OffsetRect(bounds, -bounds.left, -bounds.top);
canvas.Brush.Color := clWhite;
canvas.Rectangle(bounds);
wd := bounds.Right Div 5;
For I := 0 To 4 Do
_PaintStar(i <= stars, i * wd);
End;