I htas a problem here: procedure TLine.SetLineWidth(const NewWidth: Integer); begin if NewWidth <> Canvas.Pen.Width then begin if FArrow1 or FArrow2 then begin // LineWidth:=1; // this line causes stack overflow Canvas.Pen.Width:=1; end else Canvas.Pen.Width := NewWidth; Invalidate; end; end; Antônio