Изучение системы программирования Visual Prolog с последующим созданием Пролог-программы с графическим интерфейсом.
Visual Prolog – объектно-ориентированное расширение языка программирования PDC Prolog, развивавшегося из Turbo Prolog (Borland), семейства Prolog, а также система визуального программирования датской фирмы Prolog Development Center.
Visual Prolog автоматизирует построение сложных процедур и освобождает программиста от выполнения тривиальных операций. С помощью Visual Prolog проектирование пользовательского интерфейса и связанных с ним окон, диалогов, меню, строки уведомлений о состояниях и т. д. производится в графической среде. С созданными объектами могут работать различные Кодовые Эксперты (Code Experts), которые используются для генерации базового и расширенного кодов на языке Prolog, необходимых для обеспечения их функционирования.
Среда разработки приложений системы Visual Prolog включает текстовый редактор, различные редакторы ресурсов, средства разработки справочных систем в гипертекстовом представлении, систему отслеживания изменений, которая обеспечивает перекомпиляцию и перегенерацию только измененных ресурсов и модулей, ряд экспертов Кода, оптимизирующий компилятор, набор средств просмотра различных типов информации о проекте и отладчик. Полная интеграция всех средств обеспечивает повышение скорости разработки приложений. Полученные приложения являются исполняемыми .EXE программами. В коммерческой версии Visual Prolog 7.x возможно создание .DLL-файлов, в персональной версии такая возможность существовала вплоть до версии 5.x. Первая из возможностей, которые предоставляет IDE, заключается в управлении проектами. Поскольку среда рассчитана на создание достаточно масштабных приложений, то и средства управления файлами в рамках проекта приложения в ней представлены в достаточном для этого объёме. В среде есть встроенный редактор диалогов, который позволит организовать взаимодействие пользователя с программой при помощи графического интерфейса.
Ознакомится с системой программирования Visual Prolog создав простейшую Пролог-программу с графическим интерфейсом.
Для создания нового приложения используется эксперт приложений, который вызывается в окне Application Expert из меню Project/New Project. Выполните эту команду, в появившемся окне задайте имя проекта graf_int, установите курсор в текстовое поле ниже. Имя файла с расширением *.vpr появится автоматически.
win_my_window_eh(_Win,e_Update(_),0):-!, RCT=win_GetClientRect(_Win), RCT=rct(_,_,R,B), draw_Line(_Win,pnt(0,0),pnt(R,B)), draw_Line(_Win,pnt(0,B),pnt(R,0)),!.
Запустите проект, убедитесь, что окно отображается в виде, показанном на рисунке.
/*...*/
. Вернитесь к редактированию окна. Для установки в окно рабочих элементов воспользуйтесь панелью инструментов Controls (см.п.8).facts - clock timer(window,long TimerId) predicates startTimer(window) stopTimer(window) clauses startTimer(Win):-TimerId=timer_Set(Win,1000),assert(timer(Win,TimerId)). stopTimer(Win):-retract(timer(Win,TimerId)),!,timer_Kill(TimerId).
win_my_window_eh(_Win,e_Control(idc_startstop,_CtrlType,_CtrlWin,_CtlInfo),0):- Title=win_GetText(_CtrlWin), Title = "Start", startTimer(_Win), win_SetText(_CtrlWin,"Stop"), !. win_my_window_eh(_Win,e_Control(idc_startstop,_CtrlType,_CtrlWin,_CtlInfo),0):-!, stopTimer(_Win), win_SetText(_CtrlWin,"Start"), !. win_my_window_eh(_Win,e_Update(_),0):- _CtrlWin =win_GetCtlHandle(_Win, idc_show_date), _IsChecked = win_IsChecked(_CtrlWin), _IsChecked = checkbox_on, !, win_Clear(_Win,color_White), RCT=win_GetClientRect(_Win), time(Hours,Minutes,Seconds,_), date(Year,Month,Day), format(Str,"%/%/% - %02:%02:%02",Year,Month,Day,Hours,Minutes,Seconds), draw_TextInRect(_Win, RCT, Str, -1,[dtext_center,dtext_vcenter,dtext_singleline]), !. win_my_window_eh(_Win,e_Update(_),0):-!, win_Clear(_Win,color_White), RCT=win_GetClientRect(_Win), time(Hours,Minutes,Seconds,_), format(Str,"%02:%02:%02",Hours,Minutes,Seconds), draw_TextInRect(_Win, RCT, Str, -1,[dtext_center,dtext_vcenter,dtext_singleline]), !. win_my_window_eh(_Win,e_Timer(_TimerId),0):-!, win_Invalidate(_Win), !. win_my_window_eh(_Win,e_Control(idc_show_date,_CtrlType,_CtrlWin,_CtlInfo),0):-!, win_Invalidate(_Win), !.