Win_factorial_Create(Win)

!.

%END Task Window, id_factorial

 

7. Запрограммируйте нажатие кнопки Результат в окне Factorial для выполнения расчета и вывода результата. Для этого вызовите окно Dialog and Window Expert и в списке окон выберите Factorial. Выберите пункт Control в списке Event Type и выделите строку pb: idc_результат (имя кнопки). Нажмите кнопку Add Clause, а затем Edit Clause. Откроется окно редактора для файла Factorial.pro, в который добавлено предложение:

%BEGIN Factorial, idc_результат _CtlInfo

win_factorial_eh(_Win,e_Control(idc_результат,_CtrlType,_CtrlWin, _CtlInfo),0):-!,

!.

%END Factorial, idc_результат _CtlInfo

Допишите команды, необходимые для вычисления факториала и вывода результата. В результате должно получиться:

%BEGIN Factorial, idc_результат _CtlInfo

win_factorial_eh(_Win,e_Control(idc_результат, _CtrlType, _CtrlWin, _CtlInfo), 0):-!,

EDIT_WIN1=win_GetCtlHandle(_WIN,idc_ввод),

Text1=win_GetText(EDIT_WIN1), % считываем данные из поля ввода

str_int(Text1,N), % преобразует в числовое значение

fact(N,FN), % вычисляем факториал

str_int(StrFN,FN), % преобразуем в строковое значение

EDWIN=win_GetCtlHandle(_WIN,idct_вывод),

win_SetText(EDWIN,StrFN), % выводим результат

!.

%END Factorial, idc_результат _CtlInfo

 

8. Опишите правило вычисления факториала и предикат fact:

PREDICATES

win_factorial_eh: EHANDLER

Fact(integer,integer)

CLAUSES

fact(0,1):-!.

fact(N,F):- N1=N-1,fact(N1,F1), F=N*F1.

win_factorial_Create(_Parent):-

win_Create(win_factorial_WinType,win_factorial_RCT,win_factorial_Title,

win_factorial_Menu,_Parent,win_factorial_Flags,win_factorial_eh,0).

 

9. Запустите проект на исполнение и протестируйте его.

ЗАДАНИЕ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ

Доработайте проект, создав новый пункт меню Summa, при выборе которого появляется новое окно для ввода двух чисел и вычисления их суммы.


Использование элемента ListBox

ListBox (список)- это элемент управления, содержащий набор пунктов, которые может выбрать пользователь. В VPI есть несколько предикатов для работы со списками:

· lbox_Add (Window, Index, Str) добавляет новую строку Str в список в позицию с индексом Index. Если Index равен -1, то строка добавляется в конец списка. Нумерация элементов списка начинается с 0, т.е. первый элемент списка имеет индекс 0, второй -1 и т.д.

· lbox_Clear (Window) удаляет все элементы списка

· lbox_Delete (Window, Index) удаляет элемент с указанным индексом

· lbox_GetItem (Window, Index) возвращает элемент списка с указанным индексом

· Integer=lbox_GetSelIndex(Window) возвращает индекс выбранного элемента. Предикат завершится неуспешно, если никакой элемент в списке не выбран

· lbox_IsSel(Window, Index) завершается успешно или неспешно в зависимости от того, является ли текущим заданный элемент в списке

 

Пример. Проект, позволяющий формировать и редактировать списки данных.

Создать проект, содержащий элементы ListBox (список), Edit Control (поле ввода) для ввода новых данных, Push Button (кнопки) для добавления нового элемента в список и удаления выделенного элемента.

Решение

1. Создайте новый проект.

2. Добавьте в главное меню новый пункт Spisok.

3. Создайте новое окно. Для этого в окне проекта нажмите кнопку Window на левой панели инструментов, а затем – кнопку New справа. Откроется окно Window Attributes. Введите имя создаваемого окна Spisok и нажмите ОК.

4. Разместите на макете появившегося нового окна следующие компоненты: Edit Control, Push Button, ListBox (рис.26).

Push Button
ListBox
Edit Control

рис.26. Созданное окно Spisok


Задайте имена-константы для размещенных элементов, например для Edit Control - idc_edit, для ListBox - id_list_box, для кнопки ADD - idc_add, для кнопки DELETE - idc_delete

5. Сгенерируйте стандартный код Visual Prolog для нового окна. Для этого в окне проекта нажмите кнопку Code Expert, когда выбрано окно Spisok. Откроется окно Dialog and Window Expert. Выберите исходный модуль spisok.pro и нажмите кнопку Default Code.

6. Запрограммируйте выбор пункта меню Spisok для вызова окна Spisok. Для этогов списке окон выберите Task Window, пункт Menu в списке Event Type и выделите строку id_spisok (имя пункта меню) в списке Event or Item. Нажмите кнопку Add Clause, чтобы сгенерировать Пролог-предложение для события. Название кнопки изменится на Edit Clause, когда код для события будет создан. Нажмите кнопку Edit Clause. Откроется окно редактора для файла Spisok.pro, в который добавлено предложение:

%BEGIN Task Window, id_spisok

task_win_eh(_Win,e_Menu(id_spisok,_ShiftCtlAlt),0):-!,

!.

%END Task Window, id_spisok

Допишите команду для открытия окна Spisok: win_spisok_Create(_Win). В результате должно получиться:

%BEGIN Task Window, id_spisok

task_win_eh(_Win,e_Menu(id_spisok,_ShiftCtlAlt),0):-!,


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: