FAQ VCL
Компоненты\ScrollBar

:: Меню ::
:: На главную ::
:: FAQ ::
:: Заметки ::
:: Практика ::
:: Win API ::
:: Проекты ::
:: Скачать ::
:: Секреты ::
:: Ссылки ::

:: Сервис ::
:: Написать ::

:: MVP ::

:: RSS ::

Яндекс.Метрика

Как сделать размер ползунка в TScrollBar пропорциональным свойству LargeChange?

procedure TForm1.Button1Click(Sender: TObject);
var
  Info: TScrollInfo;
begin
   FillChar(Info, SizeOf(Info), 0);
   with Info do
   begin
      cbSize := SizeOf(Info);
      fMask := SIF_PAGE;
      nPage := ScrollBar1.LargeChange;
   end;
   SetScrollInfo(ScrollBar1.Handle, SB_CTL, Info, True);
end;


Как изменить цвет фона TScrollBar?

// Способ первый
type
  TScrollBar = class(Vcl.StdCtrls.TScrollBar)
  private
    procedure CNCtlColorScrollBar(var Msg: TMessage); message CN_CTLCOLORSCROLLBAR;
  public
    constructor Create(AOwner: TComponent); override;
  //published
  //  property Color;
  end;

implementation

procedure TScrollBar.CNCtlColorScrollBar(var Msg: TMessage);
begin
   DefaultHandler(Msg);
end;

constructor TScrollBar.Create(AOwner: TComponent);
begin
   inherited;
   Color := clRed;
end;

// Способ второй
type
  TScrollBar = class(Vcl.StdCtrls.TScrollBar)
  private
    FHBrush: HBRUSH;
    procedure CNCtlColorScrollBar(var Msg: TMessage); message CN_CTLCOLORSCROLLBAR;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  end;

implementation

procedure TScrollBar.CNCtlColorScrollBar(var Msg: TMessage);
begin
   Msg.Result := FHBrush;
end;

constructor TScrollBar.Create(AOwner: TComponent);
begin
   inherited;
   FHBrush := CreateSolidBrush(RGB(255, 255, 0));
end;

destructor TScrollBar.Destroy;
begin
   DeleteObject(FHBrush);
   inherited;
end;

При использовании материала - ссылка на сайт обязательна