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;

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