Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Исправление проблемы печати табов в FireMonkey DX Seattle с использованием TTabControl и TVertScrollBox

Delphi , Компоненты и Классы , Вкладки и Страницы

Исправление проблемы печати табов в FireMonkey DX Seattle

Пользователи, столкнувшиеся с проблемами в работе компонентов FireMonkey в последних версиях Delphi, могут обнаружить, что некоторые функции, которые работали безупречно в предыдущих версиях, например, в Delphi XE8, перестают функционировать должным образом. В частности, это касается компонента TTabControl в сочетании с TVertScrollBox, когда табы не печатаются корректно. Рассмотрим, как можно решить эту проблему.

Описание проблемы

Разработчики, использующие Delphi DX Seattle, столкнулись с проблемой, когда компонент TTabControl внутри TVertScrollBox не отображает табы корректно после их изменения. Проблема особенно заметна при переключении между экранами с помощью табов, и когда табы не должны отображаться в определенных условиях, например, когда всплывает клавиатура на устройстве. Это может быть вызвано обновлениями в компонентах FireMonkey, которые изменили их поведение.

Пример проекта

Для воспроизведения данной проблемы можно использовать пример проекта, доступный по ссылке: https://github.com/dangas56/DelphiDXSeattle-BrokenTabControl.

Пример кода

В примере проекта используется процедура TForm2.tbcMainChange, которая изменяет позицию табов в зависимости от активной вкладки. Кроме того, имеется процедура TForm2.Button1Click, которая переключает активную вкладку обратно на главную экран.

procedure TForm2.tbcMainChange(Sender: TObject);
begin
  if tbcMain.ActiveTab = tbtmSettings then
    tbcMain.TabPosition := TTabPosition.None
  else begin
    tbcMain.TabPosition := TTabPosition.Bottom;
  end;
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
  tbcMain.ActiveTab := tbtmHome;
end;

Описание ситуации с табами

На главном экране, при нажатии на вторую вкладку, происходит скрытие табов, устанавливается позиция табов в None, а при возврате на главную вкладку, позиция устанавливается обратно в Bottom, и активируется первый элемент вкладки.

Важность решения

На скриншотах видно, что после смены позиции табов, они не перерисовываются, и элементы управления на дне экрана не отображаются.

Альтернативный ответ

В качестве альтернативного подхода, разработчики обнаружили, что если после смены позиции табов на Bottom выполнить её повторно, а затем снова на Bottom, проблема с перерисовкой решается.

tbcMain.TabPosition := TTabPosition.Bottom;
tbcMain.TabPosition := TTabPosition.Dots; // Невероятно, но факт, значение не используется
tbcMain.TabPosition := TTabPosition.Bottom;

Подтвержденный ответ

Разработчики нашли временное решение проблемы: после установки позиции табов в Bottom, следует установить её снова, что заставляет компонент перерисоваться корректно.

Заключение

При работе с компонентами FireMonkey в Delphi DX Seattle, разработчикам может потребоваться адаптировать свой код для работы с изменениями в библиотеке, включая использование специфических "фиксов", чтобы компоненты вели себя предсказуемо.

Важно помнить, что при обновлении до новых версий Delphi, следует тщательно тестировать все функции, особенно те, что затрагивают визуальные элементы, такие как табы и кнопки управления отображением, чтобы убедиться в их корректной работе.

Создано по материалам из источника по ссылке.

Пользователи столкнулись с проблемой, когда в Delphi DX Seattle компонент `TTabControl` внутри `TVertScrollBox` не корректно печатает табы, особенно после изменения их положения, и требуется временное решение для принудительной перерисовки.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Вкладки и Страницы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-22 14:42:48/0.0036830902099609/0