Наконец, для оформления дерева можно использовать наборы картинок. Наборов два - в свойствах images и stateimages. Напомним, что у каждого узла-объекта TTreeNode есть свойства imageindex И stateindex, а вдобавок еще и Selectedindex. Первая картинка предназначена для отображения типа узла, а вторая - его состояния. Можно сразу (при добавлении) указать номера изображений для того или иного случая, а можно делать это динамически. Для этого существуют события:

toype TTVExpandedEvent = procedure (Sender: TDbject;
Node: TTreeNode) of object;
property OnGet Image Index: TTATExpandeclEvent ;
property OnGetSelectedlndex: TTATExpandeclEvent;

Пример их использования дан в листинге 5.1 ниже - в момент возникновения этих событий следует переопределить СВОЙСТВО Image Index или Selectedlndex передаваемого В обработчик события объекта TTreeNode.

Свойства stateindex и stateimages можно порекомендовать для имитации множественного выбора. Дело в том, что в отличие от TListview, в TTreeView невозможно одновременно выбрать несколько узлов. Вы можете отслеживать щелчки на узлах, и для выбранных устанавливать значение stateindex в 1; под этим номером в stateimages поместите, например, галочку.

Изложенная информация будет неполной, если не рассказать, на какие события реагирует компонент TTreeView. Большинство из них происходит парами - до наступления какого-то изменения и после него. К примеру, возникновение события QnChangjng означает начало перехода фокуса от одного узла к другому, a OnChange - его завершение.

Четверка событий

type TTVCollapsingEvent = procedure (Sender: TDbject;
Node: TTreeNode;
var AllowCollapse: Boolean) of object;
type TTAVExpandingEvent = procedure (Sender: TDbject;
Node: TTreeNode;
var AllowExpansion: Boolean) of object-property QnExpan<±bng: TTA7Expan<±UTgEvent ;
property QnExpanded: TTATExpandeclEvent ;
property QnCollapsirig: TWCollapsrngEvent ;
property CnCollapsed: ТТ\Л1хра^е<ЗЕуегд;
;

сопровождает процесс свертывания/развертывания узла, а пара

type TT/EditrngEvent = procedure (Sender: TDbject;
Node: TTreeNode;
var AllowEdrt: Boolean) of object;
property QnEiditrng: TTVEdlrtirigEvent;
type TT/EditedEvent = procedure (Sender: TDbject;
Node: TTreeNode;
var S: string) of object;
property CnEdrted: TTMifiitedEvent ;

сопровождает редактирование его текста. Событие onDeletion происходит при удалении узла. Иногда нужно сравнивать узлы между собой - если вы хотите сделать это по своим правилам, используйте событие OnCompare.

Наконец, те, кому и приведенных возможностей мало, могут сами рисовать на компоненте TTreeView. У него есть свойство Canvas и четыре События - OnCustomDraw, OnCustomDrawItem, OnAdvancedCustomDraw, OriAdvancedCus toiriDrawItem.

Перейдем теперь к компоненту TListview. Его еще называют расширенным списком. Действительно, в этот компонент заложено столько, что он перекрывает все мыслимые и немыслимые задачи по отображению упорядоченной однородной информации.

Начнем со свойства viewstyle:

type TViewStyle = (vslcon, vsSmalllcon, vsList, vsReport);
property ViewStyle: TViewStyle;

⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в Delphi 7



Новости за месяц

  • Октябрь
    2017
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс