TTrackBar для эстетов

В стандартном компоненте всегда присутствует диапазон выбора (см. на рисунке нижний TTrackBar). К сожалению, в Delphi не предусмотрена возможность его отключения. Если нет необходимости в использовании диапазона выбора, то поможет небольшая доработка компонента.

unit NTrackBar;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, CommCtrl;

type
  TNTrackBar = class(TTrackBar)
  private
    FSelRangeVisible: Boolean;
    procedure SetSelRangeVisible(const Value: Boolean);
  protected
    procedure CreateParams(var Params: TCreateParams); override;
  public
    constructor Create(AOwner: TComponent); override;
  published
    property SelRangeVisible: Boolean read FselRangeVisible
                                      write SetSelRangeVisible;
  end;

procedure Register;

implementation

{ TNTrackBar }
constructor TNTrackBar.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FSelRangeVisible := False;
  ThumbLength := 18;
end;
procedure TNTrackBar.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  with Params do begin
    if not FSelRangeVisible then Style := Style xor TBS_ENABLESELRANGE
    else Style := Style or TBS_ENABLESELRANGE;
  end;
end;

procedure TNTrackBar.SetSelRangeVisible(const Value: Boolean);
begin
  if FSelRangeVisible <> Value then begin
    FSelRangeVisible := Value;
    RecreateWnd;
  end;
end;

procedure Register;
begin
  RegisterComponents('Controls', [TNTrackBar]);
end;

end.
[VS]