Есть ли способ показать> знак TTreeNode, когда еще не было добавлено ни одного потомка? - PullRequest
0 голосов
/ 09 ноября 2018

Я показываю предметы в TTreeView объекте. Когда у элемента есть дочерние элементы, элемент управления рисует > рядом со значком (или стрелкой вниз, если она развернута).

Мне было интересно, могу ли я как-то сказать Предмету нарисовать >, даже если не было добавлено ни одного ребенка (пока).

В моем программном обеспечении есть определенные условия, в которых имеет смысл показать пользователю, что есть дети, без фактического добавления детей (это делается, когда элемент выбран)

Использование c ++ Builder 2009 VCL, но этот Q должен быть действительным и для Delphi.

1 Ответ

0 голосов
/ 09 ноября 2018

В VCL TTreeNode имеет HasChildren свойство:

Указывает, есть ли у узла дочерние элементы.

HasChildren - истина, если у узла есть подузлы, или ложь, если у узла нет подузлов. Если ShowButtons представления дерева имеет значение true, а HasChildren - true, кнопка плюса (+) появится слева от узла, когда он свернут, и кнопка минуса (-) появится, когда узел расширен.

Примечание. Если у узла нет дочерних элементов, установка HasChildren в значение true покажет кнопку (+) плюс, но не добавит дочерние узлы, и узел не может быть развернут.

Итак, вы можете установить для HasChildren узла значение true, прежде чем для него будут созданы фактические дочерние узлы. Затем, после того, как вы определили, есть ли у узла какие-либо фактические дочерние узлы, вы можете сбросить HasChildren в false, если дочерних узлов нет.

Несмотря на то, что в документации предлагается выше, попытка развернуть узел, у которого нет дочерних узлов, но для которого HasChildren установлено значение true, по крайней мере вызовет событие TTreeView.OnExpanding. Это хорошее место для заполнения реальных дочерних узлов и обновления HasChildren.

...