В Delphi 11 Alexandria разработчики сделали одну из самых существенных за много лет доработок контрола для отображения древовидных структур TTreeView. Наконец-то его узлы (TTreeNode) могут быть CheckBox'сами.
В Delphi 11 классу TTreeNode добавили два новых свойства:
Для наглядности я упростил стандартный "TTreeVew CheckBox Demo" и добавил в дерево узел "TNodeCheckState" со всеми вариантами состояния CheckBox'а: Несколько примечаний к этой копии экрана:
В Delphi 11 классу TTreeNode добавили два новых свойства:
- CheckState - состояние CheckBox'а:
property CheckState: TNodeCheckState read GetCheckState write SetCheckState;
где TNodeCheckState этоTNodeCheckState = (ncsNone, ncsUnchecked, ncsChecked, ncsPartial, ncsDimmed, ncsExclusion);
- ncsNone – узел без CheckBox'а;
- ncsUnchecked – галочка не установлена (по умолчанию);
- ncsChecked – галочка установлена;
- ncsPartial – маленький квадрат;
- ncsDimmed – установлена тусклая галочка;
- ncsExclusion – крестик.
- Checked - переключатель свойства CheckState между состояниями ncsUnchecked и ncsChecked:
property Checked: Boolean read GetChecked write SetChecked;
TCheckStyle = (csPartial, csDimmed, csExclusion); TCheckStyles = set of TCheckStyle;Для того чтобы TTreeView начал отображать в узлах дерева CheckBox'ы достаточно его published свойству CheckBoxes присвоить значение True.
Для наглядности я упростил стандартный "TTreeVew CheckBox Demo" и добавил в дерево узел "TNodeCheckState" со всеми вариантами состояния CheckBox'а: Несколько примечаний к этой копии экрана:
- дерево отображает CheckBox'ы даже в дизайнере форм (это видно по форме на заднем плане);
- у задизейбленного узла "C++Builder" можно менять состояние CheckBox'а;
- мой глаз не смог отличить состояние ncsDimmed от ncsChecked.
- OnCheckStateChanging – срабатывает перед изменением состояния и позволяет проконтролировать его изменение
TTVCheckStateChangingEvent = procedure(Sender: TCustomTreeView; Node: TTreeNode; NewCheckState, OldCheckState: TNodeCheckState; var AllowChange: Boolean) of object;
- OnCheckStateChanged – срабатывает после изменения состояния
TTVCheckStateChangedEvent = procedure(Sender: TCustomTreeView; Node: TTreeNode; CheckState: TNodeCheckState) of object;
Комментариев нет:
Отправить комментарий