Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Создание новых окон в проекте с использованием кнопок и полей ввода

Поиск

Поля ввода (Edit Control) позволяют пользователю вводить данные. Обычно этот элемент представляет собой строку, которая содержит текст или число. Поле ввода может быть многострочным.

Для установки и получения содержимого поля ввода нужно использовать предикаты: String = win_GetText (Window), win_SetText (Window, string Text)

где Window – это оконный дескриптор элемента управления, который может быть получен вызовом предиката:

CtrlHndl=win_GetCtlHandle(Parent Window,CtrlId)

Командные кнопки (Push Button) позволяют пользователю выполнять различные действия: открывать и закрывать окна, выполнять расчеты и т.д.

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

Задание: создать проект, в котором при выборе пункта меню Factorial открывается окно, позволяющее ввести натуральное число и вычислить его факториал.


Решение

1. Создайте новый проект(Project | New Project).

2. Добавьте в главное меню новый пункт Factorial аналогично как в предыдущем примере).

3. Создайте новое окно. Для этого в окне проекта нажмите кнопку Window на левой панели инструментов, а затем – кнопку New справа (рис.18).

рис.18. Создание нового окна в проекте

 

Откроется окно Window Attributes (рис.19). Введите имя создаваемого окна Factorial и нажмите ОК.

рис.19. Диалоговое окно для установки атрибутов окна


4. Разместите на макете появившегося нового окна следующие компоненты (рис.20):

Static Text для вывода текста

Edit Control для ввода данных

Push Button для выполнения расчета

рис.20. Редактор окон

 

После размещения компонентов установите необходимые для каждого из них атрибуты:

 

а) для компонента Static Text, служащего для вывода надписи Введите число (имя-константа будет задано автоматически)(рис.21)

 

рис.21. Атрибуты компонента Static Text


б) для компонента Edit Control (поле ввода), который обеспечит ввод числа

рис.22. Атрибуты компонента Edit Control

 

в) для компонента Push Button (кнопка), при нажатии на который будет выполнен расчет и выведен результат (имя-константа будет задано автоматически)(рис.23)

рис.23. Атрибуты компонента Push Button

 

г) для компонента Static Text, необходимого для вывода результата

рис.24. Атрибуты компонента Static Text

 

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

рис.25 Добавление кода по умолчанию в эксперте окон

 

Когда заданный по умолчанию код будет сгенерирован, станут доступны кнопки Add Clause, Edit Code и некоторые другие.

 

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

%BEGIN Task Window, id_factorial

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

!.

%END Task Window, id_factorial

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

%BEGIN Task Window, id_factorial

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

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, при выборе которого появляется новое окно для ввода двух чисел и вычисления их суммы.




Поделиться:


Последнее изменение этой страницы: 2016-04-08; просмотров: 491; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.142.156.58 (0.007 с.)