Student.id_zach, Student.name_group, Student.fio,;
Student.year_birth, Student.address, Pulpit.name_pulpit,;
Pulpit.zav_pulpit;
Перейдём к окну конструктора представления и проверим правильность набранного кода, выбрав из контекстного меню RunQuery (Выполнить запрос). Перейдём на вкладку UpdateGeneral (Обновление) где выберем все поля для изменения, зададим ключевые поля для представления и поставим флажок SendSQLupdates для того, чтобы можно было добавлять и редактировать значения полей в таблицах через это представление. Сохраним представление, выбрав File – Save. В появившемся окне ViewName (Имя представления) введём Studens_View.
Создадим три формы по одной для каждой таблицы при помощи мастера форм. Для создания формы нужно в окне Диспетчера проектов перейти на вкладку Documents, где выбрать пункт Form и нажать кнопку New. Выберем FormWizard, затем выберем мастера создания формы с одной таблицы FormWizard. На первом шаге необходимо выбрать таблицу и поля, которые будут применяться в форме. Укажем таблицу Student базы данных Students и выберем все поля, переместив их в список Selectedfields (Выбранные поля).
На втором шаге выберем стиль формы.
На третьем шаге укажем поля, по которым будет происходить упорядочение записи и порядок сортировки записей. Выберем упорядочение по значению поля Номер зачётки (ID_zach), для чего переместим его в список Selectedfields (Выбранные поля). Укажем сортировку по возрастанию (Ascending).
На четвёртом шаге введём заголовок для формы в поле Typeatitleforyourform, введём Студенты. Выберем SaveandmodifyitintheFormdesigner (Сохранить и изменить форму в Конструкторе форм).
Форма откроется в окне конструктора форм, в котором изменим надписи, для чего выделим нужную надпись и в окне свойств Properties – Student.scx изменим свойство Caption. Сохраним изменения, выбрав File – Save.
Рис. 2.17.6. Форма для таблицы «Группы»
Аналогично создадим формы для двух других таблиц.
Создадим форму для представления Students_View. Для этого также выберем создание формы в мастере форм и на первом этапе выберем представление и укажем использовать в форме все его поля. Укажем заголовком формы «Студенты и группы», а после завершения работы мастера, откроем форму в окне конструктора где изменим подписи полей.
Для создания отчётов нужно в окне Диспетчера проектов перейти на вкладку Documents, где выбрать пункт Reports(Отчёты) и нажать кнопку New. После этого откроется диалоговое окно NewReport (Новый отчёт) Выберем NewReport. Появится окно конструктора отчётов ReportDesigner. Определим среду данных для отчёта, для чего выберем из контекстного меню пункт DataEnvironment (Среда данных). Щёлкнем правой кнопкой мыши в окне среды данных и выберем в появившемся контекстном меню пункт Add…(Добавить). Добавим представление Studens_View. Перейдём к окну конструктора отчётов.
Для добавления всех полей из среды данных в отчёт выберем в главном меню окна VisualFoxProReport – QuickReport (Быстрый отчет). Появится окно QuickReport в котором выберем горизонтальное размещение полей, указав соответствующее положение переключателя в разделе FieldLayout. Нажмём ОК, и в области Detail отчёта появятся все поля из среды данных отчёта. Изменим надписи для полей и добавим линию для разделения записей при просмотре.
В области PageFooter будут уже помешены поля, содержащие функцию вычисления значения Текущей даты и номера страницы. Добавим ещё поле, выводящее значение, указывающее общее количество строк в отчёте. Для того чтобы вывести значение числа строк, поместим в полосу PageFooter объект Field (Поле). В окне ReportExpression нажжём кнопку Calculations (Вычисления), после чего появится диалоговое окно CalculateField (Вычисляемое поле), в котором выберем операцию Count (Количество), а в поле Expression укажем наименование первого поля – students_view.Id_zach. Рядом добавим соответствующие надписи, поместив на макет формы объекты Label (Надпись) и введя требуемые надписи. Сохраним отчёт.
Рис. 2.17.7. Макет отчёта в окне конструктора форм
Для создания меню нужно в окне Диспетчера проектов перейти на вкладку Other (Другое), где выбрать пункт Menus (Меню) и нажать кнопку New. После этого откроется диалоговое окно NewMenu (Новое меню) Выберем Menu. Появится окно конструктора меню MenuDesigner. Введём названия пунктов меню в поле Prompt (Наименование), а в раскрывающемся списке Result (Результат) определим действия, происходящие при выборе пункта меню. Введём подменю «Таблицы», для чего в поле Prompt введём название пункта меню «Таблицы», а в списке Result укажем Submenu (Подменю), затем нажмём на кнопку Create (Создать) после чего в раскрывающемся списке MenuLevel (Уровень меню) появится название созданного подменю. Все остальные пункты, созданные на этом уровне, будут пунктами подменю для пункта меню «Таблицы». Создадим пункт «Студенты». Для этого в списке Result укажем Command (Команда) и введём «DO FORM «c:\students\формы\student.scx»«, что значит открыть форму student.scx. Аналогично создадим пункты для открытия трёх других форм.
Затем в списке MenuLevel (Уровень меню) выберем верхний уровень – MenuBar и введём ещё одно подменю «BD», в котором укажем два пункта «Отчёт» и «Выход». В поле ввода команды для пункта «Отчёт» введём «REPORT FORM c:\students\отчёты\report.frx PREVIEW», т. е открытие файла отчёта. Для пункта «Выход» укажем команду QUIT.
Чтобы меню можно было использовать в приложении, сначала его нужно сгенерировать. Для этого используется пункт системного меню Menu (Меню) и диалоговое окно GenerateMenu (Генерация меню). В этом окне укажем файл, в котором будет сохранено меню, после чего нажмём кнопку Generate (Генерация).
Созданное меню необходимо запустить на экранной форме. Если просто в Диспетчере проекта выделить меню и нажать Run (Выполнить), то меню будет запущено в главном окне VisualFoxPro. Для того чтобы меню запускалось в форме приложения баз данных, необходимо установить флажок Top-LevelForm (Форма верхнего уровня) в диалоговом окне GeneralOptions (Основные опции) (пункт меню View или Menu) и снова запустить процесс генерации меню.
Теперь создадим главную форму приложения, из которой будут открываться все остальные. Назовём её Main_form. Поместим на макет формы компонент CommandGroup (Группа командных кнопок), у которого в свойстве ButtonCount (Количество кнопок) укажем значение 4 по количеству форм. В выпадающем списке вверху окна свойств выбираем нужную кнопку и в свойство Caption напишем текст надписи на этой кнопке. Затем перейдём на вкладку Methods (Методы) и выбираем метод ClickEvent (Событие щелчок). Щёлкнем два раза на названии события, после чего появится окно Command1.Click, в котором введём команду
DOFORM «<путь к файлу формы>«
Также поместим ещё один компонент CommandGroup с двумя кнопками для вывода отчёта и выхода из программы. Изменим аналогично текст надписи и зададим обработчики события нажатия на эти кнопки.
Теперь поместим на эту форму созданное ранее меню. Для этого сначала установим свойство формы ShowWindow равным 2 – Astoplevelform (Как форма верхнего уровня), затем в методе InitEvent пропишем путь к файлу меню
DO c:\students\меню\menu1.mpr WITH THIS, .T.
Поместим в обработчик события Destroy Event (Закрытие формы) формы команду CLEAR EVENTS для того, чтобы можно было выйти из программы при закрытии формы.
Создадим файл основной программы. Для этого в окне Диспетчера проекта перейдём на вкладку Code, где выберем пункт Programs (Программы) и нажмём кнопку New….Появится окно Program1, в котором напишем
DO FORM c:\students\формы\main_form.scx
_SCREEN.Visible = .T.
READEVENTS
Сначала откроется окно главной формы, затем значение свойства Visible (Видимость) окна проставим в Истина. Затем зададим точку останова командой READ EVENTS, то есть после выполнения этой команды программа будет ожидать действий пользователя, и все следующие за ней команды не будут выполнятся до тех пор, пока не будет выполнена команда CLEAR EVENTS.
Сохраним файл программы как Program1.prg и сделаем этот файл основной в приложении, для чего выделим его в Диспетчере проекта и в контекстном меню выберем пункт SetMain (Сделать основным). Файл при этом станет выделенным жирным шрифтом.
Для того чтобы сделать исполняемый файл с расширением .exe, необходимо выбрать опцию BuildExecutable (Построить исполняемый файл) в диалоговом окне BuildOptions (Опции построения), которое вызывается при нажатии кнопки Build (Построить) в окне диспетчера проекта. Потом нажать ОК и указать куда следует поместить исполняемый файл.
Чтобы в готовом файле .exe в процессе ввода часть русских букв автоматически не заменялись латинскими буквами из-за несовпадения кодовых страниц, необходимо в директорию, где находится .exe файл поместить файл конфигурации CONFIG.FPW, в котором указать
CODEPAGE=1251
Также можно поместить этот файл внутрь исполняемого файла. Для этого нужно добавить файл конфигурации в проект на закладке Other в раздел TextFiles.