Журнал LinuxFormat - перейти на главную

LXF98:Ананас

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
м (шаблон)
 
(не показаны 11 промежуточных версий 3 участников)
Строка 1: Строка 1:
 +
{{Цикл/Ананас}}
 +
 
==Создаем CRUD-приложение==
 
==Создаем CRUD-приложение==
  
 
''<font color=darkred>'''ЧАСТЬ 2'''</font> Вариации «Hello, World!» набили оскомину – и '''Андрей Паскаль''' будет стараться избежать надоевшего приветствия до последнего, а попутно создаст бизнес-приложение, не написав ни строчки кода!''
 
''<font color=darkred>'''ЧАСТЬ 2'''</font> Вариации «Hello, World!» набили оскомину – и '''Андрей Паскаль''' будет стараться избежать надоевшего приветствия до последнего, а попутно создаст бизнес-приложение, не написав ни строчки кода!''
  
 +
----
 +
 +
<font color=red>'''Важно! Загрузить изображения...'''</font>
 +
 +
----
 
Из чего состоит приложение Ананаса? Как начать работу над собственной бизнес-схемой?
 
Из чего состоит приложение Ананаса? Как начать работу над собственной бизнес-схемой?
  
Строка 19: Строка 26:
 
*Банк.
 
*Банк.
  
Разработка бизнес-схем ведется в среде разработки Дизайнер платформы Ананас. После успешного запуска командой
+
Разработка бизнес-схем ведется в среде разработки <font color=darkblue>Дизайнер</font> платформы Ананас ('''Рис. 1'''). После успешного запуска командой
  
 
  [app@app ~]$ ananas-designer
 
  [app@app ~]$ ananas-designer
  
Дизайнер предложит выбрать бизнес-схему для работы из списка, точно так же, как предлагает выбрать бизнес-схему при запуске сам Ананас. Однако, в отличие от Ананаса, Дизайнер предоставляет доступ к настройке и созданию/модификации структур данных, алгоритмов, а также печатных и экранных форм бизнес-схемы.
+
<font color=darkblue>Дизайнер</font> предложит выбрать бизнес-схему для работы из списка, точно так же, как предлагает выбрать бизнес-схему при запуске сам Ананас. Однако, в отличие от Ананаса, <font color=darkblue>Дизайнер</font> предоставляет доступ к настройке и созданию/модификации структур данных, алгоритмов, а также печатных и экранных форм бизнес-схемы.
  
 
Для создания новой бизнес-схемы требуется указать (или создать новую) группу в окне диалога выбора бизнес-схем и активировать пункт Новая бизнес-схема меню Действия.
 
Для создания новой бизнес-схемы требуется указать (или создать новую) группу в окне диалога выбора бизнес-схем и активировать пункт Новая бизнес-схема меню Действия.
Строка 29: Строка 36:
 
Открывшийся диалог позволяет задать параметры новой бизнес-схемы. Наиболее важными из них являются параметры доступа к базе данных на SQL-сервере и положение файла бизнес-схемы в файловой системе вашего компьютера. Если вы укажете несуществующую базу данных или несуществующий файл бизнес-схемы, они будут созданы Ананасом автоматически.
 
Открывшийся диалог позволяет задать параметры новой бизнес-схемы. Наиболее важными из них являются параметры доступа к базе данных на SQL-сервере и положение файла бизнес-схемы в файловой системе вашего компьютера. Если вы укажете несуществующую базу данных или несуществующий файл бизнес-схемы, они будут созданы Ананасом автоматически.
  
Имя файла ресурса содержит ссылку на файл, в котором хранятся значения всех остальных полей этого диалога. Имеется возможность выбора ранее созданного файла ресурса: для этого достаточно вызвать диалог выбора файла щелчком по кнопке, расположенной справа от поля с именем файла ресурса. При открытии файла ресурса значения всех полей диалога будут заменены значениями из этого файла.
+
На '''Рис. 2''' показан пример заполнения параметров настройки бизнес-схемы для случая использования ''MySQL'' в качестве сервера баз данных.
  
Заголовок базы данных предназначен для пользователя и отображается в списке доступных для выбора баз данных в диалоге Список бизнес-схем, появляющемся при старте Дизайнера.
+
*'''Имя файла''' ресурса содержит ссылку на файл, в котором хранятся значения всех остальных полей этого диалога. Имеется возможность выбора ранее созданного файла ресурса: для этого достаточно вызвать диалог выбора файла щелчком по кнопке, расположенной справа от поля с именем файла ресурса. При открытии файла ресурса значения всех полей диалога будут заменены значениями из этого файла.
  
Имя базы данных содержит имя базы данных, используемое системой при доступе к серверу базы данных.
+
*''Заголовок базы данных''' предназначен для пользователя и отображается в списке доступных для выбора баз данных в диалоге <font color=darkblue>Список бизнес-схем</font>, появляющемся при старте <font color=darkblue>Дизайнера</font>.
  
Тип сервера базы данных позволяет выбрать один из поддерживаемых Ананасом серверов баз данных (MySQL, PostgreSQL или SQLite). Разумеется, следует убедиться, что соответствующий выбираемому вами типу сервер установлен и запущен, так как здесь вы указываете лишь драйвер, который не будет работать, если не установлен соответствующий сервер.
+
*'''Имя базы данных''' содержит имя базы данных, используемое системой при доступе к серверу базы данных.
  
Адрес сервера базы данных – это адрес компьютера, на котором установлен сервер выбранного выше типа. Разумеется, сервер баз данных может работать как на том же самом компьютере, где вы установили Ананас, так и на любом другом. Если сервер баз данных запущен локально, здесь следует указать значение localhost. В остальных случаях следует узнать адрес сервера у системного администратора. Адрес может быть задан как DNS-именем (например, myhost.com), так и числовым значением (например, 127.0.0.1).
+
*'''Тип сервера базы данных''' позволяет выбрать один из поддерживаемых Ананасом серверов баз данных (''MySQL'', ''PostgreSQL'' или ''SQLite''). Разумеется, следует убедиться, что соответствующий выбираемому вами типу сервер установлен и запущен, так как здесь вы указываете лишь драйвер, который не будет работать, если не установлен соответствующий сервер.
  
Порт сервера базы данных по умолчанию не содержит никакого значения. Его следует задавать лишь в тех случаях, когда используется нестандартный порт, что случается достаточно редко. По этому вопросу следует консультироваться с системным администратором, выполнявшим установку сервера баз данных. Если вы выполняли установку сервера баз данных самостоятельно и не меняли порт сервера баз данных, то поле Порт сервера базы данных следует оставить пустым.
+
*'''Адрес сервера базы данных''' – это адрес компьютера, на котором установлен сервер выбранного выше типа. Разумеется, сервер баз данных может работать как на том же самом компьютере, где вы установили Ананас, так и на любом другом. Если сервер баз данных запущен локально, здесь следует указать значение <font color=darkred>localhost</font>. В остальных случаях следует узнать адрес сервера у системного администратора. Адрес может быть задан как DNS-именем (например, '''myhost.com'''), так и числовым значением (например, 127.0.0.1).
  
Задав таким образом значения полей, следует нажать кнопку OK, а затем выбрать только что определенную бизнес-схему и снова нажать OK. После получения подтверждения о локальном сохранении настроек (в каталоге ~/.ananas) откроется главное окно Дизайнера.
+
*'''Порт сервера базы данных''' по умолчанию не содержит никакого значения. Его следует задавать лишь в тех случаях, когда используется нестандартный порт, что случается достаточно редко. По этому вопросу следует консультироваться с системным администратором, выполнявшим установку сервера баз данных. Если вы выполняли установку сервера баз данных самостоятельно и не меняли порт сервера баз данных, то поле <font color=darkblue>Порт сервера базы данных</font> следует оставить пустым.
  
Наше CRUD-приложение предназначено для управления Справочником контрагентов, поэтому в дереве бизнес-объектов нас в первую очередь будет интересовать раздел Справочники. Определение справочника начинается с присвоения ему имени, которое в дальнейшем будет использовано в программировании бизнес-логики в процедурах на языке Ананас-Скрипт. В главном окне Дизайнера щелкните правой клавишей мыши по разделу Справочники и в появившемся меню выберите пункт Новый.
+
Задав таким образом значения полей, следует нажать кнопку <font color=darkblue>OK</font>, а затем выбрать только что определенную бизнес-схему и снова нажать <font color=darkblue>OK</font>. После получения подтверждения о локальном сохранении настроек (в каталоге '''~/.ananas''') откроется главное окно <font color=darkblue>Дизайнера</font>.
  
В появившемся экранном диалоге закладка Общий позволяет задать имя справочника и заполнить поле Описание. На данном этапе в этом диалоге больше ничего изменять не требуется. Следует закрыть его и перейти к определению реквизитов Справочника контрагентов. Разумеется, среда разработки Ананас позволяет организовать древовидную структуру справочника. Однако, желающих изучить эту тему я адресую к «Справочному руководству по Дизайнеру» Ананаса,
+
Наше CRUD-приложение предназначено для управления <font color=darkblue>Справочником контрагентов</font>, поэтому в дереве бизнес-объектов ('''Рис. 3''') нас в первую очередь будет интересовать раздел <font color=darkblue>Справочники</font>. Определение справочника начинается с присвоения ему имени, которое в дальнейшем будет использовано в программировании бизнес-логики в процедурах на языке Ананас-Скрипт. В главном окне <font color=darkblue>Дизайнера</font> щелкните правой клавишей мыши по разделу <font color=darkblue>Справочники</font> и в появившемся меню выберите пункт <font color=darkblue>Новый</font>.
а для нашего простого CRUD-приложения древовидная структура в Справочнике контрагентов нам не нужна.
+
  
Как только вы закроете диалог, где было задано имя справочника, в дереве бизнес-схемы появится папка с именем Справочник контрагентов, внутри которой видны папки Элемент, Группа, Формы. Для определения первого реквизита справочника следует щелкнуть правой кнопкой мыши по папке Элемент и выбрать пункт Новый появившегося меню. В открывшимся диалоге необходимо задать такие свойства реквизита, как Имя, Тип, Ширина (Рис. 4). Прочие свойства задавать
+
В появившемся экранном диалоге закладка <font color=darkblue>Общий</font> позволяет задать имя справочника и заполнить поле <font color=darkblue>Описание</font>. На данном этапе в этом диалоге больше ничего изменять не требуется. Следует закрыть его и перейти к определению реквизитов <font color=darkblue>Справочника контрагентов</font>. Разумеется, среда разработки Ананас позволяет организовать древовидную структуру справочника. Однако, желающих изучить эту тему я адресую к «Справочному руководству по Дизайнеру» Ананаса, а для нашего простого CRUD-приложения древовидная структура в Справочнике контрагентов нам не нужна.
 +
 
 +
Как только вы закроете диалог, где было задано имя справочника, в дереве бизнес-схемы появится папка с именем Справочник контрагентов, внутри которой видны папки <font color=darkblue>Элемент</font>, <font color=darkblue>Группа</font>, <font color=darkblue>Формы</font>. Для определения первого реквизита справочника следует щелкнуть правой кнопкой мыши по папке <font color=darkblue>Элемент</font> и выбрать пункт <font color=darkblue>Новый</font> появившегося меню. В открывшимся диалоге необходимо задать такие свойства реквизита, как <font color=darkblue>Имя</font>, <font color=darkblue>Тип</font>, <font color=darkblue>Ширина</font> ('''Рис. 4'''). Прочие свойства задавать
 
не обязательно, их назначение описано в «Справочном руководстве по Дизайнеру». Закрыв диалог, следует повторить действия снова для определения второго, третьего и т.д. реквизитов справочника.
 
не обязательно, их назначение описано в «Справочном руководстве по Дизайнеру». Закрыв диалог, следует повторить действия снова для определения второго, третьего и т.д. реквизитов справочника.
  
 
===Диалог с пользователем===
 
===Диалог с пользователем===
  
Задав реквизиты Справочника контрагентов, мы спроектировали структуру данных и подготовили место для их хранения. Теперь необходимо нарисовать экранный диалог для изменения сведений. Для этого следует щелкнуть правой клавишей мыши по подпапке Формы папки Справочник контрагентов и выбрать пункт Новый появившегося меню. В открывшемся диалоге важно определить ровно одно свойство (Режим формы), присвоив ему значение «Диалог элемента».
+
Задав реквизиты <font color=darkblue>Справочника</font> контрагентов, мы спроектировали структуру данных и подготовили место для их хранения. Теперь необходимо нарисовать экранный диалог для изменения сведений. Для этого следует щелкнуть правой клавишей мыши по подпапке Формы папки Справочник контрагентов и выбрать пункт Новый появившегося меню. В открывшемся диалоге важно определить ровно одно свойство (Режим формы), присвоив ему значение «Диалог элемента».
  
Именно это свойство отвечает за то, что форма будет использоваться в качестве редактора реквизитов элемента Справочника контрагентов всякий раз, когда пользователь будет добавлять нового контрагента или редактировать реквизиты уже имеющегося. Для собственного удобства целесообразно заполнить поле Имя каким-нибудь осмысленным текстом, например, Редактор реквизитов.
+
Именно это свойство отвечает за то, что форма будет использоваться в качестве редактора реквизитов элемента <font color=darkblue>Справочника</font> контрагентов всякий раз, когда пользователь будет добавлять нового контрагента или редактировать реквизиты уже имеющегося. Для собственного удобства целесообразно заполнить поле Имя каким-нибудь осмысленным текстом, например, <font color=darkblue>Редактор реквизитов</font>.
  
Теперь все готово для перехода к художественной, если можно так выразиться, части создания нашего приложения – «рисованию» экранного диалога. Запустите Редактор диалогов, нажав соответствующую кнопку на вкладке Дизайн – отобразится пустое окно. Слева от него будет расположена палитра доступных диалоговых элементов (виджетов) – окно Toolbox. Справа – редактор свойств элементов – окно Property Editor. Для нашего «натюрморта» будет достаточно
+
Теперь все готово для перехода к художественной, если можно так выразиться, части создания нашего приложения – «рисованию» экранного диалога. Запустите <font color=darkblue>Редактор диалогов</font>, нажав соответствующую кнопку на вкладке <font color=darkblue>Дизайн</font> – отобразится пустое окно. Слева от него будет расположена палитра доступных диалоговых элементов (виджетов) – окно <font color=darkblue>Toolbox</font>. Справа – редактор свойств элементов – окно <font color=darkblue>Property Editor</font>. Для нашего «натюрморта» будет достаточно использовать ровно три элемента палитры:
использовать ровно три элемента палитры:
+
  
*Text Label для подписей к полям ввода (Рис. 5).
+
*<font color=darkblue>Text Label</font> для подписей к полям ввода (Рис. 5).
*DBField для полей ввода (Рис. 6)
+
*<font color=darkblue>DBField</font> для полей ввода (Рис. 6)
*ActionButton для кнопок Отмена и Принять (Рис. 6)
+
*<font color=darkblue>ActionButton</font> для кнопок <font color=darkblue>Отмена</font> и <font color=darkblue>Принять</font> (Рис. 6)
  
Для перетаскивания элементов требуется два клика: первый по элементу палитры, второй – по окну диалога. Перетащите пять раз TextLabel и DBField, разместив их по своему вкусу или как показано на Рис. 7, отредактируйте тексты надписей (двойной щелчок будет здесь незаменим) и задайте привязку для полей ввода, выбрав для каждого из них соответствующий реквизит Справочника контрагентов из списка. Список вызывается двойным щелчком по полю ввода, лежащему в окне диалога. Именно связывание данных (Data bindings), ставшее популярным благодаря таким средам разработки, как Borland Delphi и Visual Basic, и с успехом применяемое в среде разработки платформы Ананас, позволяет нам обойтись при создании CRUD-приложения без написания кода.
+
Для перетаскивания элементов требуется два клика: первый по элементу палитры, второй – по окну диалога. Перетащите пять раз <font color=darkblue>TextLabel</font> и <font color=darkblue>DBField</font>, разместив их по своему вкусу или как показано на '''Рис. 7''', отредактируйте тексты надписей (двойной щелчок будет здесь незаменим) и задайте привязку для полей ввода, выбрав для каждого из них соответствующий реквизит <font color=darkblue>Справочника контрагентов</font> из списка. Список вызывается двойным щелчком по полю ввода, лежащему в окне диалога. Именно связывание данных (Data bindings), ставшее популярным благодаря таким средам разработки, как Borland Delphi и Visual Basic, и с успехом применяемое в среде разработки платформы Ананас, позволяет нам обойтись при создании CRUD-приложения без написания кода.
  
После проведения несложной процедуры связывания для всех пяти полей ввода,добавьте в окно диалога кнопки Отмена и Принять, использовав для этого элемент ActionButton палитры. Кнопка Отмена должна просто закрывать окно. Кнопка Принять должна дополнительно сохранять содержимое полей ввода в базе данных.
+
После проведения несложной процедуры связывания для всех пяти полей ввода,добавьте в окно диалога кнопки <font color=darkblue>Отмена</font> и <font color=darkblue>Принять</font>, использовав для этого элемент <font color=darkblue>ActionButton</font> палитры. Кнопка <font color=darkblue>Отмена</font> должна просто закрывать окно. Кнопка <font color=darkblue>Принять</font> должна дополнительно сохранять содержимое полей ввода в базе данных.
  
Поведение кнопки задается в диалоге, вызываемым двойным щелчком по ней. Для кнопки Отмена следует поставить галочки опциям Простое действие и Закрыть диалога. Для кнопки Принять следует поставить третью галочку – Обновить. Для смены текста надписи на кнопке в контекстном меню, вызываемом правой клавишей мыши следует выбрать пункт Edit Text....
+
Поведение кнопки задается в диалоге, вызываемым двойным щелчком по ней. Для кнопки <font color=darkblue>Отмена</font> следует поставить галочки опциям <font color=darkblue>Простое действие</font> и <font color=darkblue>Закрыть диалога</font>. Для кнопки <font color=darkblue>Принять</font> следует поставить третью галочку – <font color=darkblue>Обновить</font>. Для смены текста надписи на кнопке в контекстном меню, вызываемом правой клавишей мыши следует выбрать пункт <font color=darkblue>Edit Text</font>....
  
 
===Сделаем красиво===
 
===Сделаем красиво===
  
В принципе, мы уже закончили – наше приложение будет работать. Но, как всякий уважающий себя кулинар и садовник позаботится о внешнем оформлении своего творения, прежде чем показать его публике, так и программист должен позаботиться о привлекательности создаваемого им приложения. Для придания опрятности нашему диалогу воспользуемся возможностями динамического, автоматически масштабируемого размещения элементов. В этом деле нам помогут «пружинки» и типы размещения «Сетка», «Горизонтальные полоски» и «Вертикальные полоски».
+
В принципе, мы уже закончили – наше приложение будет работать. Но, как всякий уважающий себя кулинар и садовник позаботится о внешнем оформлении своего творения, прежде чем показать его публике, так и программист должен позаботиться о привлекательности создаваемого им приложения. Для придания опрятности нашему диалогу воспользуемся возможностями динамического, автоматически масштабируемого размещения элементов. В этом деле нам помогут <font color=darkblue>«пружинки»</font> и типы размещения <font color=darkblue>«Сетка»</font>, <font color=darkblue>«Горизонтальные полоски»</font> и <font color=darkblue>«Вертикальные полоски»</font>.
  
Начнем с полей ввода и надписей к ним. Разместив вертикально две пружинки, как показано на Рис. 8, и выделив их все, последовательно щелкая мышкой и удерживая клавишу Shift на клавиатуре, применим тип размещения «Сетка». Получим первый блок сгруппированных элементов диалога. Проделайте то же самое с кнопками Отмена и Принять, только «пружинки» выберите горизонтальные, а тип размещения – «Вертикальные полоски». Последним шагом необходимо снять выделение, ткнув мышкой в пустую область окна диалога, а затем применить тип размещения «Горизонтальные полоски».
+
Начнем с полей ввода и надписей к ним. Разместив вертикально две пружинки, как показано на '''Рис. 8''', и выделив их все, последовательно щелкая мышкой и удерживая клавишу <font color=darkblue>Shift</font> на клавиатуре, применим тип размещения <font color=darkblue>«Сетка»</font>. Получим первый блок сгруппированных элементов диалога. Проделайте то же самое с кнопками <font color=darkblue>Отмена</font> и <font color=darkblue>Принять</font>, только <font color=darkblue>«пружинки»</font> выберите горизонтальные, а тип размещения – <font color=darkblue>«Вертикальные полоски»</font>. Последним шагом необходимо снять выделение, ткнув мышкой в пустую область окна диалога, а затем применить тип размещения <font color=darkblue>«Горизонтальные полоски»</font>.
  
Не стоит печалиться, если требуемый результат не удастся получить с первого раза. Во-первых, всегда есть возможность отменить последнее действие при помощи клавиатурной комбинации Ctrl+Z, во-вторых, правила динамического масштабирования определяются, помимо прочего, свойством sizePolicy, индивидуально определяемым для каждого элемента диалога в редакторе свойств Property Editor.
+
Не стоит печалиться, если требуемый результат не удастся получить с первого раза. Во-первых, всегда есть возможность отменить последнее действие при помощи клавиатурной комбинации <font color=darkblue>Ctrl+Z</font>, во-вторых, правила динамического масштабирования определяются, помимо прочего, свойством <font color=darkred>sizePolicy</font>, индивидуально определяемым для каждого элемента диалога в редакторе свойств <font color=darkblue>Property Editor</font>.
  
 
Такая работа требует некоторой привычки и терпения первое время. Овладев методикой задания динамического масштабирования и расположения элементов, вы будете тратить на нее минимум времени.
 
Такая работа требует некоторой привычки и терпения первое время. Овладев методикой задания динамического масштабирования и расположения элементов, вы будете тратить на нее минимум времени.
  
Теперь нашу работу необходимо сохранить и, для проверки – запустить Ананас. Дизайнер закрывать не требуется. При успешном сохранении в соответствующем окне должны появиться сообщения об успешном обновлении структур базы данных, предназначенных для хранения бизнес-объектов. Если появились ошибки, то скорее всего Ананасу не хватило прав для записи в один из каталогов или не работает доступ к базе данных. Помощь по затруднительным ситуациям доступна на форуме проекта.
+
Теперь нашу работу необходимо сохранить и, для проверки – запустить Ананас. <font color=darkblue>Дизайнер</font> закрывать не требуется. При успешном сохранении в соответствующем окне должны появиться сообщения об успешном обновлении структур базы данных, предназначенных для хранения бизнес-объектов. Если появились ошибки, то скорее всего Ананасу не хватило прав для записи в один из каталогов или не работает доступ к базе данных. Помощь по затруднительным ситуациям доступна на форуме проекта.
  
 
===Последний штрих===
 
===Последний штрих===
  
А теперь – сюрприз: немного кода все-таки потребуется. Дело в том, что среда исполнения приложений Ананаса не знает, какой экранный диалог нашей бизнес-схемы следует запускать сразу после старта, ведь в нашем приложении могло бы быть несколько экранных форм. Нужен какой-нибудь способ известить Ананас о том, что при старте он должен открыть наш Справочник контрагентов. Для этого предусмотрена предопределенная функция на Ананас-Скрипте с названием on_systemstart(). Если среда исполнения находит такую функцию в глобальном модуле бизнес-схемы при старте, она будет автоматически
+
А теперь – сюрприз: немного кода все-таки потребуется. Дело в том, что среда исполнения приложений Ананаса не знает, какой экранный диалог нашей бизнес-схемы следует запускать сразу после старта, ведь в нашем приложении могло бы быть несколько экранных форм. Нужен какой-нибудь способ известить Ананас о том, что при старте он должен открыть наш <font color=darkblue>Справочник контрагентов</font>. Для этого предусмотрена предопределенная функция на Ананас-Скрипте с названием <font color=darkred>on_systemstart()</font>. Если среда исполнения находит такую функцию в глобальном модуле бизнес-схемы при старте, она будет автоматически запущена на выполнение.
запущена на выполнение.
+
 
 +
Доступ к глобальному модулю осуществляется через двойной щелчок по корню дерева бизнес-объектов в <font color=darkblue>Дизайнере</font> и выбор вкладки <font color=darkblue>Глобальный модуль</font> появившегося диалога.
 +
 
 +
Вот код, который нужно туда записать:
 +
<source lang="c">
 +
function on_systemstart()
 +
{
 +
    sys.Message(0,"Привет, Мир! :)");
 +
    cat = new CatalogEditor("Справочник контрагентов");
 +
    cat.edit();
 +
}
 +
</source>
 +
Да, да! Он все-таки напечатает «Привет, Мир!» :) в окне сообщений ('''Рис. 9''').
 +
 
 +
==Врезки==
 +
 
 +
===Элемент справочника===
 +
 
 +
Элемент справочника – одна из двух составляющих любого справочника Ананаса. Второй составляющей является Группа. Группы служат для группировки элементов и организации вложенного хранения элементов справочников в виде древовидной структуры. Каждая группа может хранить в себе другие группы или элементы
 +
справочника. Элемент справочника предназначен исключительно для хранения реквизитов. Справочник, не содержащий группы, а состоящий лишь из одних
 +
элементов, принято называть плоским.
  
Доступ к глобальному модулю осуществляется через двойной щелчок по корню дерева бизнес-объектов в Дизайнере и выбор вкладки Глобальный модуль появившегося диалога.
+
===Диалог – это просто===
  
Вот код, который нужно туда записать.
+
Среда разработки Ананас оснащена великолепным WYSIWYG-редактором диалогов, позволяющим в наглядной форме разместить визуальные элементы, такие как надписи, кнопки и поля ввода в окне диалога.
[code]
+
function on_systemstart()
+
{
+
  sys.Message(0,”Привет, Мир! :)”);
+
  cat = new CatalogEditor(“Справочник контрагентов”);
+
  cat.edit();
+
}
+
[/code]
+
  
Да, да! Он все-таки напечатает «Привет, Мир!» :) в окне сообщений (Рис. 9).
+
Более того! Диалоги Ананаса являются динамически масштабируемыми, что, во-первых, совершенно необходимо для сохранения опрятного вида диалогов в гетерогенной среде, когда шрифты операционной системы Windows могут существенно отличаться в пропорциях от шрифтов среды X Window операционной системы Linux; во-вторых, создает дополнительные удобства в ситуации, когда пользователь желает растянуть окно диалога, чтобы использовать все разрешение своего экрана, улучшив тем самым отображение информации.

Текущая версия на 13:57, 2 июля 2008

Содержание

[править] Создаем CRUD-приложение

ЧАСТЬ 2 Вариации «Hello, World!» набили оскомину – и Андрей Паскаль будет стараться избежать надоевшего приветствия до последнего, а попутно создаст бизнес-приложение, не написав ни строчки кода!


Важно! Загрузить изображения...


Из чего состоит приложение Ананаса? Как начать работу над собственной бизнес-схемой?

В стародавние времена хорошим педагогическим приемом считалось дать в начале учебника пример программы, печатающей на экране приветствие «Hello, World!».

Времена меняются, требования растут, и вот уже новая педагогическая мода диктует необходимость демонстрировать в качестве примера первого приложения не просто команду вывода на экран, а целую готовую программу по редактированию таблицы базы данных. Такая программа должна уметь Создавать, Показывать, Изменять и Удалять данные в таблице БД, поэтому ее принято называть CRUD-приложением, по первым буквам английских слов Create, Retrive, Update, Delete.

Так как Ананас – бизнес-платформа, то и наше первое CRUD-приложение будет редактировать данные о бизнес-партнерах, также называемых иногда контрагентами. Итак, сегодня мы разработаем CRUD-приложение «Справочник контрагентов». Интересно заметить, что среда разработки платформы Ананас позволяет создать CRUD-приложение без какого-либо написания кода, так что я даже не стал бы называть такую деятельность программированием. Скорее это проектирование.

Для каждого контрагента в справочнике будет храниться следующий упрощенный для нашего случая состав реквизитов:

  • Наименование;
  • Почтовый адрес;
  • Телефон;
  • E-Mail;
  • Банк.

Разработка бизнес-схем ведется в среде разработки Дизайнер платформы Ананас (Рис. 1). После успешного запуска командой

[app@app ~]$ ananas-designer

Дизайнер предложит выбрать бизнес-схему для работы из списка, точно так же, как предлагает выбрать бизнес-схему при запуске сам Ананас. Однако, в отличие от Ананаса, Дизайнер предоставляет доступ к настройке и созданию/модификации структур данных, алгоритмов, а также печатных и экранных форм бизнес-схемы.

Для создания новой бизнес-схемы требуется указать (или создать новую) группу в окне диалога выбора бизнес-схем и активировать пункт Новая бизнес-схема меню Действия.

Открывшийся диалог позволяет задать параметры новой бизнес-схемы. Наиболее важными из них являются параметры доступа к базе данных на SQL-сервере и положение файла бизнес-схемы в файловой системе вашего компьютера. Если вы укажете несуществующую базу данных или несуществующий файл бизнес-схемы, они будут созданы Ананасом автоматически.

На Рис. 2 показан пример заполнения параметров настройки бизнес-схемы для случая использования MySQL в качестве сервера баз данных.

  • Имя файла ресурса содержит ссылку на файл, в котором хранятся значения всех остальных полей этого диалога. Имеется возможность выбора ранее созданного файла ресурса: для этого достаточно вызвать диалог выбора файла щелчком по кнопке, расположенной справа от поля с именем файла ресурса. При открытии файла ресурса значения всех полей диалога будут заменены значениями из этого файла.
  • Заголовок базы данных' предназначен для пользователя и отображается в списке доступных для выбора баз данных в диалоге Список бизнес-схем, появляющемся при старте Дизайнера.
  • Имя базы данных содержит имя базы данных, используемое системой при доступе к серверу базы данных.
  • Тип сервера базы данных позволяет выбрать один из поддерживаемых Ананасом серверов баз данных (MySQL, PostgreSQL или SQLite). Разумеется, следует убедиться, что соответствующий выбираемому вами типу сервер установлен и запущен, так как здесь вы указываете лишь драйвер, который не будет работать, если не установлен соответствующий сервер.
  • Адрес сервера базы данных – это адрес компьютера, на котором установлен сервер выбранного выше типа. Разумеется, сервер баз данных может работать как на том же самом компьютере, где вы установили Ананас, так и на любом другом. Если сервер баз данных запущен локально, здесь следует указать значение localhost. В остальных случаях следует узнать адрес сервера у системного администратора. Адрес может быть задан как DNS-именем (например, myhost.com), так и числовым значением (например, 127.0.0.1).
  • Порт сервера базы данных по умолчанию не содержит никакого значения. Его следует задавать лишь в тех случаях, когда используется нестандартный порт, что случается достаточно редко. По этому вопросу следует консультироваться с системным администратором, выполнявшим установку сервера баз данных. Если вы выполняли установку сервера баз данных самостоятельно и не меняли порт сервера баз данных, то поле Порт сервера базы данных следует оставить пустым.

Задав таким образом значения полей, следует нажать кнопку OK, а затем выбрать только что определенную бизнес-схему и снова нажать OK. После получения подтверждения о локальном сохранении настроек (в каталоге ~/.ananas) откроется главное окно Дизайнера.

Наше CRUD-приложение предназначено для управления Справочником контрагентов, поэтому в дереве бизнес-объектов (Рис. 3) нас в первую очередь будет интересовать раздел Справочники. Определение справочника начинается с присвоения ему имени, которое в дальнейшем будет использовано в программировании бизнес-логики в процедурах на языке Ананас-Скрипт. В главном окне Дизайнера щелкните правой клавишей мыши по разделу Справочники и в появившемся меню выберите пункт Новый.

В появившемся экранном диалоге закладка Общий позволяет задать имя справочника и заполнить поле Описание. На данном этапе в этом диалоге больше ничего изменять не требуется. Следует закрыть его и перейти к определению реквизитов Справочника контрагентов. Разумеется, среда разработки Ананас позволяет организовать древовидную структуру справочника. Однако, желающих изучить эту тему я адресую к «Справочному руководству по Дизайнеру» Ананаса, а для нашего простого CRUD-приложения древовидная структура в Справочнике контрагентов нам не нужна.

Как только вы закроете диалог, где было задано имя справочника, в дереве бизнес-схемы появится папка с именем Справочник контрагентов, внутри которой видны папки Элемент, Группа, Формы. Для определения первого реквизита справочника следует щелкнуть правой кнопкой мыши по папке Элемент и выбрать пункт Новый появившегося меню. В открывшимся диалоге необходимо задать такие свойства реквизита, как Имя, Тип, Ширина (Рис. 4). Прочие свойства задавать не обязательно, их назначение описано в «Справочном руководстве по Дизайнеру». Закрыв диалог, следует повторить действия снова для определения второго, третьего и т.д. реквизитов справочника.

[править] Диалог с пользователем

Задав реквизиты Справочника контрагентов, мы спроектировали структуру данных и подготовили место для их хранения. Теперь необходимо нарисовать экранный диалог для изменения сведений. Для этого следует щелкнуть правой клавишей мыши по подпапке Формы папки Справочник контрагентов и выбрать пункт Новый появившегося меню. В открывшемся диалоге важно определить ровно одно свойство (Режим формы), присвоив ему значение «Диалог элемента».

Именно это свойство отвечает за то, что форма будет использоваться в качестве редактора реквизитов элемента Справочника контрагентов всякий раз, когда пользователь будет добавлять нового контрагента или редактировать реквизиты уже имеющегося. Для собственного удобства целесообразно заполнить поле Имя каким-нибудь осмысленным текстом, например, Редактор реквизитов.

Теперь все готово для перехода к художественной, если можно так выразиться, части создания нашего приложения – «рисованию» экранного диалога. Запустите Редактор диалогов, нажав соответствующую кнопку на вкладке Дизайн – отобразится пустое окно. Слева от него будет расположена палитра доступных диалоговых элементов (виджетов) – окно Toolbox. Справа – редактор свойств элементов – окно Property Editor. Для нашего «натюрморта» будет достаточно использовать ровно три элемента палитры:

  • Text Label для подписей к полям ввода (Рис. 5).
  • DBField для полей ввода (Рис. 6)
  • ActionButton для кнопок Отмена и Принять (Рис. 6)

Для перетаскивания элементов требуется два клика: первый по элементу палитры, второй – по окну диалога. Перетащите пять раз TextLabel и DBField, разместив их по своему вкусу или как показано на Рис. 7, отредактируйте тексты надписей (двойной щелчок будет здесь незаменим) и задайте привязку для полей ввода, выбрав для каждого из них соответствующий реквизит Справочника контрагентов из списка. Список вызывается двойным щелчком по полю ввода, лежащему в окне диалога. Именно связывание данных (Data bindings), ставшее популярным благодаря таким средам разработки, как Borland Delphi и Visual Basic, и с успехом применяемое в среде разработки платформы Ананас, позволяет нам обойтись при создании CRUD-приложения без написания кода.

После проведения несложной процедуры связывания для всех пяти полей ввода,добавьте в окно диалога кнопки Отмена и Принять, использовав для этого элемент ActionButton палитры. Кнопка Отмена должна просто закрывать окно. Кнопка Принять должна дополнительно сохранять содержимое полей ввода в базе данных.

Поведение кнопки задается в диалоге, вызываемым двойным щелчком по ней. Для кнопки Отмена следует поставить галочки опциям Простое действие и Закрыть диалога. Для кнопки Принять следует поставить третью галочку – Обновить. Для смены текста надписи на кнопке в контекстном меню, вызываемом правой клавишей мыши следует выбрать пункт Edit Text....

[править] Сделаем красиво

В принципе, мы уже закончили – наше приложение будет работать. Но, как всякий уважающий себя кулинар и садовник позаботится о внешнем оформлении своего творения, прежде чем показать его публике, так и программист должен позаботиться о привлекательности создаваемого им приложения. Для придания опрятности нашему диалогу воспользуемся возможностями динамического, автоматически масштабируемого размещения элементов. В этом деле нам помогут «пружинки» и типы размещения «Сетка», «Горизонтальные полоски» и «Вертикальные полоски».

Начнем с полей ввода и надписей к ним. Разместив вертикально две пружинки, как показано на Рис. 8, и выделив их все, последовательно щелкая мышкой и удерживая клавишу Shift на клавиатуре, применим тип размещения «Сетка». Получим первый блок сгруппированных элементов диалога. Проделайте то же самое с кнопками Отмена и Принять, только «пружинки» выберите горизонтальные, а тип размещения – «Вертикальные полоски». Последним шагом необходимо снять выделение, ткнув мышкой в пустую область окна диалога, а затем применить тип размещения «Горизонтальные полоски».

Не стоит печалиться, если требуемый результат не удастся получить с первого раза. Во-первых, всегда есть возможность отменить последнее действие при помощи клавиатурной комбинации Ctrl+Z, во-вторых, правила динамического масштабирования определяются, помимо прочего, свойством sizePolicy, индивидуально определяемым для каждого элемента диалога в редакторе свойств Property Editor.

Такая работа требует некоторой привычки и терпения первое время. Овладев методикой задания динамического масштабирования и расположения элементов, вы будете тратить на нее минимум времени.

Теперь нашу работу необходимо сохранить и, для проверки – запустить Ананас. Дизайнер закрывать не требуется. При успешном сохранении в соответствующем окне должны появиться сообщения об успешном обновлении структур базы данных, предназначенных для хранения бизнес-объектов. Если появились ошибки, то скорее всего Ананасу не хватило прав для записи в один из каталогов или не работает доступ к базе данных. Помощь по затруднительным ситуациям доступна на форуме проекта.

[править] Последний штрих

А теперь – сюрприз: немного кода все-таки потребуется. Дело в том, что среда исполнения приложений Ананаса не знает, какой экранный диалог нашей бизнес-схемы следует запускать сразу после старта, ведь в нашем приложении могло бы быть несколько экранных форм. Нужен какой-нибудь способ известить Ананас о том, что при старте он должен открыть наш Справочник контрагентов. Для этого предусмотрена предопределенная функция на Ананас-Скрипте с названием on_systemstart(). Если среда исполнения находит такую функцию в глобальном модуле бизнес-схемы при старте, она будет автоматически запущена на выполнение.

Доступ к глобальному модулю осуществляется через двойной щелчок по корню дерева бизнес-объектов в Дизайнере и выбор вкладки Глобальный модуль появившегося диалога.

Вот код, который нужно туда записать:

 function on_systemstart()
 {
    sys.Message(0,"Привет, Мир! :)");
    cat = new CatalogEditor("Справочник контрагентов");
    cat.edit();
 }

Да, да! Он все-таки напечатает «Привет, Мир!» :) в окне сообщений (Рис. 9).

[править] Врезки

[править] Элемент справочника

Элемент справочника – одна из двух составляющих любого справочника Ананаса. Второй составляющей является Группа. Группы служат для группировки элементов и организации вложенного хранения элементов справочников в виде древовидной структуры. Каждая группа может хранить в себе другие группы или элементы справочника. Элемент справочника предназначен исключительно для хранения реквизитов. Справочник, не содержащий группы, а состоящий лишь из одних элементов, принято называть плоским.

[править] Диалог – это просто

Среда разработки Ананас оснащена великолепным WYSIWYG-редактором диалогов, позволяющим в наглядной форме разместить визуальные элементы, такие как надписи, кнопки и поля ввода в окне диалога.

Более того! Диалоги Ананаса являются динамически масштабируемыми, что, во-первых, совершенно необходимо для сохранения опрятного вида диалогов в гетерогенной среде, когда шрифты операционной системы Windows могут существенно отличаться в пропорциях от шрифтов среды X Window операционной системы Linux; во-вторых, создает дополнительные удобства в ситуации, когда пользователь желает растянуть окно диалога, чтобы использовать все разрешение своего экрана, улучшив тем самым отображение информации.

Персональные инструменты
купить
подписаться
Яндекс.Метрика