¿Cómo superar el error de la propiedad BorderWidth?

BorderWidth - Error en propiedad de componentes

Por Vladimir S. <shvetadvipa@mtu-net.ru>

Help & Manual authoring tool

Si desea usar la propiedad BorderWidth, tenga cuidado. Es muy extraño, pero Borland cometió en error en casi todos los componentes que tienen esta propiedad. Por ejemplo observe la figura (border.gif) y podrá ver barras de progreso (ProgressBars) con varios valores de BorderWidth. La altura de las barras en todos los casos es 16.

border.gif

Si desea corregir este error vea este ejemplo para la ProgressBar. Tiene que hacer cambios en COMCTRLS.PAS como este:

interface

...

TProgressBar = class(TWinControl)
private
  ...
  FBorderWidth: TBorderWidth;
  ...
  procedure SetBorderWidth(Value: TBorderWidth);
  ...
published
  ...
  property BorderWidth: TBorderWidth read FBorderWidth
                                     write SetBorderWidth;
  ...

...

implementation

...

constructor TProgressBar.Create(AOwner: TComponent);
begin
  ...
  FBorderWidth := inherited BorderWidth;
  ...
end;

procedure TProgressBar.SetBorderWidth(Value: TBorderWidth);
begin
  if Value > (Height div 2)-3 then
    raise Exception.CreateFmt('Error: BorderWidth debe ser menor que'
      + ' %d', [(Height div 2)-3]);
  if Value <> inherited BorderWidth then begin
    inherited BorderWidth := Value;
    FBorderWidth := inherited BorderWidth;
  end;
end;

...

Puede usar este parche en todos los componentes que tengan una propiedad BorderWidth.

JfControls Library - para Delphi y C++ Builder