Работая с компонентом TWinControl в среде разработки Delphi 10.4, разработчики могут столкнуться с проблемой адаптивного размера. В данном случае, при размещении компонента на форме TForm, он не реагирует на изменение размеров формы.
Описание проблемы
Разработчик создал визуальный компонент на основе TWinControl, установив для него свойства Anchors и Align, а также включил свойство AutoSize. Однако, после размещения компонента на TForm, он не адаптируется при изменении размеров формы, в отличие от другого компонента TButton, который корректно изменяет своё положение.
Анализ кода
Предоставленный код компонента TSampleControl содержит собственные реализации свойств Anchors, Align и AutoSize, которые не связаны с аналогичными свойствами базового класса TControl.
Пошаговое решение
Использование опубликованных свойств: Вместо создания новых свойств следует использовать опубликованные свойства Anchors, Align и AutoSize базового класса TControl. Это позволит компоненту корректно реагировать на изменения размеров формы.
Инициализация свойств: В методе InitializeComponents необходимо инициализировать свойства Anchors, Align и AutoSize в соответствии с нужными значениями.
Удаление лишних методов: Методы SetAnchors, SetAlign, SetAutoSize и соответствующие свойства в коде класса TSampleControl следует удалить, так как они дублируют функционал базовых свойств.
Переопределение метода Resize: Метод Resize в классе TSampleControl не требуется переопределять, так как все необходимые действия будут выполнены системой автоматически после изменения свойств Anchors и AutoSize.
В данном примере, свойства Anchors, Align и AutoSize инициализируются напрямую в методе InitializeComponents, что позволяет компоненту корректно адаптироваться к размеру родительской формы.
Заключение
Проблема адаптивного размера компонента TWinControl решается через использование опубликованных свойств базового класса и их корректной инициализации. Следуя приведённым шагам, разработчики смогут избежать подобных проблем в будущем.
Проблема заключается в некорректном использовании свойств адаптивного размера компонента `TWinControl` в Delphi 10.4, что приводит к невозможности адаптации размера компонента при изменении размеров формы.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.