"Нарисовка на заголовках колонок TVirtualStringTree без изменения исходного кода"Delphi , Синтаксис , ДеревьяTVirtualStringTree – Как нарисовать на заголовках колонок без использования OwnerDraw? TVirtualStringTree – это мощный компонент от Virtual TreeView, который позволяет создавать сложные иерархические структуры данных. Одной из функций, которые часто требуются при работе с TVirtualStringTree, является возможность нарисовать на заголовках колонок. Однако, если вы хотите использовать "стандартный рисунок" колонок и добавить свою графику поверх него, вы можете столкнуться с трудностями. Проблема заключается в том, что если вы используете флаг hoOwnerDraw с Header.Options и событие OnHeaderDraw, вам придется полностью перерисовать колонки самостоятельно, что не всегда желательно. Существует событие OnAdvancedHeaderDraw, которое, на первый взгляд, решает проблему, но для его использования необходимо также использовать событие OnHeaderDrawQueryElements и заменять хотя бы один элемент в нем, чтобы перерисовать его самостоятельно в событии OnAdvancedHeaderDraw. Это приводит к тому, что вам придется переписывать большие части кода из исходного кода VT, чтобы нарисовать, например, значок сортировки. Но что, если вам просто нужно добавить свою графику поверх стандартного рисунка колонок, не заменяя никакие элементы? К сожалению, в настоящее время это не возможно без изменения исходного кода. Однако, начиная с версии VT 7.0, вы можете запросить и нарисовать для нового элемента header paint hpeOverlay. Это позволяет вам добавлять свою графику поверх стандартного рисунка колонок без замены других элементов. Для более старых версий, если вы не хотите менять исходный код, вы можете использовать альтернативный подход. Например, вы можете создать кастомный рисунок колонок, который включает в себя стандартный рисунок и вашу графику. Для этого вам придется полностью переопределить рисунок колонок в событии OnHeaderDraw, но этот подход дает вам полный контроль над тем, как колонки будут отображаться. Вот пример кода на Object Pascal (Delphi), который демонстрирует, как можно нарисовать кастомный рисунок колонок с использованием события OnHeaderDraw:
В этом примере мы сначала вызываем стандартный рисунок колонок с помощью DefaultDraw, а затем переопределяем его, закрашивая фон колонки серым цветом. В заключение, нарисовать на заголовках колонок TVirtualStringTree без изменения исходного кода не так просто, но это возможно с помощью событий OnHeaderDraw и OnAdvancedHeaderDraw, а также с помощью нового элемента header paint hpeOverlay в версии VT 7.0 и выше. Если вы все же решите изменить исходный код, вы можете добавить новый элемент header paint и запросить его в событии OnHeaderDrawQueryElements, чтобы нарисовать свою графику поверх стандартного рисунка колонок. Текст описывает проблему рисования на заголовках колонок в компоненте TVirtualStringTree без использования OwnerDraw и предлагает несколько способов решения этой проблемы, в том числе использование события OnHeaderDraw, OnAdvancedHeaderDraw, а также новый Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |