Шаг 20.
Visual Prolog.
Создание окна дерева

    На этом шаге мы рассмотрим создание окна дерева.

    Теперь создадим окно, которое покажет структуру дерева. Это одно из инструментальных средств, которое может быть включено в модуль VPITools.pro. Перед созданием окна Tree следует удостовериться, что включена опция Tree Package на вкладке VPI Options в эксперте приложения (это можно сделать комбинацией клавиш <Ctrl>+<A>).


Рис.1. Опция Tree Package включена

    Теперь подготовьте окно Tree, выполняя следующие шаги:

  1. Создайте новый исходный модуль Тrее.рrо.
  2. Добавьте пункт Tree Window в меню Task подменю Test.
  3. Создайте новое окно Tree.
  4. Зайдите в эксперт окон и диалоговых окон и задайте, что код должен быть в модуле Тrее.рrо, затем вам следует выбрать стиль кода tree_Create для генерации экспертом кода (рис. 1).
  5. После того как вы добавили код по умолчанию для окна Tree, добавьте новый пункт к меню Task и создайте предложение для вызова окна Tree.


Рис.2. Добавление кода по умолчанию для окна дерева

    Результат работы приложения изображен на рисунке 3:


Рис.3. Результат работы приложения

    Загляните в файл Tree.pro и посмотрите, как создано дерево. В Прологе очень просто создавать дерево из различных структур данных, таких как списки файлов на вашем жестком диске или записи в базе данных.

   win_tree_Create(_Parent):-
ifdef use_tree
      Tree=tree("0",unmarked,
          [tree("3",unmarked,[],0), 
              tree("2",unmarked,
            [tree("4",unmarked,[] ,0)],0),
         tree("1",unmarked,[],0)],0),
      TreeDir=tree_dirright,
      Font=font_Create(ff_Fixed,[],10),
      TreeWinInfo=tree_WinInfo(Font,TreeDir,[]), 
      tree_Create(win_tree_WinType,win_tree_RCT,
             win_tree_Title,win_tree_Menu,_Parent,
             win_tree_Flags,win_tree_eh,0,Tree,
             TreeWinInfo,[]),
enddef
      true.

    Обратите внимание, что хотя окно Tree представляет собой особый вид окна, его код имеет такую же структуру, как и код для окон, которые вы создаете самостоятельно: имеется вызов для создания окна и стандартный обработчик событий.

Работа с деревом

    Добавьте следующее предложение для события e_MouseUp и посмотрите, как легко получить информацию узла, щелкнув по нему мышью:

    win_tree_eh(_Win, e_MouseUp(_PNT,_ShiftCtlAlt,_Button),0):-!,
       SelectorText=tree_GetSelectedNode(_Win),
       dlg_Note("Сообщение",SelectorText),
       !.

    Результат работы приложения изображен на рисунке 4:


Рис.4. Результат работы приложения

    Созданное приложение можно взять здесь (427,8 Кб).

    На следующем шаге мы рассмотрим создание окна редактора.




Предыдущий шаг Содержание Следующий шаг