На главную   На главную   Форумы Новости Документация Скачать Купить  
Регистрация  
Система Allegro
Oб Allegro Характеристики Пример конфигурации Документация База ошибок Развитие
Версия для печати К списку книг Вернуться к оглавлению Предыдущий параграф Следующий параграф
Поиск по книге

Глава 12. РАЗРАБОТКА ОКОННОГО ИНТЕРФЕЙСА

Рекомендации разработчику интерфейса

Для переключения в режим дизайна и обратно в исполняющий режим используйте пункт Инструменты/Дизайнер (Ctrl+D) Главного меню.

В режиме дизайна Главное окно Allegro сжимается по вертикали и на нем отображаются палитры компонентов VCL. Главное меню слева дополняется новыми пунктами.



Каждый интерфейс следует создавать в виде отдельного проекта (приложения ).

Для этого в режиме дизайнера можно использовать пункт меню Файл /Новое приложение. Проект, создаваемый таким способом, использует язык Delphi Script. Если Вы желаете работать с другим языком (VB Script, Java Script или Active Perl), используйте пункт меню Файл/Новый… и дальше выберите желаемый язык приложения. Приложение создается одновременно с главной формой Form1. После создания нового проекта отображается его главная форма, редактор текстов и Инспектор объектов в левой стороне. Теперь Вы можете добавлять компоненты на форму и писать программный код в редакторе текста. Среда проектирования напоминает среду Delphi и поэтому хорошо знакома программистам.

Вы можете добавить в проект новые формы и модули. Фактически проект (приложение) это файл, с расширением ipr, который хранит информацию о том, какие формы и модули входят в данный проект. Среда дизайнера устроена так, что в ней возможен запуск проектов на исполнение .

Перед запуском проекта в среде дизайнера Allegro потребует сохранения всех файлов проекта.

Рекомендуется предварительно создать одну общую директорию для всех файлов данной конфигурации, поместив ее в поддиректорию \scripts каталога программы Allegro. Эту директорию следует указать в качестве «Директории проектов» в «Свойствах соединения» с базой данных . Не рекомендуется, хоть и не запрещено, создавать отдельные папки для каждого проекта. Но проще все же все файлы хранить в одной папке. Так легче гарантировать уникальность названий модулей в пределах конфигурации.

Как только создан проект со своей главной формой, его можно запустить на исполнение.

При запуске (F9) происходит восстановление размеров Главного окна Allegro. Если главная форма проекта имеет стиль FormStyle = fsMDIChild, то она работает в качестве дочернего окна в Главном окне Allegro. Мы рекомендуем в большинстве случаев использовать именно этот стиль форм, так как он позволяет реализовать мультиоконный интерфейс (MDI).

При остановке проекта (Ctrl+F2) главное окно Allegro обратно сжимается и отображаются Инспектор объектов, редактор текста и формы проекта в режиме дизайна.

Рекомендуется компоненты доступа к данным (компоненты транзакций и SQL -запросов) располагать прямо на формах оконного интерфейса. Не запрещается использовать модули данных (DataModule), но в большинстве случаев это скорее излишество.

Во всех формах и из всех программных модулей доступны два встроенных глобальных компонента:

MainConnection.MainDatabase – компонент базы данных, с которой должна работать конфигурация

MainConnection.MainTransaction – транзакция «только на чтение», с которой могут работать все SQL-запросы, ограничивающиеся чтением данных.

Для организации транзакий при редактировании данных используются компоненты TIBTransaction, которые мы рекомендуем размещать непосредственно на формах главных окон проектов . В большинстве случаев Вам будет достаточно режима изоляции транзакций ReadCommitted. Для установки этого режима изоляции дважды щелкните мышью на компоненте транзакции и выберите этот режим в появившемся диалоге . Все транзакции следует подключать к встроенному глобальному компоненту базы данных MainConnection.MainDatabase (кроме тех случаев, когда Вам необходимо связаться с внешней базой для обмена данными между разными базами). Подключение всех транзакций к одному глобальному компоненту базы исключит возможность нескольких одновременных соединений одного и того же пользователя с базой.

Проекты оконных интерфейсов создаются, как правило, для решения трех задач:

  • Предоставления пользователю интерфейса для создания и редактирования документов какого- то типа
  • Предоставления пользователю интерфейса для построения отчета
  • Предоставления пользователю интерфейса для служебных манипуляций данными

Если решается первая задача, то после сохранения проекта следует его «привязать» к типу документа. Это осуществляется в окне «Метаданные» в «Дополнительных свойствах документа ». Там нужно указать имя файла проекта оконного интерфейса на закладке «Интерфейс» и способ вызова проекта (стандартный , модальное окно, множество экземпляров). Если это сделано , то при вызове любого документа этого типа из « Проводника по документам» автоматически запустится указанный проект.

Для того чтобы узнать программно, какой именно документ нужно загружать, если проект вызван из «проводника по документам », каждый проект имеет специальный экземпляр переменной RunContext, в свойстве RunContext.Documents[0] которой хранится эта информация. Система Allegro не исключает создание проектов оконного интерфейса , поддерживающих в одном окне одновременное редактирование нескольких логически связанных между собой документов разного типа. Поэтому в переменной RunContext сведения о редактируемых документах хранятся в свойстве-массиве Documents . Каждый элемент массива содержит идентификатор типа документа и идентификатор самого документа.

Таким образом, один проект может использоваться сразу несколькими типами документов в качестве «Проекта оконного интерфейса». Это создает большую гибкость в бизнес-логике, которую можно таким способом реализовать, но и накладывает дополнительные обязанности на конфигурирующего , если только он не использует при вызове проекта режим «модальное окно». Основной такой обязанностью является необходимость заполнять массив документов в переменной RunContext информацией обо всех документах, которые редактируются в данном экземпляре проекта. Это нужно для того, чтобы среда Allegro могла избежать повторного запуска одного и того же документа на редактирование, если тот уже и так находится на экране. При каждом вызове документа на редактирование Allegro проверяет массив всех переменных типа TRunContext, ассоциированных со всеми запущенными на данный момент экземплярами проектов и если находит, что вызываемый документ уже где-то присутствует этом массиве, то выводит соответствующее окно на передний план. И только если вызванный документ в этом массиве не найден, создается новый экземпляр проекта, экземпляр переменной RunContext для него и в свойство-массив RunContext. Documents этой переменной добавляется один элемент с информацией о вызванном документе:

RunContext.Documents[0].doc_type_ id = ID типа документа

RunContext.Documents[0].doc_id = ID документа

Если создается новый документ, то при вызове проекта интерфейса внутреннему id документа присваивается значение (-1).

RunContext.Documents[0].doc_id = -1

RunContext.dir_id = ID текущей папки проводника

Если Вы запускаете проект в режиме дизайнера, то используется глобальный объект RunContext, свойства которого можно установить вручную с помощью пункта меню Запуск/Переменные контекста:



Это позволяет полностью имитировать будущий вызов документа на редактирование из «Проводника» еще на стадии запуска из под среды дизайнера.

Если же Вы создаете проект оконного интерфейса, не предназначенный для редактирования документов, например, если это какой- то проект для построения отчета или иных целей, то привязка его к среде Allegro для последующего вызова на исполнение должна осуществляться через механизм команд. Для этого используйте пункт меню Инструменты/команды. Появится диалог управления командами.





Система Allegro. Руководство разработчика Наверх