![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Центрирование текста в узлах VirtualStringTreeDelphi , Синтаксис , Деревья- это распространенная задача, с которой сталкиваются разработчики, работающие с компонентом VirtualStringTree в Delphi. В этой статье мы рассмотрим, как центрировать текст вертикально во всех столбцах узла (кроме многострочного столбца), когда узел является многострочным (vsMultiline в Node.States). По умолчанию текст для многострочного узла всегда рисуется вверху узла, в отличие от не многострочных узлов, где текст рисуется вертикально по центру. Один из способов attempting решить эту проблему - использовать событие OnBeforeCellPaint и TargetCanvas.TextOut(), но этот подход не дает результатов. После изучения различных подходов было найдено решение, которое работает для большинства случаев. Оно основано на использовании DrawText() для рисования текста в ячейке и добавлении параметра выравнивания текста, такого как лево, право, верх, середина и т.д. В нашем случае мы хотим выровнять текст по вертикали по центру, поэтому мы используем DT_VCENTER флаг. Ниже приведен пример кода на Object Pascal (Delphi), который демонстрирует, как это можно реализовать в методе OnDrawText:
В этом примере мы сначала проверяем, не является ли текущий столбец многострочным. Если нет, то мы устанавливаем DefaultDraw в False и получаем размер текста и узла. Затем мы проверяем, помещается ли текст в узел, и если нет, то обрезаем его с помощью EllipseString(). Наконец, мы рисуем текст в ячейке с помощью DrawTextW(), устанавливая флаг DT_VCENTER для вертикального выравнивания по центру. Важно отметить, что это решение не позволяет рисовать многострочный текст в других столбцах, выровненный по вертикали по центру. Для этого вам придется указать набор многострочных столбцов, и нет возможности рисовать многострочный и вертикально выровненный текст. Надеемся, что эта статья поможет вам центрировать текст вертикально во всех столбцах узла в VirtualStringTree, за исключением многострочного столбца. Статья посвящена решению задачи центрирования текста в узлах VirtualStringTree в Delphi, рассматривая конкретный случай, когда узел является многострочным, а столбец - нет. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |