Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab_Rab_BD / lab5 / metod5.doc
Скачиваний:
16
Добавлен:
20.04.2015
Размер:
82.94 Кб
Скачать

Лабораторная работа № 5.

Проектирование меню.

Введение:

Практически все достаточно сложные программы в настоящее время обладают системой меню, предназначенной для выбора того или иного пути выполнения программы. Интерфейс, основанный на использование меню, становиться очень удобным и позволяет быстро достигнуть необходимого результата. Меню представляет собой набор команд, при выборе каждой из которых выполняется какая-то последовательность операторов, оформленных в виде подпрограммы. Система меню представляет собой древовидную структуру. При отображении меню отдельные ее элементы имеют общий стиль, определяемый характеристиками, заложенными в операционную систему Windows 95. Зато с каждым элементом меню можно связать событие, возникающее при активизации этого элемента, которое и инициирует выполнение упоминавшейся последовательности операторов. В Delphi можно создать меню наподобие главного и локальных меню самой среды.

В качестве любого элемента меню может быть либо подменю (меню следующего уровня и раскрывающееся при выделении элемента), либо команда, вызывающая возникновение соответствующего события, либо просто разделительная линия, позволяющая делить отдельные элементы меню на группы по своему назначению.

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

В Delphi имеется стандартная компонента, входящая в семейство класса TMenu. Она содержит структуру меню в виде объекта класса TMenuItem. Каждый из элементов меню, в свою очередь, также является объектом класса TMenuItem. Все элементы меню в явном виде размещаются в форме и непосредственно доступны через свои идентификаторы. Сделано это для того, чтобы упростить доступ к их обработчикам события OnClick и опубликованным свойствам.

Элемент меню класса tMenuItem:

Как указывалось выше, элемент меню может представлять собой либо подменю, либо команду, либо разделительную линию. К какой категории относится конкретный элемент, зависит от его характеристик. Несмотря на это, любой элемент меню принадлежит к одному и тому же классу – TMenuItem и каждый может рассматриваться как самостоятельное меню.

Для того, чтобы элемент меню представлял собой подменю, необходимо, чтобы свойство Items содержало соответствующие компоненты этого подменю. Если это свойство пустое (не содержит ни одного элемента), элемент меню является либо командой, либо разделительной линией. Если элемент меню представляет собой подменю, при его выделении раскрывается содержимое (элементы) этого меню.

Для того, чтобы элемент меню представлял собой разделительную линию, следует его свойству Caption задать значение “-“.

Элементы меню могут объединяться в группы. Информация о принадлежности элементов к группам может использоваться при слиянии меню нескольких форм и при использовании взаимосвязанных элементов меню. При этом группы элементов меню должны идти в определенном порядке – по возрастанию их номеров.

Характеристики элемента меню задают его внешний вид и место в структуре меню. Среди его свойств отметим следующие:

Break – свойство, определяющее наличие разбиения меню на столбцы на текущем элементе.

Caption – свойство типа string, содержащее текст элемента меню. Здесь можно задать клавишу быстрого перехода с помощью символа &, помещаемого перед соответствующим символом текста. С помощью этой клавиши (в сочетании с клавишей Alt или без нее) можно осуществить быстрый переход на данный элемент меню.

Checked – свойство логического типа, определяющее, является ли элемент меню отмеченным (если имеет значение True, элемент помечается “галочкой”).

Default – свойство логического типа; если оно имеет значение True, текст элемента меню выделяется полужирным шрифтом, а двойное нажатие мышью старшего элемента приводит к появлению у текущего элемента события OnClick. По умолчанию имеет значение False.

Enabled – свойство логического типа; если оно имеет значение True, элемент меню реагирует на события от мыши и клавиатуры (элемент меню разрешен). Запрещенные элементы меню выделяются тусклым цветом. По умолчанию имеет значение True.

GroupIndex – свойство целого типа содержит номер группы, к которой принадлежит элемент меню. По умолчанию имеет нулевое значение.

Items[Index] – свойство-массив типа TMenuItem (индекс Index – целого типа), задающее младшие элементы меню по отношению к текущему элементу. Число элементов определяется свойством Count. Нумерация начинается с нуля. Только для чтения.

MenuIndex – свойство целого типа, содержащее индекс текущей компоненты в списке Items старшей компоненты.

RadioItem – свойство логического типа; если оно имеет значение True, элемент меню выполняет роль переключателя, т.е. помеченным может быть только один элемент одной группы. Помеченный элемент отличается наличием черного кружка. По умолчанию свойство имеет значение False.

ShortCut – свойство целого типа, определяющее код клавиш быстрого управления, при нажатии которых активизируется элемент меню. Для работы с кодами клавиш быстрого управления используются подпрограммы ShortCut, ShortCutToKey, ShortCutToText, TextToShortCut.

Visible – свойство логического типа; если оно имеет значение True, элемент меню отображается на экране, если False – нет.

В классе TMenuItem определено одно событие – OnClick.

Класс имеет ряд методов, в основном связанных с корректировкой структуры и определений связи между элементами.

Add(Item) – процедура, добавляющая элемент Item (класса TMenuItem) в список младших элементов.

Delete(Index) – процедура, удаляющая из списка младших элементов элемент с индексом Index. При этом элемент из динамической памяти не удаляется и может быть повторно использован.

и т.д.

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

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

ShortCut(Key, Shift) – функция типа TShortCut, возвращает код клавиши быстрого управления, задаваемой значением Key целого типа, и совокупностью специальных клавиш клавиатуры и мыши, задаваемой параметром Shift типа TShiftState.

ShortCutToKey(ShortCut, Key, Shift) – процедура, преобразующая параметр ShortCut типа TShortCut, определяющий клавиши быстрого управления, в код Key основной клавиши и параметр Shift типа TShiftState, определяющий нажатие специальных клавиш клавиатуры, а также клавиш мыши.

ShortCutToText(ShortCut) – функция типа string, возвращающая текст для клавиш быстрого управления, заданных параметром ShortCut типа TShortCut.

TextToShortCut(Text) – функция типа TShortCut, возвращающая для текста Text параметр целого типа, определяющий клавиши быстрого управления.