2. Вывод информации о текущем узле. Вывод осуществляется с помощью стандартного предиката tree_GetSelectedNode/1, аргументом которого является хендел окна отображения дерева. Предикат возвращает значение выделенного узла.
%*************Вывод информации о текущем узле*************
win_tree_eh(_Win,e_Menu(idt_tree_curNode,_ShiftCtlAlt),0):-!,
Str=tree_GetSelectedNode(_Win), %стандартныйпредикат
dlg_note("Выбранный узел",Str),
!.
%END tree, idt_tree_curNode
3. Вывод информации о родительском узле. Выдается сообщение со значением родительского узла и выделяет его. Используются:
а) стандартный предикат tree_GetParentNode/1 в качестве аргумента передается хендел окна дерева. Предикат возвращает значение родительского узла.
б)стандартный предикат tree_MoveToParentNode/1, в качестве аргумента передается хендел окна дерева. Выделяет родительский узел для выбранного в данный момент узла.
%********Вывод информации родительском узле и его выделение************
win_tree_eh(_Win,e_Menu(idt_tree_parent,_ShiftCtlAlt),0):-!,
Str=tree_GetParentNode(_Win),
dlg_note("Родительский узел",Str),
tree_MoveToParentNode(_Win),
!.
4.Вывод значений всех узлов. Выводит значения всех узлов в ListBox. Используется стандартный предикат tree_GetAllNodes(_Win), в качестве аргумента передается хендел окна дерева. Возвращает список значений узлов дерева.
%*********Вывод всех узлов дерева (в ListBox)*********
win_tree_eh(_Win,e_Menu(idt_tree_allnodes,_ShiftCtlAlt),0):-!,
ListALL=tree_GetAllNodes(_Win),
HDC=Win_GetCtlHandle(_Win,idtc_lbox),
lbox_Clear(HDC),
lbox_Add(HDC,ListALL),
!.
5. Поиск узла по заданному значению. Поиск осуществляется с помощью стандартного предиката tree_SearchFirstNode(_Win,Node),в качестве аргумента передается хендел окна дерева и значение. Предикат находит первый из встречающихся в дереве узел и выделяет его. Для поиска других узлов с таким же значением используется стандартный предикат tree_SearchNodeAgain(_Win), которому передается только хендел окна дерева. Предикат находит следующий после уже найденного узла с заданным значением и выделяет его.
%*****Выделение выбранного узла (предикат находит первый от корня узел***
win_tree_eh(_Win,e_Control(idc_wtree_find,_CtrlType,_CtrlWin,_CtlInfo),0):HC=Win_GetCtlHandle(_Win,idc_wtree_edit2),
Node=Win_GetText(HC),
tree_SearchFirstNode(_Win,Node),
!.
%*****Нахдит (выделяет) следующий узел с искомым значением**********
win_tree_eh(_Win,e_Control(idc_wtree_next,_CtrlType,_CtrlWin,_CtlInfo),0):tree_SearchNodeAgain(_Win),
!.
6. Перемещение выделения на узел с заданным значением осуществляется с помощью стандартного предиката tree_SetSelectedNode(_Win,Node), в качестве аргументов передается хендел окна дерева и значение узла, предикат выделяет указанный узел.
7. Вывод значения узла, заданного для поиска осуществляется с помощью стандартного предиката tree_GetCurrentSearch(_Win), которому в качестве аргумента передается хендел окна дерева. Предикат возвращает значение узла.
8. Скрытие/Отображение части дерева осуществляется с помощью стандартного предиката tree_OpenCloseNode(_Win), которому в качестве аргумента передается хендел окна дерева.
%************Скрыть/Показать дерево****************************
win_tree_eh(_Win,e_MouseDbl(_PNT,_ShiftCtlAlt,_Button),0):-!,
tree_OpenCloseNode(_Win),
!.
В качестве примера реализации некоторых из представленных предикатов приведена следующая программа.
Текст программы.
include "tree.inc"
include "tree.con"
include "hlptopic.con"
%BEGIN_WIN Task Window
/*******************************************************************
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.