Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Язык программирования Сpp 25.09.11 (2).doc
Скачиваний:
16
Добавлен:
19.08.2019
Размер:
10.09 Mб
Скачать

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, так как он оже наследуется от действия.