1. Программирование для Windows: особенности
1.1 Новый интерфейс - новые возможности
1.1.1 Окна и их компоненты
1.1.2 Управляющие элементы окна
1.1.3 Другие особенности интерфейса
1.2 DOS и Windows: разные подходы к программированию
1.2.1 Особенности работы с базами данных
1.3 Структура программ в CA-Visual Objects
1.3.1 Объекты. Связи типа “владение"
1.3.2 Генерация и обработка событий
1.3.3 Другие типы связей в программах
1.3.4 Как все-таки работает программа в CA-Visual Objects?
Возможности, предлагаемые системой Windows конечным пользователям, весьма впечатляющи, если их сравнивать с возможностями старой доброй DOS: дружелюбный графический интерфейс, многозадачная среда, вездесущая мышка... В то же время для программистов-разработчиков коммерческих приложений эти возможности трансформируются в дополнительную головную боль, поскольку их реализация на практике сопряжена с довольно существенным усложнением программ, а в иных случаях попросту невозможна без использования новых средств и методов разработки.
Тем не менее, не все так страшно, как может показаться в начале пути. Система программирования CA-Visual Objects - чрезвычайно мощный инструмент, способный снять с разработчика большинство проблем, не связанных напрямую с логикой работы создаваемых приложений. Надо только научиться грамотно пользоваться этим инструментом...
Попробуем прежде всего разобраться в основных отличиях Windows от DOS, непосредственно определяющих как новые требования к разрабатываемым приложениям, так и новые подходы к программированию.
Первое, что бросается в глаза при переходе от DOS к Windows, это графическая операционная среда. Действительно, графический интерфейс пользователя (Graphical User Interface - GUI) составляет сердцевину Windows. Необходимость графического интерфейса продиктована не только и не столько эстетическими соображениями. Основное его назначение заключается в повышении уровня дружелюбности и информативности экрана дисплея, а также в предоставлении пользователю более широких возможностей по оперативному вмешательству в вычислительный процесс. Эти цели в GUI достигаются как за счет широкого использования графических шрифтов и цветовой гаммы, так и за счет введения новых типов элементов управления интерфейсом.
Основу графического интерфейса в Windows составляют окна. Окна и их компоненты - "альфа" и "омега" GUI. Через окна и их элементы приложение, с одной стороны, осуществляет интерфейс с пользователем, а с другой - взаимодействует с Windows. Любое приложение, работающее в среде Windows, должно быть представлено как минимум одним окном.
В CA-Visual Objects различают три базовых типа окон:
1. Окно приложения - главное или единственное окно работающей программы. В соответствии со стандартом GUI, окно приложения может быть двух видов: однодокументным (Single Document Interface - SDI) и многодокументным (Multiple Document Interface - MDI). Основное различие между этими видами окон состоит в том, что MDI-окна могут содержать в себе несколько дочерних окон, каждое из которых может работать независимо от других, в то время как SDI-окно является единственным на все приложение.
Классическим примером MDI-приложения является текстовый процессор WORD фирмы Microsoft (рис.1.1). Запустив это приложение в работу, пользователь имеет возможность одновременной работы с несколькими документами, каждый из которых представляется самостоятельным дочерним окном.
Рис 1.1 Пример MDI-приложения (в главном окне Microsoft Word открыты два независимых дочерних окна - BOOK1. DOC и BOOK2. DOC)
Примером SDI-приложения является игровая программа “Пасьянс", входящая в комплект поставки Windows (рис.1.2). В этом приложении открывается единственное окно, и пользователь одновременно может “раскладывать" на компьютере всего один пасьянс.
Рис 1.2 Пример SDI-приложения
Ясно, что MDI-стандарт предлагает пользователю гораздо более богатые возможности. Именно он в полной мере реализует “способности” Windows и наиболее подходит для разработки сложных приложений, обслуживающих базы данных. По этой причине мы и возьмем его за основу во всех дальнейших рассуждениях.
В MDI-приложениях окно приложения называется также главным окном или окном-оболочкой. Это окно должно быть пустым, т.е. не содержать в себе никаких элементов управления, за исключением меню (см. ниже).
2. Окно данных - специфический вид окна, наилучшим образом приспособленный для работы с базами данных. Оно может содержать в себе любые элементы управления, обеспечивающие удобные средства работы с данными. С учетом сказанного в п.1, окно данных - одно из дочерних окон главного окна приложения. И именно поэтому окно данных в общем случае немодально, т.е. допускает возможность активизации любых других окон. Все окна данных размещаются в пределах главного окна приложения.
3. Диалоговое окно - окно с небольшим набором внутренних компонентов, основная цель которого состоит в выдаче пользователю сообщений и/или запросов и прием от него небольшого числа команд и параметров. В отличие от окна данных, диалоговое окно в общем случае модально, т.е. не позволяет активизировать другие окна до того, как оно будет закрыто. Вместе с тем, в практике программирования используют и немодальные диалоговые окна, например, для поиска информации или отображения динамики процессов с помощью прогресс-индикаторов.
В общем случае окно состоит из следующих компонентов:
область (панель) заголовка;
область (панель) меню;
область (панель) инструментов;
область (панель) состояния:
кнопка системного меню;
кнопки максимизации и минимизации окна;
рамка окна;
рабочая область окна.
Панель заголовка говорит сама за себя - на ней отображается заголовок данного окна. В многодокументном приложении заголовки окон играют важную роль, позволяя пользователю быстрее ориентироваться в отображаемой информации.
Панель меню находится в верхней части окна. Она предназначена для хранения заголовков главного меню (меню первого уровня). Если заголовки не умещаются в одной строке, они переносятся на новую строку (т.е. панель меню расширяется).
Панель меню имеется только у главного окна приложения. Если это окно пустое, то на панели меню отображаются заголовки меню главного окна. Если же главное окно имеет хотя бы одно дочернее окно (окно данных), то на его панели меню отображаются заголовки меню активного в данный момент дочернего окна. Диалоговые окна не имеют собственного меню.
Панель инструментов содержит в себе кнопки с характерными пиктограммами. Эти кнопки доступны только для мышки и служат для запуска наиболее часто используемых программных компонентов. В CA-Visual Objects эта панель называется панелью управления, и кнопки на ней дублируют важнейшие варианты меню. Как правило, панель инструментов располагается вверху, непосредственно под панелью меню. Однако допускается также размещение этой панели в левой, правой или нижней частях окна. CA-Visual Objects позволяет пользователю динамически с помощью мышки перемещать эту панель в удобное для него место.
Панель состояния располагается у нижней кромки окна и служит для вывода сообщений о состоянии приложения, состоянии клавиатуры, а также, при желании, - времени и даты.
Кнопка системного меню окна активизируется любо мышкой, либо клавишей Alt. Системное меню содержит варианты управления окном, в том числе и вариант его закрытия. Закрытие окна означает завершение всех связанных с ним процессов. Закрытие главного окна приложения приводит к завершению этого приложения.
Кнопка максимизации окна доступна только для мышки и служит для увеличения размеров окна до максимально возможных. Дочерние окна увеличиваются до размеров главного окна приложения, главное окно - до размеров экрана.
Кнопка минимизации окна также доступна только для мышки и служит для свертывания окна до размеров иконки - пиктограммы стандартного размера (как правило, 32х32 точки).
Рис.1.3 Стандартные компонеты окна в Windows
Рамка окна служит его визуальной границей. Кроме того, по виду рамки пользователь может судить, допускает ли данное окно плавное динамическое изменение своих размеров с помощью мышки или клавиатуры.
Рабочая область - это та часть окна, в которую не входит ни один из вышеперечисленных элементов. Именно в рабочей области разработчик располагает все необходимые для диалога с пользователем управляющие элементы.
Стандарт GUI, реализованный в Windows 3.1 и 3.11, предполагает наличие некоторого единого для всех приложений минимального набора управляющих элементов. В этот набор входят:
командные кнопки (PushButton);
переключатели (CheckBox);
радиокнопки (RadioButton) и их группы (RadioButtonGroup);
однострочный элемент ввода (SingleLineEdit);
многострочный элемент ввода (MultiLineEdit);
блок списка (ListBox);
комбинированный блок списка (ComboBox);
текстовое поле (FixedText);
панель вертикальной прокрутки или вертикальный лифт (VerticalScrollBar);
панель горизонтальной прокрутки или горизонтальный лифт (HorisontalScrollBar);
элемент типа “группа" или рамка (GroupBox);
иконка или пиктограмма (Icon).
В любой момент времени в активном окне непосредственно готов к действию лишь один из его управляющих элементов. Говорят, что этот элемент имеет фокус (или фокус ввода). Передача фокуса конкретному элементу осуществляется щелчком мышки на его изображении. Другой способ - с использованием клавиатуры. Он основан на том факте, что в любом окне имеется строго упорядоченный список всех его элементов. (Упорядоченность списка определяется разработчиком). Нажатие клавиши Tab на клавиатуре приводит к передаче фокуса очередному элементу управления окна, а нажатие комбинации клавиш Shift+Tab - предыдущему.