4. ИНСТРУМЕНТЫ ВИЗУАЛЬНОЙ РАЗРАБОТКИ ПРИЛОЖЕНИЙ

Пошли ссылку на нас другу:

Эта глава содержит описание основных инструментов визуальной разработки программных приложений. Именно благодаря этим средствам, в сочетании с мощностью новейшего компилятора с языка C++ и инкрементального линкера, C++Builder обеспечивает скорость визуальной разработки, продуктивность более 100 интерфейсных компонент и гибкость управления базами данных.

Интегрированная среда разработки C++Builder IDE (Integrated Development Environment), предназначенная для эффективной разработки приложений, поможет вам воспользоваться ее новшествами и в полной мере ощутить преимущества нового стиля программирования. Вы сможете быстро переводить приложение из стадии начального прототипа в рабочую программу. В главе 2 читатель уже составил общее представление о работе с базовыми инструментальными средствами C++Builder - Палитрой компонент. Редакторами форм и кода. Инспектором и Хранилищем объектов. В данной главе мы продолжим знакомство с этими и другими инструментами среды C++Builder, уделяя особое внимание описанию визуальных компонент, представленных на Палитре.

 

4.1 Администратор проекта

Администратор проекта предназначен для манипуляций с текущим проектным файлом с расширением .срр. Чтобы открыть окно администратора (Рис. 4.1), выполните команду View [ Project Manager. Окно содержит список всех составляющих файлов, ассоциированных с текущим проектом. С помощью кнопок панели быстрого вызова или опций контекстного меню вы сможете добавлять, вычеркивать, сохранять и копировать выбранный файл в текущем проекте.

Запись изменений проекта
Установка проектных опций
Включение редактора форм
Включение редактора кода
Вычеркивание файла из списка
Добавление файла к проекту
Список ассоциированных файлов проекта
Контекстное меню администратора проекта

Рис. 4.1. Окно администратора проекта.

Открыть контекстное меню администратора проекта можно щелчком правой кнопкой мыши в любом месте окна администратора или нажатием клавиш Alt+FlO. Контекстное меню содержит следующие опции:

• Save Project сохраняет изменения всех составляющих проектного файла, используя текущие имена файлов. Такое же действие вызывает команда

File | Save Project As

• Add To Repository открывает диалог Save Project Template для добавления проектного шаблона к хранилищу объектов.

• New Unit создает новый модуль в окне Редактора кода и добавляет его к проектному файлу. Новым модулям присваиваются имена Uniti, Unit2, ... Такое же действие вызывает команда File | New Unit.

• New Form создает пустую форму и новый модуль в окне Редактора кода и добавляет их к проектному файлу. Новым формам присваиваются имена Form1,

Form2, Такое же действие вызывает команда File | New Form

 

• Add File открывает диалог Add To Project для добавления текущего модуля и связанной с ним формы к проектному файлу.

• Remove File вычеркивает модуль из списка ассоциированных файлов текущего проекта. Такое же действие вызывает команда Project | Remove from Project. Внимание: Не вычеркивайте файлы модулей напрямую или посредством других программ.

• View Unit активизирует выбранный модуль в окне Редактора кода. Такое же

действие вызывает команда View | Units.

 

• View Form активизирует форму, связанную с выбранным модулем, в окне Редактора форм. Такое же действие вызывает команда View | Forms.

• View Project Source активизирует текст текущего проектного файла в окне Редактора кода.

• Options открывает диалог Options | Project для установки проектных опций. Такое же действие вызывает команда Options | Project.

• Update записывает изменения текста проекта в проектный файл. Внимание: Не редактируйте проект вручную - C++Builder делает это автоматически!

4.2 Редактор форм

Форма представляет собой окно с управляющими компонентами, которые переносятся программистом на стадии проектирования или создаются динамически в процессе работы программы. C++Builder создает форму в окне Редактора при добавлении формы к проекту или берет ее из Хранилища объектов.

 

Открыть окно Редактора форм можно одним из способов:

1. Командой File | New Application создайте новое приложение.

2. Командой File | New Form (кнопка быстрого вызова) создайте новую форму.

3. Командой File | Open Project (кнопка быстрого вызова) откройте существующий проект.

 

Добавить компоненту к форме можно одним из способов:

1. Найдите нужную компоненту на вкладках Палитры компонент и щелкните на ней левой кнопкой мыши. Переведите курсор в окно Редактора и вновь щелкните мышью.

2. Дважды щелкните левой кнопкой мыши на нужной компоненте.

 

Закрыть активное окно Редактора форм можно одним из способов:

1. Кнопкой в правом верхнем углу окна или клавишами Alt+F4.

2. Командой File | Close.

Закрыть все окна, кроме окна Инспектора объектов, можно командой File | Close All.

Если вы модифицировали текущую форму и не сохранили изменения, C++Builder выдаст предупреждение и откроет диалог команды File | Save As, чтобы вы могли ввести новое имя модуля (по умолчанию, Unit1). Если вы модифицировали текущий проект и не сохранили изменения, C++Builder выдаст предупреждение и откроет диалог команды File | Save As, чтобы вы могли ввести новое имя файла проекта (по умолчанию. Project 1).

Чтобы получить контекстно-зависимую справку при работе с Редактором форм, выберите компоненту, о которой вы хотите получить справочные сведения, и нажмите клавиши Ctrl+Fl. Если искомые сведения не обнаружены, справочная служба Help выдаст сообщение "Help Topic Does Not Exist".

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

Инспектор объектов занимает активную рабочую позицию между визуальными компонентами управления разрабатываемым приложением и программным кодом, который обеспечивает его работу. Инспектор объектов имеет две вкладки:

Свойства (Properties) и События (Events).

Вкладка свойств дает вам возможность манипулировать свойствами компонент, помещаемых на форму (и свойствами самой формы) на стадии проектирования, определяя тем самым начальное состояние компонент. Установка свойств компонент во время выполнения программы требует написания соответствующих текстов кода для обработки событий. Свойство может, в свою очередь, включать вложенные свойства, что отмечается знаком "+" в левой позиции соответствующей графы базового свойства.

Вкладка событий содержит список возможных программных событий и позволяет соединять компоненты (или формы) с происходящими событиями. Если дважды щелкнуть мышью на некотором событии, C++Builder создаст функцию обработчика (поначалу с пустым телом) и переключится на Редактор кода. Редактор кода установит курсор на тело обработчика события, которое вы должны заполнить кодом, определяющим реакцию компоненты на данное событие.

В верхней части Инспектора (Рис. 4.2) расположено поле селектора объектов. которое отображает объектный тип выбранной компоненты (или формы) и позволяет раскрыть список всех компонент, помещенных на активную 4юрму. С помощью селектора легко выбирать рабочие компоненты текущей формы. Ширину столбцов Инспектора можно менять, перетаскивая мышью разделительные линии.

Значение fsNormal свойства FormStyle самой формы означает, что вы создаете SDI приложение с однодокументным интерфейсом, а значение fsMDIForm - MDI приложение с многодокументным интерфейсом. Обратите внимание, что свойству Sorted компоненты TListBox присвоено значение true, поэтому элементы списка будут упорядочены в алфавитном порядке.

Рис. 4.2. Свойства компоненты TListBox в окне Инспектора объектов.

Открыть контекстное меню Инспектора объектов можно щелчком правой кнопкой мыши в любом месте окна Инспектора или нажатием клавиш Alt+FlO. Контекстное меню содержит следующие опции управления и установок:

• Revert to Inherited восстанавливает исходное унаследованное поведение объекта. Применяйте эту операцию, когда вы забыли внесенные изменения свойств.

• Expand показывает вложенные свойства объекта. Такое же действие вызывает двойной щелчок мышью по выбранному базовому свойству.

• Collapse прячет отображение вложенных свойств объекта. Такое же действие вызывает двойной щелчок мышью по выбранному базовому свойству.

• Stay On Top располагает окно Инспектора поверх остальных окон и диалогов среды C++Builder.

 

• Hide прячет активное окно Инспектора, которое открывается вновь клавишей F11 или по команде View | Object Inspector.

• Help вызывает соответствующую страницу справочной службы.

В дальнейшем изложении подразумевается, что установка значений свойств и включение обращений к методам в обработчики событий производятся с помощью Инспектора объектов.

 

4.4 Хранилище объектов

Хранилище объектов обеспечивает возможность разделения (sharing) или повторного использования (reuse) содержащихся в нем объектов. В качестве объектов хранения могут выступать либо подготовленные C++Builder, или созданные вами формы, проекты, модули данных и эксперты. Кроме самих объектов, вы можете адресовать в хранилище их шаблоны, в которых зафиксированы только неизменяемые в процессе разработки компоненты.

Хранилище в сущности является индексным текстовым файлом, содержащим ссылки на страницы, объединяющие указанные объекты.

 

4.4.1 Разделение объектов

При разделении объектов разработчик приложения может преследовать разные цели:

Разделение объектов между проектами.

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

Например, все ваши проекты могли бы использовать диалог часто используемой команды меню About, содержащий, наряду с фиксированными текстами и кнопками управления, пустые поля для записи фамилий авторов приложения, года выпуска и т.д. Из этого шаблонного диалога все ваши проекты произведут диалоги стандартизованного вида, заполняя переменные поля новым конкретным содержанием.

 

Разделение объектов внутри проекта.

Вы можете наследовать формы, уже включенные в проект. Открывая командой File | New диалог New Items, вы увидите вкладку с именем вашего проекта. Если щелчком мыши выбрать эту вкладку, откроются списки всех форм, диалогов и модулей данных этого проекта. Затем можно произвести новый объект - форму из существующей и приспособить ее по назначению.

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

 

Разделение проектов.

Добавляя к хранилищу проект целиком, вы создаете шаблон для будущих проектов. Если вы планируете разработать ряд сходных приложений, все они могут базироваться на единой стандартизованной модели.

 

Использование экспертов.

Хранилище содержит ссылки на экспертов - небольшие программы, которые проводят пользователя через серию руководящих диалогов по созданию формы или проекта. C++Builder предусматривает ряд готовых экспертов, к которым вы можете добавлять свои собственные.

4.4.2 Включение объектов в проект

Существует три способа включения в проект объектов из хранилища с целью их разделения:

 

Копирование объектов хранилища.

Простейший вариант разделения заключается в копировании точного дубликата объекта в ваш проект. Будущие изменения этого объекта в хранилище никак не отразятся на вашей копии, и наоборот, модификации копии не коснутся оригинала объекта в хранилище.

 

Замечание. Копирование представляет единственную возможность использования проектных шаблонов.

 

Наследование объектов хранилища.

Наиболее гибкий и мощный вариант разделения заключается в построении нового производного класса от объекта хранилища и добавлении его в ваш проект. Когда вы перекомпилируете проект, любые изменения этого объекта в хранилище отразятся на производном классе, однако модификации вашей производной никак не отразятся на оригинале объекта в хранилище. Замечание. Наследование разрешено для форм, диалогов и модулей данных, но запрещено для проектных шаблонов и экспертов. Наследование представляет единственную возможность повторного использования объектов в одном и том же проекте.

 

Прямое использование объектов хранилища.

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

 

Замечание. Разрешено прямое использование форм, диалогов, модулей данных и экспертов. Использование экспертов фактически не создает разделяемые процедуры, а представляет собой запуск некоторого процесса, который генерирует свой собственный код.

Разработка нового проекта может начинаться не с пустого проекта (с именем Project 1 по умолчанию), а с некоторого шаблона из хранилища объектов.

 

Чтобы открыть новый проект на базе шаблона:

1. Выполните команду File | New, которая откроет диалог New Items.

2. Выберите вкладку Projects.

3. Укажите нужный шаблон и нажмите кнопку ОК.

4. В открывшемся диалоге Select Directory укажите каталог, в котором хранятся

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

4.4.3 Добавление объектов к хранилищу

Когда вы создали новую форму или проект (или их шаблоны) и удостоверились, что они работоспособны и послужат в будущем благородной цели стандартизации облика разрабатываемых в вашей организации приложений, сохраните такие объекты в хранилище.

 

Чтобы добавить новый объект к хранилищу:

1. Выполните команду Project | Add To Repository, которая откроет диалог, показанный на Рис. 4.3.

2. В область редактирования Title введите название объекта.

3. В область Description введите описание объекта.

4. Из выпадающего списка Page выберите имя страницы, в которой вы хотите завести новый объект.

5. В область Author введите фамилию автора.

6. Нажмите кнопку Browse, чтобы выбрать пиктограмму, которая будет представлять объект в хранилище.

7. Нажмите кнопку ОК, чтобы сохранить текущий объект.

 

Имя объекта

Кнопка выбора пиктограммы

Описание объекта
Автор объекта
Страница объектов указанного типа

Рис. 4.3. Добавление формы к хранилищу объектов.

 

Чтобы добавить к хранилищу проект или форму в виде шаблона:

1. Если необходимо, откройте проект или форму, шаблоны которых вы хотите добавить к хранилищу.

2. Выполните команду Tools | Repository.

3. На вкладке Project Templates (или Form Templates) выберите команду Add, которая отроет диалог Save Project Template (или Save Form Template).

4. В область редактирования Title введите название проекта или формы.

5. В область Description введите описание проекта или формы.

6. Из выпадающего списка Page выберите имя страницы Projects (или Forms), в которой вы хотите завести соответствующий шаблон.

7. В область Author введите фамилию автора.

8. Нажмите кнопку Browse, чтобы выбрать пиктограмму, которая будет представлять данный шаблон в хранилище.

9. Нажмите кнопку ОК, чтобы сохранить текущий проект или форму в виде шаблона.

 

Замечание. Если позже вы внесете изменения в шаблон, эти изменения автоматически отразятся в новых проектах или формах, произведенных от этого шаблона, но никак не скажутся на уже созданных производных.

 

Чтобы увидеть описание выбранного объекта:

1. Выполните команду File | New, которая откроет диалог New Items.

2. Выберите вкладку объектов нужного типа.

3. Щелкните правой кнопкой мыши по выбранному объекту.

4. Из появившегося контекстного меню выберите опцию View Details. Описание объекта появится в столбце Description.

4.4.4 Проект и формы, создаваемые по умолчанию

Проект по умолчанию для нового приложения открывается с помощью команды File | New Application. Если вы не меняли соответствующих установок хранилища объектов, C++Builder создаст пустой проект с пустой формой. Вы можете сменить шаблон проекта по умолчанию, а также назначить запуск некоторого эксперта проектов, который проведет вас через ряд диалогов, руководящих созданием нового проекта.

 

Чтобы сменить проект по умолчанию:

1. Выполните команду Tools | Repository, чтобы открыть диалог хранилища Object Repository.

2. Выберите страницу с именем Projects из списка Pages.

3. Укажите проект, который вы хотите создавать по умолчанию, в списке Objects.

4. Выберите опцию New Project.

5. Нажмите кнопку OK для регистрации новой установки по умолчанию.

Новая форма по умолчанию для существующего проекта открывается с помощью

команд File | New Form (кнопка быстрого вызова). Если вы не меняли соответствующих установок хранилища объектов, C++Builder создаст пустую форму. Вы можете сменить шаблон формы по умолчанию, а также назначить запуск некоторого эксперта форм, который проведет вас через ряд диалогов, руководящих добавлением новой формы к проекту.

 

Чтобы сменить форму по умолчанию для существующего проекта:

1. Выполните команду Tools | Repository, чтобы открыть диалог хранилища Object Repository.

2. Выберите страницу с именем Forms из списка Pages.

3. Укажите форму, которую вы хотите создавать по умолчанию, в списке Objects.

4. Выберите опцию New Form.

5. Нажмите кнопку OK для регистрации новой установки по умолчанию.

Основная форма (или эксперт форм) по умолчанию для нового проекта устанавливается в хранилище объектов точно так же, как и форма для существующего проекта.

 

Чтобы сменить основную форму по умолчанию для нового проекта:

1. Выполните команду Tools | Repository, чтобы открыть диалог хранилища Object Repository.

2. Выберите страницу с именем Forms из списка Pages.

3. Укажите форму, которую вы хотите создавать по умолчанию, в списке Objects.

4. Выберите опцию Main Form.

5. Нажмите кнопку OK для регистрации новой установки по умолчанию.

4.5 Редактор кода

Редактор кода программ предоставляет удобное и надежное средство для просмотра и редактирования текста программного модуля (Unit), независимо компилируемого в объектный файл. Модуль состоит из двух частей: файла объявлений с расширением .h и кодового файла с расширением .срр.

Окно Редактора может содержать несколько вкладок с редактируемыми файлами. Например, когда вы начинаете работу с открытия некоторого проекта, он становится первой вкладкой в окне Редактора; вкладки всех других отрываемых файлов занимают последовательные позиции в ряду вкладок.

C++Builder автоматически отрывает в окне Редактора новую вкладку с текстом модуля в следующих ситуациях:

1. Командой File | New Application создается новое приложение.

2. Командой File | New Form (кнопка IS1 быстрого вызова) создается новая фор ма.

3. Командой File | New Unit создается новый модуль.

4. Командой File | Open Project (кнопка 1в 1 быстрого вызова) открывается существующий проект.

5. Командой File | Open (кнопка 1^1 быстрого вызова) открывается существующий файл текста модуля. По умолчанию вам будут предложены кодовые файлы с расширением .срр. Вы можете сменить установки умолчания для текущего каталога и расширений файлов на вкладке Directories/Conditionals диалога команды Options | Project.

6. Командой Project | Add to Project (кнопка Ц.а| быстрого вызова) к проекту добавляется текущая форма или модуль.

 

Чтобы редактировать текст модуля:

1. Выберите вкладку окна Редактора с именем нужного модуля или укажите его

в списке, предлагаемом командой View | Units (кнопка IQH быстрого вызова). Если вы хотите создать новое окно Редактора, воспользуйтесь командой View | New Edit Window.

2. Поместите курсор в то место текста, которое вы хотите редактировать.

3. Редактируйте текст с помощью операций, принятых стандартными редакторами Microsoft Windows. Вводимые строки программы разделяются нажатием

клавиши Enter.

Если вы модифицировали текст текущего модуля и не сохранили изменения, C++Builder выдаст предупреждение и откроет диалог Save As, чтобы вы могли ввести новое имя файла модуля (по умолчанию, Uniti). Если вы модифицировали текущий проект и не сохранили изменения, C++Builder выдаст предупреждение и откроет диалог Save As, чтобы вы могли ввести новое имя файла проекта (по умолчанию, Project1).

 

Закрыть модуль в окне Редактора кода можно одним из способов:

1. Кнопкой в правом верхнем углу окна или клавишами Alt+F4.

2. Командой File | Close.

3. Окно Редактора закрывается только тогда, когда все находящиеся в нем файлы были закрыты.

Важнейшей особенностью C++Builder является автоматическая генерация строк программы. Когда вы добавляете компоненту к форме, в тексте файла Unit1.h появляется объявление переменной экземпляра класса данной компоненты. Например, перенос на пустую форму компоненты кнопки TButton сгенерирует объявление объекта Button 1, а определение события OnClick - объявление метода ButtonlClick обработчика этого события (Рис. 4.4).

Ри