Ich würde es insgesamt etwas aufräumen:
Delphi-Quellcode:
procedure THixBarGraph.Paint;
var
R: TRect;
H, W: Integer;
begin
inherited; // "paint;" KANN entfallen - benötigt wird das nur Funktionen: Result := inherited MyFunction(MyParam);
if (Parent = nil) or (not Visible) then
Exit;
Canvas.Brush.Color := clBtnFace;
Canvas.FillRect(Rect(0, 0, Width, Height));
H := (Height div 10) div 2; // wenn die Bevelhöhe z.B. 1/10 sein soll
W := (Width div 10) div 2;
R := Rect((Width div 2) - W, (Height div 2) - H,
(Width div 2) + W, (Height div 2) + H);
Frame3D(Canvas, R, clBtnShadow ,clBtnHighlight , 1);
Dann hast Du zwar zwei Variablen mehr, aber das Ganze wird m.E. etwas übersichtlicher und bei späteren Änderungen versteht man den eigenen Code besser.