
- •220300 - Системы автоматизированного проектирования
- •Тема 2. Технологии программирования
- •Тема 2. Технология разработки крупных приложений
- •Структуры
- •Структуры и функции
- •Массивы структур
- •Поиск в массиве структур
- •Вложенность структур
- •Рекурсия
- •Алгоритм быстрой сортировки
- •Массивы структур и бинарные файлы
- •Динамические структуры данных
- •Линейные списки
- •Очереди
- •Контрольная работа
- •Объектно-ориентированное программирование. Классы
- •Конструкторы
- •Перегруженные конструкторы
- •Определение методов класса вне класса
- •Объекты, возвращаемые функцией (методом)
- •Структуры и классы
- •Классы и память
- •Статические данные класса
- •Константные методы
- •Деструкторы
- •Массивы и классы
- •Массивы объектов
- •Строки Строковый тип или стандартный класс string
- •Тип строк AnsiString
- •Перегрузка операций
- •Перегрузка арифметических операций
- •Перегрузка операций сравнения
- •Перегрузка операции приведения типа
- •Преобразования объектов в основные типы и наоборот
- •Преобразование объектов классов в объекты других классов
- •Наследование
- •Конструкторы производного класса
- •Перегрузка функций
- •Иерархия классов
- •Общее и частное наследование. Комбинации доступа
- •Множественное наследование
- •Включение. Классы в классах
- •Виртуальные и дружественные функции
- •Абстрактные классы и чистые виртуальные функции
- •Виртуальные деструкторы
- •Виртуальные базовые классы или устранение неоднозначности при множественном наследовании
- •Дружественные функции
- •Дружественные классы
- •Указатель this
- •Многофайловые программы
- •Распознавание нажатых клавиш
Тема 2. Технология разработки крупных приложений
Грамотная разработка серьёзного приложения должна начинаться не с создания красивого и удобного пользовательского интерфейса, а с составления списка действий, которые пользователь сможет выполнять. Когда список действий составлен, можно приступать к проработке элементов интерфейса, с помощью которых пользователь сможет инициировать действия. Обычно для одного и того же действия предусматривается несколько инициаторов. Как правило, некоторые разделы главного меню (MainMenu) дублируются быстрыми кнопками инструментальных панелей (ToolBar, CoolBar, ControlBar), разделами контекстных меню (PopUpMenu), горячими клавишами. Независимая разработка таких управляющих элементов ведёт к неоправданному дублированию кодов и снижает возможности модернизации и сопровождения приложения.
В С++Builder предусмотрены компоненты, осуществляющие централизованное управление действиями, их диспетчеризацию (ActionList, ImageList). Благодаря этим компонентам обработчики стандартных действий в ряде случаев писать вообще не надо, т.к. они уже реализованы в соответствующих классах, наследующих базовому классу действий TAction.
Итак, последовательность формирования списка действий и проектирования меню и инструментальных панелей сводится к следующим шагам:
Продумывается и составляется список действий, которые должны быть доступны пользователю через разделы меню, кнопки и другие элементы управления.
Для тех нестандартных действий, которые должны быть доступны из быстрых кнопок инструментальной панели, готовится список пиктограмм в компоненте ImageList.
На главную форму приложения переносится компонент диспетчеризации действий ActionList. Компонент связывается с ImageList. Формируется список стандартных и нестандартных действий.
Каждому действию задаётся набор характеристик: Name, Caption, ShortCut, ImageIndex, Hint и др. Для нестандартных действий все эти характеристики необходимо записывать программисту. Для стандартных действий они заносятся автоматически.
Записываются обработчики событий выполнения для всех нестандартных действий. Стандартные действия обрабатываются автоматически.
На форму переносится компонент MainMenu – главное меню, связывается с ImageList, в компоненте формируется меню (Items…) и в его разделах даются ссылки на действия, описанные в ActionList.
На форме создаётся инструментальная панель (обычно, с помощью компонента ToolBar). Панель связывается с ImageList, а в её кнопках даются ссылки на действия описанные в ActionList.
Рассмотрим пример создания нестандартного действия "Выход":
перенести на форму ActionList и ImageList;
загрузить список изображений: ImageList1/дв.щ.м./Add;
связать ActionList и ImageList: ActionList/Images=ImageList1;
добавить новое нестандартное действие: ActionList/дв.щ.м./Редактор Действий/New Action;
Action1/Name=AExit; Action1/Caption=В&ыход; Action1/Hint=Выход из приложения;
Action1 | Events/OnExecute:
void __fastcall TFMain::AExitExecute(TObject *Sender)
{ Close();
}
перенести на форму ToolBar и связать его с ImageList1;
перенести кнопку SpeedButton на ToolBar и SpeedButton1/Action=AExit;
перенести обычную кнопку и Button1/Action=AExit;
Теперь эти две кнопки будут выполнять одно и тоже действие.
Рассмотрим пример создания стандартного действия "Выход":
перенести ActionList, ImageList и связать их: ActionList/Images=ImageList1;
добавить новое стандартное действие: ActionList/дв.щ.м./Редактор Действий/New Standard Action/ File/TFileExit;
перенести на форму ToolBar и связать его с ImageList1;
перенести кнопку SpeedButton на ToolBar и SpeedButton1/Action=FileExit1;
перенести обычную кнопку и Button1/Action= FileExit1;
Теперь эти две кнопки будут выполнять одно и тоже стандартное действие.
Лекция 2 (9 стр.)