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

Хочется выделять некоторые строчки в TTreeView жирным или бледным

Delphi , Компоненты и Классы , TTreeView

Хочется выделять некоторые строчки в TTreeView жирным или бледным


uses CommCtrl;
...
procedure SetNodeState(node :TTreeNode; Flags: Integer);
var
  tvi: TTVItem;
begin
  FillChar(tvi, Sizeof(tvi), 0);
  tvi.hItem := node.ItemID;
  tvi.mask := TVIF_STATE;
  tvi.stateMask := TVIS_BOLD or TVIS_CUT;
  tvi.state := Flags;
  TreeView_SetItem(node.Handle, tvi);
end;

И вызываем:


SetNodeState(TreeView1.Selected, TVIS_BOLD); // Текст жиpным
SetNodeState(TreeView1.Selected, TVIS_CUT); // Иконкy бледной (Ctrl+X)
SetNodeState(TreeView1.Selected, TVIS_BOLD or TVIS_CUT); // Текст жиpным
SetNodeState(TreeView1.Selected, 0); // Ни того, ни дpyгого

Программный код, который вы предоставили, является частью языка программирования Delphi и используется для установки состояния узла дерева в контроле TTreeView. Возможные состояния, которые можно установить:

  • TVIS_BOLD: делает текст жирным
  • TVIS_CUT: устанавливает иконку для состояния "переделать" (обычно появляется как X)

Процедура SetNodeState принимает два параметра: объект TTreeNode, представляющий узел дерева, который нужно изменить, и целочисленное значение, которое specifies the states to set.

Вот что каждый из ваших вызовов делает:

  1. SetNodeState(TreeView1.Selected, TVIS_BOLD); - устанавливает жирный текст для выбранного узла
  2. SetNodeState(TreeView1.Selected, TVIS_CUT); - устанавливает иконку для состояния "переделать" (X) для выбранного узла
  3. SetNodeState(TreeView1.Selected, TVIS_BOLD or TVIS_CUT); - устанавливает оба текст и иконку для выбранного узла
  4. SetNodeState(TreeView1.Selected, 0); - очищает любые предыдущие установленные состояния для выбранного узла

Обратите внимание, что вам нужно вызывать процедуру SetNodeState с валидным объектом TTreeNode как первым параметром (в вашем случае, TreeView1.Selected). Кроме того, учитывайте состояние фокуса и выбора контрола tree view при вызове этого метода.

Альтернативное решение - использовать свойство Attributes узла дерева. Вот пример:

procedure SetNodeState(node: TTreeNode; Flags: Integer);
begin
  node.Attributes := Flags;
end;

// ...

TreeView1.Selected.Attributes := TVIS_BOLD;

Эта APPROACH более прямолинейна и может быть проще для чтения, но она не предоставляет такого же контроля над конкретными состояниями (например, иконкой для состояния "переделать") как ваш оригинальный код.

В статье описывается, как изменять видимость и оформление узлов в компоненте TTreeView Delphi, используя метод SetNodeState с параметром Flags для определения настроек состояния узла.


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

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




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


:: Главная :: TTreeView ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 01:07:13/0.003032922744751/0