![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Использование пользовательских кнопок и поддержка RTL bidi в VSTDelphi , Синтаксис , ДеревьяTVirtualStringTree — это компонент, который используется для отображения иерархических данных в виде древовидной структуры. Одной из особенностей этого компонента является наличие кнопок «[-]» и «[+]», которые используются для раскрытия/сворачивания веток дерева. Однако иногда может возникнуть необходимость использовать собственные кнопки вместо стандартных. В этой статье мы рассмотрим, как это можно сделать, а также как обеспечить поддержку RTL bidi режима. ПроблемаПользователь хочет использовать собственные кнопки (изображения) вместо стандартных кнопок «[-]» и «[+]» в TVirtualStringTree. Кроме того, он хочет, чтобы эти кнопки поддерживали RTL bidi режим. РешениеДля решения этой проблемы мы можем использовать свойство ButtonStyle компонента TVirtualStringTree. Это свойство определяет стиль кнопок, которые отображаются в дереве. Одним из доступных стилей является bsTriangle, который отображает кнопки в виде треугольников. Однако этот стиль не поддерживает RTL bidi режим. Если нам нужно использовать собственные изображения кнопок, мы можем изменить ресурсы VT_XPBUTTONMINUS и VT_XPBUTTONPLUS на нужные нам изображения. Кроме того, нам нужно установить свойство ButtonFillMode в значение fmShaded, чтобы кнопки отображались с заливкой. Для поддержки RTL bidi режима мы можем создать класс-потомок TVirtualStringTree и переопределить процедуру PaintNodeButton. В этой процедуре мы можем нарисовать свои собственные кнопки в зависимости от направления текста. Пример кода на Object Pascal (Delphi):
В этом примере мы создаем форму с компонентом TVirtualStringTree. В обработчике события FormCreate мы устанавливаем количество корневых узлов дерева, включаем использование стиля Windows Explorer и назначаем обработчики событий OnInitNode и OnInitChildren. В обработчике события OnInitNode мы устанавливаем флаг ivsHasChildren для каждого узла, чтобы указать, что у него есть дочерние элементы. В обработчике события OnInitChildren мы устанавливаем количество дочерних элементов для каждого узла. Пользователь хочет использовать собственные кнопки (изображения) вместо стандартных кнопок «[-]» и «[+]» в TVirtualStringTree и сделать их поддерживающими RTL bidi режим. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |