- •1.1. Что такое программа и как она выглядит?
- •1.2. Комментарии
- •1.3. Зарезервированные слова и типы данных
- •1.4. Объявление переменных
- •1.5. Операции и выражения
- •1.6. Ввод и вывод
- •1.7. Переменные и константы
- •1.8 Логические операторы
- •1.9. Управляющие операторы
- •1.10. Операторы циклов
- •1.11. Операторы перехода
- •2. Функции
- •2.1. Передача параметров
- •2.2. Библиотечные функции
- •2.3. Локальные и глобальные переменные
- •Объявления функций
- •Время жизни и область видимости программных объектов
- •Int local_var; /* по умолчанию auto */
- •2.4. Перегрузка
- •3. Массивы
- •4. Структуры
- •Int numberPeriod; //число переодов начисления процентов
- •Int page; //Количество страниц
- •Void print(); /*Внимание, записывается только прототип функции */
- •Int yearBorn; //год рождения
- •Int yearBorn; //год рождения
- •4.1. Демонстрационные программы
- •Int done;/*переменная, которая информирует о конце списка файлов */
- •6. Объединения
- •Info;//Обявление переменной типа объединение
- •Info;//Обявление переменной типа объединение
- •7. Объектно-ориентированное программирование
- •7.1. Классы и объекты
- •Демонстрационные программы
- •Результат работы программы
- •7.2. Конструкторы и деструкторы
- •Конструктор копирования
- •7.5. Наследование
- •7.3. Создание объектов и обращение к членам объекта
- •8. Абстрактные типы данных
- •9. Пространство имен
- •Void greeting();/*это пространство имен содержит функцию с тем же именем*/
- •Void big_greeting(); /*эта функция не попадает ни в одно из созданных подпространств,т.Е. Принадлежит пространству имен std */
- •//Определение функций
- •Void big_greeting() /* определение данной функции не принадлежит ни одному из созданных пространств имен, следовательно дальнейший код помещается в глобальное пространство имен */
- •10. Строки
- •4.3 Демонстрационные программы
- •4.10. Класс string
- •Класс AnsiString
- •Класс AnsiString
- •Класс Set
- •4.9. Перегрузка операторов
- •Использование "умных" указателей
- •4.8. Полиморфизм
- •Главное меню — компонент MainMenu
- •Диалоги
- •Файлы и потоки
- •Ввод-вывод в файл
- •Ifstream inStream; //Объявление входного потока
- •InStream.Open("character.Dat"); /*присоединение файла к входному потоку */
- •InStream.Close(); //закрытие входного потока
- •If(!out){ //при неудачной попытке
- •If(in.Fail()){ //поток не создан, то сообщение и выход
- •Управление потоком ввода-вывода
- •5.2. Ввод имен файлов
- •5.3. Манипуляторы
- •5. Указатели
- •5.1.Типы указателей и операции с указателями
- •Адресная арифметика
- •Сравнение указателей
- •Преобразование типа указателя
- •Указатель void
- •5.2. Динамические массивы
- •Int array[10]; //объявляется массив с именем array
- •Int a[10]; //объявляется массив с именем a
- •Int *array1; //указатель типа int с именем array1
- •Int *array[5];/*массив с именем array, его элементы указатели*/
- •Int (*point)[4][5]; /*объявление указателя на двумерный массив без имени */
- •Использование указателей в функциях и указатели на функции
- •Указатель классов
- •Шаблоны
- •Шаблоны функций
- •Void Swap (t& X, t& y) /* к моменту обращения тип т будет известен и заменен, например, на int */
- •Void sort(t array[], int maxIndex){ /*передали массив и его размер */
- •6.2. Шаблоны классов
- •6.3 Демонстрационные программы
- •7.1 Обработка исключений
- •Исключения и их стандартная обработка
- •Базовый класс исключений vcl Exception
- •Упражнения
- •Обработка исключительных ситуаций, возбуждаемых оператором new
- •Исходные файлы и объявление переменных
- •Связаные списки
- •Void newHead( //прототип функции создающей узел
- •Void newHead(//прототип функции создания узла
- •Поиск в связанных списках
- •Void newHead(PtrNode& head, //адрес головного узла
- •Директивы препроцессора.
- •Структура файла проекта
- •Структура make-файла
- •Структура модуля
- •Структура h-файла
- •Файл формы
- •Особенности программирования под Windows.
- •Функция WinMain
- •Создание проекта Win32Application.
- •Библиотека mfc.
- •Создаем код
- •Шпаргалка
- •Структура файла проекта
- •Структура make-файла
- •Структура модуля
- •Структура h-файла
- •Файл формы
- •Файл проекта
- •Введение
- •Свойства компонентов
- •События
- •Менеджер проектов
- •Пример: создание простейшего приложения
- •Графика Внедрение картинок
- •Редактор изображений
- •Классы для хранения графических объектов.
- •If (SelectDirectory( //Компонент библиотеки
- •Методы создания собственной графики. Рисование по пикселам
- •Int px, py; //координаты пикселей
- •Рисование с помощью пера
- •Int px, py; //координаты пикселей
- •Рисование кистью
- •Мультимедиа и анимация Общие сведения о звуковых и видеофайлах
- •Способы воспроизведения звуков
- •Создание мультфильма
- •Воспроизведение немых видео клипов — компонент Animate
- •Проигрыватель MediaPlayer
- •Процессы, потоки, распределенные приложения
- •If include "uOverlayl.H" // включение головного файла приложения
- •Функция CreateProcess
- •490 _ Глава 7
- •7.8.4 Элементы ActiveX
- •492 Глава 7
- •494 Глава 7
- •7.9 Компоненты-серверы сом
- •496 Глава 7
- •7.9.2 Свойства и методы сервера Word
- •500 Глава 7
- •Заключение
- •Что такое ansi?
- •Почему вместо русских букв в консольном приложении выводится мусор? Автор: Алексей Кирюшкин Версия текста: 1.0
- •Раздел I.2Выход 1
- •Раздел I.3Выход 2
- •Раздел I.4Выход 3
- •Раздел I.5Выход 4
- •(A)Потоки
- •(C)Ввод-вывод файлов
- •Выбор компонентов для групповых операций
- •Установка разделяемых свойств компонентов
- •Изменение размера компонентов
- •Выравнивание компонентов
- •Пример: Создание текстового редактора Проектирование формы приложения
- •Создание обработчиков событий
- •Создание меню
4.8. Полиморфизм
Полиморфизм это еще одно интересное свойство классов. В наиболее общем понимании полиморфизм означает способность с одним именем функции несколько ее реализаций. Мы уже сталкивались с перегрузкой имен, которая является частным случаем полиморфизма. Кроме того только что у нас были два класса с одинаковыми именами. Иначе говоря незаметно для себя мы уже познакомились с этим свойством, но теперь рассмотрим более внимательно все возможности которые оно открывает.
Иногда создавая код программист пытаясь создать некий универсальный продукт попадает в ситуацию связанную с неопределенностью. Например, мы собираемся написать программу для учета всех продаж магазина. Казалось бы чего проще. Трудность вносит то обстоятельство, что типов продаж может быть довольно много. Кроме обычных продаж по указанной цене могут быть продажи со скидкой, продажи с доставкой на дом посыльным, продажи по почте. Спустя какое то время потребуются еще некоторые типы продаж, например, выигрыши по лотереи и т.п. Каждому типу продажи соответствует свой вид счета. К концу какого-либо отчетного периода, например, к концу дня, на основании выписанных счетов, необходимо вычислить общий объем продаж, среднюю величину продажи, а также минимальную и максимальную величину продажи.
Главное меню — компонент MainMenu
Компонент Главное меню - MainMenu – расположен на закладке Standard.
Это невизуальный компонент. Это значит, что его расположение на форме не играет никакого значения, его можно расположить в любом месте формы.
Основное свойство компонента — Items. Его можно найти в окне Инспектора Объектов.
После щелчка по полю (Menu) появится кнопка с многоточием. Нажатие этой кнопки (или двойной щелчок по пиктограмме компонента на форме) вызывает появление окна
|
|
Конструктор меню |
Инспектор объектов |
которое является моделью, или конструктором меню. Одновременно в инспекторе Объектов появится новый объект без имени <Unnamed> с открытым окном Caption. В окно следует внести имя меню, например Файл. Если теперь нажать кнопку Enter, то это имя появится в конструкторе меню, а в Инспекторе объектов появится имя N1 и бледный текст подсказки TMenuItem
|
|
Конструктор меню |
Инспектор объектов |
Кроме того, в конструкторе меню, появится место для создания нового раздела, которое выделено рамкой из точек. Щелчок по этой рамке приведет кпоявлению новонго безымянного раздела меню. Если потребуется разделы меню поменять местами, то это можно сделать перетащив его на нужное место с помощью мыши.
Щелчок по имени созданного раздела приводит к появлению рамки для создания пункта меню и к появлению нового безымянного объекта в инспекторе объектов. Создание пунктов меню ничем не отличается от создания разделов. Пункты меню можно перетаскивать.
Если потребуется поместить новый пункт меню между уже созданными пунктами то это можно сделать с помощью контекстного меню, которое появляется после щелчка правой кнопкой мыши. Щелчок по Insert добавляет новый пункт, соответственно щелчок по Delete удаляет его. Если это не получается, то еще раз воспользуйтесь свойством Items.
|
|
Контекстное меню для создания нового пункта |
Меню после щелчка по Insert |
Важной командой является CreateSubmenu, которая позволяет создать подменю. Однако для этого еужно сначала установить свойство Default равным true.
Описание основных свойств приведено ниже.
Свойство |
Описание |
Caption |
Определяет надпись раздела. Символ амперсанд позволяет обозначить клавиш быстрого доступа. Если ввести символ минус "-", то вместо раздела в меню появится разделитель в виде черты |
Shortcut |
Определяет клавиши быстрого доступа к разделу меню горячие клавиши, с помощью которых пользователь, не заходя в меню, может в любой момент вызвать выполнение процедуры, связанной с данным разделом. Чтобы определить клавиши быстрого доступа, надо открыть выпадающий списоксвойства Shortcut в окне Инспектора Объектов и выбрать из него нужную комбинацию клавиш. |
Name |
Определяет имя объекта, соответствующего разделу меню. Рекомендуется давать объектам осмысленные имена. Имена в виде номера быстро приводят к путанице. |
Default |
Указывает, имеет ли данный пункт по умолчанию свое подменю. умолчанию, выделяемый жирным шрифтом |
Break |
Используется в длинных меню, чтобы разбить список разделов на несколько столбцов. Возможные значение Break: mbNone — отсутствие разбиения меню (это значение принято по умолчанию), mbBarBreak и mbBreak - в меню вводится новый столбец разделов, отделенный от предыдущего полосой (mbBarBreak) или пробелами (mbBreak). |
Checked |
указывает, что в разделе меню будет отображаться маркер флажка, показывающий, что данный раздел выбран |
AutoCheck |
Если его установить в true, то при каждом выборе пользователем данного раздела маркер будет автоматически переключаться,указывая то на выбранное.состояние, то на отсутствие выбора |
Radioltem |
true означает, что данный раздел должен работать в режиме радиокнопки совместно с другими разделами, имеющими то же значение свойства Grouplndex. По умолчанию значение GroupIndex равно 0. |
Enabled |
Означает доступносить. Если false, то будет изображаться серая надпись и пункт меню не будет реагировать на щелчок пользователя |
Visible |
Видимость. Используются для изменения состава доступных пользователю разделов. |
Bitmap |
Позволяет ввести изображение в раздел, выбрав его из указанного файла |
Imagelndex |
Позволяет указать индекс изображения, хранящегося во внешнем компоненте ImageList |
|
|
Основное событие раздела — OnClick, возникающее при щелчке пользователя на разделе или при нажатии «горячих№ клавиш быстрого доступа.
Свойство — Action..
Сославшись на ранее описанное действие, вы избавляетесь от необходимости задавать большинство из указанных выше свойств, так как они наследуются от объекта действия. Вам не требуется также писать обработчик события OnClick, так как он оже наследуется от действия.