FAQ FM
Компоненты\ScrollBox

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

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

:: MVP ::

:: RSS ::

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

Как определить, что TScrollBox прокручен в самый конец?

procedure TForm1.ScrollBox1ViewportPositionChange(Sender: TObject;
  const OldViewportPosition, NewViewportPosition: TPointF;
  const ContentSizeChanged: Boolean);
begin
  if ScrollBox1.ContentBounds.Height - ScrollBox1.ClientHeight = NewViewportPosition.Y then
    Label1.Text := 'bottom'
  else
    Label1.Text := 'not bottom';
end;


Как включить функцию оттягивания скроллинга за границу контента и его возврат на место?

procedure TForm1.FormCreate(Sender: TObject);
begin
  // Указывает, следует ли настраивать инерционную прокрутку
  ScrollBox1.AniCalculations.Animation := True;
  // Отвечает за функцию оттягивания скроллинга за границу контента
  //  и его возврат на место
  ScrollBox1.AniCalculations.BoundsAnimation := True;
  // Отвечает за скорость возврата оттянутой области к контенту
  ScrollBox1.AniCalculations.Elasticity := 50;
  // Коэффициент замедления инерционной прокрутки
  // Значение по умолчанию DecelerationRateNormal = 1.95
  ScrollBox1.AniCalculations.DecelerationRate := 1.5;
  // Отвечает за плавное скрытие и отображение полос прокрутки
  // False - полосы прокрутки не скрываются
  // Значение по умолчанию = True
  ScrollBox1.AniCalculations.AutoShowing := False;
  ScrollBox1.AniCalculations.TouchTracking := [ttVertical{, ttHorizontal}];
end;


Как прокрутить TScrollBox программно?

// Способ первый
// без анимации
procedure TForm1.Button1Click(Sender: TObject);
begin
  // Установка координат окна просмотра (левый верхний угол)
  ScrollBox1.ViewportPosition := TPointF.Create(0, 0);
end;

// Способ второй
// без анимации
procedure TForm1.Button1Click(Sender: TObject);
begin
  // Установка координат окна просмотра (левый верхний угол)
  // Аналог ViewportPosition
  ScrollBox1.ScrollTo(0, 0);
end;

// Способ третий
// без анимации
procedure TForm1.Button1Click(Sender: TObject);
begin
  // Сдвиг на вектор
  ScrollBox1.ScrollBy(-10, -10);
end;

// Способ четвертый
// с анимацией
procedure TForm3.FormCreate(Sender: TObject);
begin
 ScrollBox1.AniCalculations.Animation := True;
 ScrollBox1.AniCalculations.BoundsAnimation := True;
 ScrollBox1.AniCalculations.TouchTracking := [ttVertical, ttHorizontal];
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  // Сам сдвиг
  ScrollBox1.AniCalculations.MouseWheel(5, 10);
end;


Как узнать текущие положения вертикального и горизонтального скролов в TScrollBox?

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(FloatToStr(ScrollBox.ViewportPosition.Y)); // Вертикаль
  ShowMessage(FloatToStr(ScrollBox.ViewportPosition.X)); // горизонталь
end;

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