Изучаем программирование в GUPTA Team Developer. Шаг 1 - Запуск и настройка приложений. Основные функции, события, классы и объектыИсточник: Interface Ltd Большаков С.А.
Оглавление
В качестве базовых средств разработки используется продукт Team Developer. Другие названия этих средств разработки (возможно известные нашим читателям) - SQLWindows, Centura Builder и Centura Team Developer. Основным языком программирования является язык SAL, который во многом похож на язык СИ, но имеет ряд особенностей, упрощающих процесс программирования информационных систем. Для изучения работы с БД мы воспользуемся продуктом SQLBase, который в локальном варианте включен в продукт TD и существует как отдельный SQL сервер БД - СУБД. Мы будем ориентироваться на версии: TD 2.1 и SQLBase 8.0, хотя все действия описываемые в статьях вы сможете реализовать практически для любой версии программных продуктов. Запуск TD и сохранение приложения После инсталляции TD, которая выполняется в режиме мастера подсказок, вы можете запустить средства разработки любым известным Вам способом, например, из системного меню Windows:
На экране высветиться стандартное окно - Рис. 1 с пустым приложением (стандартное название в заголовке - Application1).
Рис. 1. Первоначальное окно TD после запуска На рис. 2 показано окно TD после выполненных действий. Рис. 2. Окно TD после сохранения приложения и включения окон дизайнера В нашем случае (слева направо), расположены следующие окна:
Размеры и расположения окон могут быть подобраны пользователем по вкусу и в зависимости от разрешения дисплея произвольно. Кроме того, пользователь может создавать различные обзоры (VIEW) с нужными настройками. Обработка сообщений приложения и вызов стандартной функции Приложение (Application) является стандартным объектом и обрабатывает только следующие стандартные сообщения:
Заметим, что в ассистенте кодировки данные сообщения появляются при выделении строки Application Action, для чего нужно левой кнопкой однократно щелкнуть слева от ромбика (а). Если Вы выделите другой раздел текста (OUTLINE) из глобальных определений (Global Declarations) приложение, то содержимое окна подсказки измениться в соответствии с контекстом выделенного раздела.
которая представляет собой шаблон вызовы функции с подсказками типов допустимых параметров. Вручную заменим параметры так:
6. Аналогичным образом создадим реакцию приложения на сообщение на SAM_AppExit:
В результате мы получим следующий текст приложения в разделе реакции на стандартные сообщения (Рис. 3): Рис. 3. Фрагмент текста обработки сообщений для приложения Так подробно мы описали действия программиста только для начального знакомства, в дальнейшем будем укрупнять комментарии к действиям. Первое простейшее приложение готово к работе. Компиляция и запуск приложения Для компиляции и запуска приложения нужно нажать клавишу F7. Кроме того, можно это сделать через меню дизайнера (DEBUG ->GO) или панели инструментов (ориентируйтесь по пиктограммам, задублированным в меню). При обнаружении ошибок, компилятор выдаст диагностику. В этом случае программу нужно откорректировать и запустить компиляцию и выполнение заново.
Рис. 4. Результат работы первого приложения на TD Формирование исполнимого модуля приложения Для формирования исполнимого модуля (*.EXE) нужно выполнить следующие действия: 8. Вызвать окно настройки свойств приложения: PROJECT->BUILD SETTING… Рис. 5. Окно настройки исполнимого модуля для TD Выбрать тип создаваемого приложения Standart EXE, задать имя файла EXE (Target Name - у нас step1.exe), при необходимости задать пиктограмму приложения (Target Icon) и другие свойства, смысл которых ясен из контекстной подсказки. Для начала, не надо задавать другие свойства, их назначение мы поясним позднее. После установок нажать OK. Для компиляции и создания EXE нужно вызвать пункт меню - PROJECT->BUILD: step1.exe. При нормальном создании приложения будет выдано сообщение компилятором: "Build was successful". В том каталоге, где храниться исходный текст step1.app, будет сформировано исполнимое приложение step1.exe. Его можно запустить отдельно от TD и проверить его работоспособность.
Для работы любой программы могут быть описаны собственные переменные. Предопределены и специальные системные переменные, о которые мы рассмотрим ниже. Переменные могут быть глобальными, если они определены в разделе Global Declarations приложения, и локальными, если они определены при описании функции или отдельных окон.
Каждый тип переменных имеет свое назначение и для него определены необходимые операции, в том числе и возможные операции преобразования типов в виде функций SAL.
Рис. 6. Описание глобальных переменных
Рис. 7. Фрагмент текста с переменными Результат работы данной программы мы не приводим, так как она тривиальная и дана для иллюстрации возможностей применения переменных в программе. Отметим, что для упрощения подготовки текста можно воспользоваться также копированием через буфер обмена (clipboard). Для повышения эффективности работы программы могут быть описаны и вызваны функции. Функции могут быть внешними, если тело определено в другом программном модуле (например, DLL) или внутренними, если тело функции определено в приложении, или подключено в виде текста в приложение. Внутренние функции могут быть глобальными (раздел Global Declarations) или локальными, определенными в окнах или классах. Описание всех видов функций выполняется аналогично, поэтому рассмотрим их описание на примере описания внутренних глобальных функций. Описание функций имеет стандартную структуру, представленную на рисунке ниже. Рис. 8. Структура описания функции
Рис. 9. Пример описания функции суммирования Sum Функция возвращает целочисленное значение суммы двух параметров и его же в виде второго параметра. Локальная переменная nSum используется для суммирования. 14. Вызов данной функции иллюстрируется текстом приводимым ниже. Рис. 10. Пример вызова функции суммирования Sum Поместите его в тело обработчика сообщений приложения. В первом вызове функции Sum используется возвращаемое значение самой функции, а во втором вызове используется возвращаемый параметр nSecond.
15. Для получения параметров в приложении используются стандартные системные переменные (как и СИ):
16. Передача параметров выполняется к EXE модулю, поэтому проверка этих параметров может быть выполнена только вне дизайнера TD. Возможность использования параметров иллюстрирует нижеследующий фрагмент текста: Рис. 11. Фрагмент текста с использованием параметров приложения Если счетчик параметров больше 1, то это означает, что помимо имени приложения в запуске присутствует, по крайней мере, один параметр. Этот параметр выводится в окне сообщения. Если счетчик параметров равен 1, то выводится нулевой параметр, идентифицирующий название приложения и путь к нему. 17. Внесите данный текст в любой фрагмент текста, например, в тело обработки сообщения SAM_AppExit и запустите приложение из командной строки (например, в FAR или другим способом) причем двумя следующими способами:
и
Во втором случае вы получите следующее окно сообщения при выполнении данного фрагмента программы. Рис. 12. Результат работы фрагмента программы при задании параметра Приведенные в данной статье действия и операции достаточно просты в освоении, но они закладывают основу для серьезной работы программиста в среде TD. Думаем, что через час Вы выполните все задания, представленные в данной статье и будете самостоятельно экспериментировать в рамках рассмотренных тем и даже шире. В результате Вы получите приложение step1.app, которое для проверки усвоения материала можно скачать здесь. В следующей статье этого цикла мы рассмотрим способы построения пользовательского интерфейса и реализации бизнес логики в приложениях. Дадим описание окон разного вида, опишем работу с этими окнами, оконными объектами, изучим построение меню и кнопок инструментов. |