Руководство разработчика. Hello World!
Со времен ветхого завета в мире программирования принято начинать знакомство с новой системой написанием простейшей программы вывода на экран строки "Hello World!". Будем придерживаться канонов. Читатель, уже знакомый с тем, как на Гедымине пишется программный код и создаются экранные формы, без малейших для себя последствий может пропустить эту главу. Мы же выполним следующие действия:
- Запустим Гедымин и подключимся к демо базе под учетной записью Administrator.
- В главном окне программы раскроем меню Сервис и вызовем команду Редактор скрипт-объектов.
- Найдем окно Проводник, в дереве выделим пункт Глобальные макросы[1] и нажмем правую кнопку мыши.
- Из появившегося меню выберем команду Добавить макрос, как показано на рисунке ниже:
<imgtag width="320px" link="on">
</imgtag>
Совет: При первом обращении Редактор скрипт-объектов может содержать вспомогательные окна, такие как: Список переменных, Стек вызовов, Сообщения и др. Для экономии экранного пространства их можно закрыть. Если вы случайно закрыли окно Проводника, вернуть на экран его можно с помощью комбинации горячих клавиш Ctrl-Alt-T или воспользовавшись меню Окна Редактора скрипт-объектов (не путайте с меню Окна главного окна Гедымина).
По выполнении вышеуказанных действий на рабочем поле Редактора скрипт-объектов откроется окно редактирования макроса.
<imgtag width="580px" link="on">
</imgtag>
Пусть вас не смущает обилие полей ввода. В следующих главах мы подробно ознакомимся с предназначением каждого из них. А пока, наберем в поле Наименование макроса строку "Hello World!", а в поле Наименование функции – "HelloWorld" (Естественно, кавычки не являются частью строки и вводить их не следует. Они используются в тексте исключительно для выделения. Пробелы в имени функции недопустимы).
Далее, перейдем на вкладку Скрипт и наберем такой текст процедуры:
Option Explicit Sub HelloWorld Application.MessageBox "Hello World!", "", vbOkOnly End Sub
Результат наших усилий приведен ниже:
<imgtag width="580px" link="on">
</imgtag>
По окончании ввода нажмем клавишу F9 для выполнения нашей программы. Если текст набран без синтаксических ошибок, то на экране появится следующее диалоговое окно:
<imgtag link="on">
</imgtag>
Ура! Наше первое приложение успешно работает.
Содержание |
Обращаемся к базе данных
Пусть мы и достигли поставленной цели, но очевидно, что однострочная процедура вряд ли позволит нам составить даже самое поверхностное впечатление о возможностях платформы. Давайте усложним задачу и заставим нашу программу приветствовать не только весь мир, но и лично пользователя. Персональную информацию, имя учетной записи, возьмем непосредственно из базы данных. Код второй версии процедуры HelloWorld выглядит следующим образом[2]:
01 Option Explicit 02 Sub HelloWorld 03 Dim gdcUser 04 Set gdcUser = Designer.CreateObject(Application,_ 05 "TgdcUser", "") 06 gdcUser.SubSet = "ByID" 07 gdcUser.ID = IBLogin.UserKey 08 gdcUser.Open 09 10 Application.MessageBox "Hello World!" & vbCrLf &_ 11 "Hello " & gdcUser.ObjectName & "!", _ 12 "", vbOkOnly 13 14 Designer.DestroyObject(gdcUser) 15 End Sub
Прежде чем привести нашу процедуру в действие поясним некоторые нюансы.
Мы можем обращаться к функциям и параметрам Гедымина через набор глобальных объектов. В данном случае используются три таковых: глобальный объект Designer предназначен для динамического создания и уничтожения объектов в процессе работы программы, IBLogin – содержит параметры текущего подключения к базе данных, а Application – среди прочих – обладает функцией вывода на экран окна с сообщением.
В четвертой строке представленного кода, вызовом метода Designer.CreateObject, создается бизнес-объект типа TgdcUser и, для дальнейшего обращения, сохраняется в объявленной строкой выше переменной gdcUser. В шестой строке мы указываем, что будем работать только с одной записью, которую отыщем по идентификатору. В следующей строке мы передаем бизнес-объекту этот идентификатор, взяв его из свойства IBLogin.UserKey. В восьмой строке мы открываем набор данных методом gdcUser.Open и используем считанное из базы имя при формировании текста приветствия и выводе его на экран (строки с десятой по двенадцатую). И, наконец, закончив работу с бизнес-объектом, в четырнадцатой строке мы удаляем его с помощью метода Designer.DestroyObject.
Теперь, когда код процедуры уже не представляет для нас загадки, можем смело нажимать клавишу F9 и созерцать на экране результат наших трудов:
<imgtag link="on">
</imgtag>
Создаем экранную форму
Любая современная среда быстрой разработки должна содержать инструменты визуального проектирования экранных форм. Гедымин в этом плане не является исключением. В предыдущих примерах мы использовали стандартное окно для вывода текстовых сообщений, посланное нам свыше создателями операционной системы. Попробуем повторить Творца и самостоятельно создать экранную форму.
Для этого обратимся к Редактору форм. Соответствующий пункт находится в меню Сервис главного окна программы.
<imgtag width="320px" link="on">
</imgtag>
Как видно на рисунке, окно редактора содержит список форм, находящихся в данный момент в базе данных, и набор кнопок для осуществления действий над ними. Нас интересует команда Создать. Выберем соответствующую кнопку. На экране откроется мастер создания экранной формы:
<imgtag width="320px" link="on">
</imgtag>
Оставим ответ на вопрос «Чем отличается простая форма от наследуемой?» для последующих глав. Не будем менять выбор по-умолчанию – Простая форма – и нажмем кнопку Вперед.
Следующая страница мастера предлагает нам ввести имя типа создаваемой формы.
<imgtag width="320px" link="on">
</imgtag>
Внимательно ознакомимся с правилами, которым должно соответствовать имя и введем в поле ввода строку “HelloWorld”. Обратите внимание, что каждое имя типа формы автоматически получает префикс “usrf_”, т.е. в тексте программы мы будем обращаться к созданному нами типу, как “usrf_HelloWorld”.
После того как имя введено, нажимаем Вперед и попадаем на финальную страницу мастера:
<imgtag width="320px" link="on">
</imgtag>
Убедимся, что мы не допустили ошибок в наименовании типа и нажмем Ок (если ошибки все-таки есть, то с помощью кнопки Назад можно вернуться и исправить их).
С этого момента начинается самое интересное. Гедымин переключится в режим Дизайнера форм. На экране появятся три окна. Проектируемая нами форма в исходном, девственно чистом состоянии:
<imgtag width="320px" link="on">
</imgtag>
Инспектор объектов:
<imgtag width="320px" link="on">
</imgtag>
Палитра компонентов:
<imgtag width="320px" link="on">
</imgtag>
Принципы визуального проектирования
Для читателя, не знакомого с такими средами разработки, как Borland Delphi[3] или Microsoft Visual Studio, поясним основные принципы. Палитра компонентов содержит доступные нам визуальные и невизуальные компоненты, например, кнопки, списки, переключатели, флажки, поля ввода и т.д. Поскольку компонентов много, во избежании путаницы они тематически сгруппированы и размещены на нескольких вкладках. Для выбора компонента мы открываем нужную вкладку и щелкаем мышью по его пиктограммке. Затем щелкаем по тому месту на форме, где мы хотели бы этот компонент разместить.
Изменить свойства компонента на форме можно следующим образом:
- Находим компонент и выделяем одинарным щелчком мыши. Для изменения свойств самой формы, необходимо щелкнуть мышью по свободному пространству на ней;
- переходим в окно Инспектора объектов;
- находим в списке нужное свойство и устанавливаем его значение.
Совет: Для быстрого перехода в Инспектор объектов используйте клавишу F11, а для активизации Палитры компонентов – F10.
Перейдем от теории к практике. Для настройки нашей формы сделаем следующее:
1. Перейдем в Инспектор объектов и установим следющие свойства:
BorderStyle = bsDialog Caption = Hello World! Color = clBlue Position = poScreenCenter
2. На вкладке Стандартные палитры компонентов найдем и выделим компонент TLabel (ее пиктограммка имеед вид прописной буквы А). 3. Поместим ее на форму и установим следующие свойства:
Align = alClient Alignment = taCenter Layout = tlCenter
4. Найдем в Инспекторе объектов свойство Font. Обратите внимание на изображение плюса слева от наименования свойства. Щелкнув по нему мы раскроем список свойств шрифта:
<imgtag width="320px" link="on">
</imgtag>
5. Установим следющие значения, как показано на рисунке:
Font.Color = clYellow Font.Name = Tahoma Font.Size = 18 Font.Style.Bold = True
6. После проделанных манипуляций форма должна принять вид:
<imgtag width="320px" link="on">
</imgtag>
7. Запомним название компонента TLabel – usrg_Label1. Сохраним форму и выйдем из режима дизайнера. Пиктограммка команды Сохранить и выйти находится на Палитре компонентов (см. Рис. 63). Можно также воспользоваться горячей клавишей F2.
<imgtag width="320px" link="on">
</imgtag>
8. Закрываем окно Редактора форм с помощью кнопки Закрыть.
Создаем форму из макроса
Все готово к написанию третей версии процедуры HelloWorld, в которой мы не только прочитаем из базы данных наименование текущей учетной записи, но и выведем на экран приветствие в сконструированном нами окне.
01 Option Explicit 02 Sub HelloWorld 03 Dim gdcUser, F 04 Set gdcUser = Designer.CreateObject(Application,_ 05 "TgdcUser", "") 06 gdcUser.SubSet = "ByID" 07 gdcUser.ID = IBLogin.UserKey 08 gdcUser.Open 09 10 Set F = Designer.CreateObject(Application, _ 11 "usrf_HelloWorld", "") 12 F.GetComponent("usrg_Label1").Caption = _ 13 "Hello " & gdcUser.ObjectName & "!" 14 F.ShowModal 15 16 Designer.DestroyObject(F) 17 Designer.DestroyObject(gdcUser) 18 End Sub
Рассмотрим приведенный листинг. Строки с первой по девятую нам уже знакомы. Здесь мы создаем бизнес-объект и считываем из базы данных наименование текущей учетной записи. В десятой строке мы создаем экземпляр спроектированной нами формы, указав имя ее типа – "usrf_HelloWorld". В двенадцатой строке мы обращаемся к компоненту TLabel по имени "usrg_Label1" и присваиваем свойству Caption текст приветствия, который формируем в тринадцатой строке. Метод ShowModal в следующей строке процедуры выводит форму на экран и останавливает выполнение макроса пока пользователь не закроет окно.
Проверяем правильно ли введен текст макроса и запускаем его на выполнение – F9. Результат приведен ниже:
<imgtag width="320px" link="on">
</imgtag>
Заключение
Только что мы ознакомились с азами программирования на платформе Гедымин. Мы узнали где и как писать код, обратились к некоторым глобальным системным объектам, создали экземпляр бизнес-класса и с помощью него прочитали из базы данных наименование учетной записи, а также спроектировали и вывели на экран диалоговое окно.
Задания для самопроверки
- Запустите программу и подключитесь к демонстрационной базе данных под учетной записью Administrator.
- Откройте окно Редактора скрипт-объектов и изучите его содержимое.
- Ознакомьтесь со списком команд каждого пункта меню.
- Внесите изменения в текст процедуры HelloWorld, чтобы вместо строки "Hello Administrator" на экран выводилось приветствие "Доброе утро, Administrator!", "Добрый день, Administrator!" или "Добрый вечер, Administrator!", в зависимости от времени суток. Подсказка, используйте функции Time (возвращает текущее время) и Hour (извлекает номер часа из времени).[4]
- Постарайтесь ответить на вопрос: почему необходимо объявлять переменную с помощью оператора Dim перед ее использованием?
- Почему в конце выполнения процедуры необходимо с помощью вызова Designer.DestroyObject уничтожать созданные объекты?
- Откройте окно Редактора форм и изучите его содержимое.
- Модифицируйте созданную нами выше экранную форму. Замените компонент TLabel на TEdit. В тексте макроса присвоение свойства Caption замените на свойство Text. Запустите измененный макрос. Что вы наблюдаете на экране?
Примечания
- ↑ Обратите внимание, что ветвь Глобальные макросы присутствует только в модуле APPLICATION. Выбор текущего модуля осуществляется из выпадающего списка над деревом объектов Проводника.
- ↑ При наборе текста процедуры, номера строк следует опустить.
- ↑ С 2006 года разрабатывается поставляется компанией CodeGear под названием CodeGear Delphi.
- ↑ Для выполнения задания вам придется использовать оператор условного перехода.