Руководство разработчика. Hello World!

Материал из GedeminWiki
Перейти к: навигация, поиск

Со времен ветхого завета в мире программирования принято начинать знакомство с новой системой написанием простейшей программы вывода на экран строки "Hello World!". Будем придерживаться канонов. Читатель, уже знакомый с тем, как на Гедымине пишется программный код и создаются экранные формы, без малейших для себя последствий может пропустить эту главу. Мы же выполним следующие действия:

  1. Запустим Гедымин и подключимся к демо базе под учетной записью Administrator.
  2. В главном окне программы раскроем меню Сервис и вызовем команду Редактор скрипт-объектов.
  3. Найдем окно Проводник, в дереве выделим пункт Глобальные макросы[1] и нажмем правую кнопку мыши.
  4. Из появившегося меню выберем команду Добавить макрос, как показано на рисунке ниже:

<imgtag width="320px" link="on"> HelloWorld.AddMacros.png </imgtag>

Совет: При первом обращении Редактор скрипт-объектов может содержать вспомогательные окна, такие как: Список переменных, Стек вызовов, Сообщения и др. Для экономии экранного пространства их можно закрыть. Если вы случайно закрыли окно Проводника, вернуть на экран его можно с помощью комбинации горячих клавиш Ctrl-Alt-T или воспользовавшись меню Окна Редактора скрипт-объектов (не путайте с меню Окна главного окна Гедымина).

По выполнении вышеуказанных действий на рабочем поле Редактора скрипт-объектов откроется окно редактирования макроса.

<imgtag width="580px" link="on"> HelloWorld.AddMacros.Tab1.png </imgtag>

Пусть вас не смущает обилие полей ввода. В следующих главах мы подробно ознакомимся с предназначением каждого из них. А пока, наберем в поле Наименование макроса строку "Hello World!", а в поле Наименование функции – "HelloWorld" (Естественно, кавычки не являются частью строки и вводить их не следует. Они используются в тексте исключительно для выделения. Пробелы в имени функции недопустимы).

Далее, перейдем на вкладку Скрипт и наберем такой текст процедуры:

Option Explicit
Sub HelloWorld
  Application.MessageBox "Hello World!", "", vbOkOnly
End Sub

Результат наших усилий приведен ниже:

<imgtag width="580px" link="on"> HelloWorld.AddMacros.Tab2.png </imgtag>

По окончании ввода нажмем клавишу F9 для выполнения нашей программы. Если текст набран без синтаксических ошибок, то на экране появится следующее диалоговое окно:

<imgtag link="on"> HelloWorld.AddMacros.MsgBox.png </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"> HelloWorld.AddMacros.MsgBox2.png </imgtag>

Создаем экранную форму

Любая современная среда быстрой разработки должна содержать инструменты визуального проектирования экранных форм. Гедымин в этом плане не является исключением. В предыдущих примерах мы использовали стандартное окно для вывода текстовых сообщений, посланное нам свыше создателями операционной системы. Попробуем повторить Творца и самостоятельно создать экранную форму.

Для этого обратимся к Редактору форм. Соответствующий пункт находится в меню Сервис главного окна программы.

<imgtag width="320px" link="on"> HelloWorld.FormEditor.png </imgtag>

Как видно на рисунке, окно редактора содержит список форм, находящихся в данный момент в базе данных, и набор кнопок для осуществления действий над ними. Нас интересует команда Создать. Выберем соответствующую кнопку. На экране откроется мастер создания экранной формы:

<imgtag width="320px" link="on"> HelloWorld.NewForm1.png </imgtag>

Оставим ответ на вопрос «Чем отличается простая форма от наследуемой?» для последующих глав. Не будем менять выбор по-умолчанию – Простая форма – и нажмем кнопку Вперед.

Следующая страница мастера предлагает нам ввести имя типа создаваемой формы.

<imgtag width="320px" link="on"> HelloWorld.NewForm2.png </imgtag>

Внимательно ознакомимся с правилами, которым должно соответствовать имя и введем в поле ввода строку “HelloWorld”. Обратите внимание, что каждое имя типа формы автоматически получает префикс “usrf_”, т.е. в тексте программы мы будем обращаться к созданному нами типу, как “usrf_HelloWorld”.

После того как имя введено, нажимаем Вперед и попадаем на финальную страницу мастера:

<imgtag width="320px" link="on"> HelloWorld.NewForm3.png </imgtag>

Убедимся, что мы не допустили ошибок в наименовании типа и нажмем Ок (если ошибки все-таки есть, то с помощью кнопки Назад можно вернуться и исправить их).

С этого момента начинается самое интересное. Гедымин переключится в режим Дизайнера форм. На экране появятся три окна. Проектируемая нами форма в исходном, девственно чистом состоянии:

<imgtag width="320px" link="on"> HelloWorld.Designer1.png </imgtag>

Инспектор объектов:

<imgtag width="320px" link="on"> HelloWorld.Designer2.png </imgtag>

Палитра компонентов:

<imgtag width="320px" link="on"> HelloWorld.Designer3.png </imgtag>

Принципы визуального проектирования

Для читателя, не знакомого с такими средами разработки, как Borland Delphi[3] или Microsoft Visual Studio, поясним основные принципы. Палитра компонентов содержит доступные нам визуальные и невизуальные компоненты, например, кнопки, списки, переключатели, флажки, поля ввода и т.д. Поскольку компонентов много, во избежании путаницы они тематически сгруппированы и размещены на нескольких вкладках. Для выбора компонента мы открываем нужную вкладку и щелкаем мышью по его пиктограммке. Затем щелкаем по тому месту на форме, где мы хотели бы этот компонент разместить.

Изменить свойства компонента на форме можно следующим образом:

  1. Находим компонент и выделяем одинарным щелчком мыши. Для изменения свойств самой формы, необходимо щелкнуть мышью по свободному пространству на ней;
  2. переходим в окно Инспектора объектов;
  3. находим в списке нужное свойство и устанавливаем его значение.

Совет: Для быстрого перехода в Инспектор объектов используйте клавишу 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"> HelloWorld.Designer4.png </imgtag>

5. Установим следющие значения, как показано на рисунке:

 Font.Color      = clYellow
 Font.Name       = Tahoma
 Font.Size       = 18
 Font.Style.Bold = True 

6. После проделанных манипуляций форма должна принять вид:

<imgtag width="320px" link="on"> HelloWorld.Designer5.png </imgtag>

7. Запомним название компонента TLabel – usrg_Label1. Сохраним форму и выйдем из режима дизайнера. Пиктограммка команды Сохранить и выйти находится на Палитре компонентов (см. Рис. 63). Можно также воспользоваться горячей клавишей F2.

<imgtag width="320px" link="on"> HelloWorld.Designer6.png </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"> HelloWorld.Version3.png </imgtag>

Заключение

Только что мы ознакомились с азами программирования на платформе Гедымин. Мы узнали где и как писать код, обратились к некоторым глобальным системным объектам, создали экземпляр бизнес-класса и с помощью него прочитали из базы данных наименование учетной записи, а также спроектировали и вывели на экран диалоговое окно.

Задания для самопроверки

  1. Запустите программу и подключитесь к демонстрационной базе данных под учетной записью Administrator.
  2. Откройте окно Редактора скрипт-объектов и изучите его содержимое.
  3. Ознакомьтесь со списком команд каждого пункта меню.
  4. Внесите изменения в текст процедуры HelloWorld, чтобы вместо строки "Hello Administrator" на экран выводилось приветствие "Доброе утро, Administrator!", "Добрый день, Administrator!" или "Добрый вечер, Administrator!", в зависимости от времени суток. Подсказка, используйте функции Time (возвращает текущее время) и Hour (извлекает номер часа из времени).[4]
  5. Постарайтесь ответить на вопрос: почему необходимо объявлять переменную с помощью оператора Dim перед ее использованием?
  6. Почему в конце выполнения процедуры необходимо с помощью вызова Designer.DestroyObject уничтожать созданные объекты?
  7. Откройте окно Редактора форм и изучите его содержимое.
  8. Модифицируйте созданную нами выше экранную форму. Замените компонент TLabel на TEdit. В тексте макроса присвоение свойства Caption замените на свойство Text. Запустите измененный макрос. Что вы наблюдаете на экране?

Примечания

  1. Обратите внимание, что ветвь Глобальные макросы присутствует только в модуле APPLICATION. Выбор текущего модуля осуществляется из выпадающего списка над деревом объектов Проводника.
  2. При наборе текста процедуры, номера строк следует опустить.
  3. С 2006 года разрабатывается поставляется компанией CodeGear под названием CodeGear Delphi.
  4. Для выполнения задания вам придется использовать оператор условного перехода.
Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты