1.2.1. Компонент TMainMenu


TMainMenu позволяет поместить главное меню в программу. При помещении TMainMenu на форму это выглядит, как просто иконка. Иконки данного типа называют невидимым (невизуальным) компонентом, поскольку они невидимы во время выполнения программы. Создание меню включает три шага:

1) помещение TMainMenu на форму,

2) вызов Дизайнера Меню через свойство Items в Инспекторе Объектов,

3) определение пунктов меню в Дизайнере Меню.

Этот компонент доступен из модуля MENUS, и находится на странице Палитры компонентов Standard

Этот компонент представляет главное меню формы и наследует все методы и свойства TMenu. Особенность его в том, что в нем реализован сложный механизм объединения меню. Это необходимо по следующим причинам:

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

Объединение меню нужно при работе с интерфейсом MDI и его подокнами.

Механизм объединения меню используется серверами OLE, запускаемыми по месту нахождения объекта OLE. Загружаясь, сервер дописывает осу­ществляемые им операции к меню другого приложения.

Для того чтобы реализовать объединение меню, у тех форм, меню которых будут присоединены к главному, необходимо установить в True свойство: (Рb) property AutoMerge: Boolean.

При этом у главного меню оно должно оставаться равным False, иначе главное меню будет вообще невидимым. Объединение будет происходить автоматически при активизации новых форм или серверов OLE. Кроме автоматического режима, объединение меню можно выполнить при вызове метода: procedure Merge(Menu: TMainMenu).

Присоединяемое меню при необходимости может быть легко отсоединено вы­зовом метода: procedure Unmerge(Menu: TMainMenu).

При установленном в True свойстве AutoMerge ссылка на присоединенное меню будет сохраняться в специальном поле компонента и отсоединяться в нужных случаях автоматически (например, при закрытии формы, которой оно принадлежит).

Объединение меню происходит по специальным правилам, в основе которых лежит использование группового индекса (свойства Group Index) каждого объек­та TMenuItem.

У пунктов меню одного уровня, в частности всех подменю верхнего уровня в главном меню, свойство GroupIndex является неубывающим, т. е. у после­дующего пункта групповой индекс больше либо равен индексу предыдущего. Это требование отслеживается как на этапе разработки, так и на этапе испол­нения. Например, пусть пункты меню имеют индексы 0, 3, 4, 5, 6. Если включить пункт меню с индексом 5 между пунктами с индексами 0 и 3, то 3 и 4 будут изменены на 5. А вот изменить большее значение Х на меньшее Y, если впереди есть пункты с индексом, большим Y, невозможно. Если в этом примере попытаться изменить индекс 6 на 4, то это приведет к возникно­вению исключительной ситуации EMenuError.

Для обычных форм объединение происходит только на верхнем уровне в главном меню во время их активизации. В объединенном меню все подменю будут располагаться по возрастанию номера группового индекса, при этом:

если в присоединяемом меню есть пункты с таким же групповым индексом, что и в исходном, то все их множество заменяет все множество таких пунктов в исходном меню;

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

К окнам интерфейса MDI все сказанное относится только при запуске приложения. Если в формах приложения со стилем fsMDIChild есть свои главные меню, то в этот момент они автоматически сольются с главным меню формы fsMDIForm независимо от состояния AutoMerge.

На уровне работы с серверами OLE предусмотрены дополнительные возмож­ности по объединению меню. Если в компонент TOLEContainer загружен объект OLE, то в конец подменю Edit обычно добавляется подменю, из которого можно вызвать функции открытия и редактирования этого объекта. После активизации сервера он может не только вставлять свои подменю в главное, но и добавлять новые пункты к уже существующим подменю.

Три метода TMainMenu используются для работы с меню OLE:

procedure PopulateOle2Menu(SharedMenu: HMenu; Groups: array of Integer; var Widths: array of Longint);

procedure GetOle2AcceleratorTable(var hAccel : THandle; var numAccels: Word; Groups: array of Integer) ;

procedure Set01e2MenuHandle(Handle: HMENU);

1.2.2. Компонент TLabel


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

Этот компонент доступен из модуля STDCTRLS, и находится на странице Палитры компонентов Standard.

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

Свойства компонента приведены в табл.1:

Таблица 1

Свойства компонента TLabel


Свойство

Описание

(Pb) property Caption: TCaption; TCaption = string[255]; Содержит строку с выводимым текстом.
(Pb) property Alignment: TAlignment; Устанавливает правило выравнивания текста — по правому, левому краю или по центру клиентской области.
(Pb) property AutoSize: Boolean; В случае True происходит автоматическое приведение размеров компонента к размерам текста и высоте шрифта.





Продолжение табл.1
(Pb) property ShowAccelChar: Boolean;

Показывает, отображается ли в TLabel акселератор (символ, перед которым стоит знак амперсанда — '&'). Если оно равно False, амперсанд никак не интерпрети­руется. В случае True акселератор выделяется в строке подчеркиванием и нажатие клавиш + приводит к передаче фокуса окну FocusControl (т.к. TLabel сам не является оконным компонентом).

(Pb) property FocusControl: TWinControl; Определяет оконный компонент, которому посылаются сообщения о вводе акселе­ратора.
(Pb) property Transparent: Boolean; Прозрачность фона компонента. Если свойство установлено в True, то при перерисовке элемента управления не про­исходит закрашивание клиентской облас­ти. В противном случае — происходит закрашивание кистью bsSolid и цветом Color.
(Pb) property WordMrap: Boolean; Определяет возможность разрыва слов в случае, если длина выводимого текста превышает ширину компонента.


Информация о работе «Разработка игровой программы Морской бой»
Раздел: Информатика, программирование
Количество знаков с пробелами: 52402
Количество таблиц: 3
Количество изображений: 6

Похожие работы

Скачать
33102
12
1

... до expression2. В том случае, когда значение expression1 оказывается больше значения expression2, тело цикла не будет выполнятся вовсе. 2. РАЗРАБОТКА ПРОГРАММЫ   2.1 Постановка задачи Составить программу для игры в «Морской бой» игрока с компьютером. Программа должна позволять расставлять корабли на поле 10 х 10, контролировать правильность их расстановки, давать противникам возможность ...

Скачать
16288
2
8

... характер, однако, в этом случае возникает проблема, связанная с понятием окончания игры.   1. Постановка задачи Задача заключается в разработке алгоритма, по которому компьютер сможет играть в «Морской бой» с максимальным качеством, и при этом не подглядывая расположение флота игрока. Дополнительное и очевидное условие: при каждой новой игре вне зависимости от размещения сил противника ...

Скачать
184858
2
5

... на восстановление физических и психических сил, удовлетворяет потребности молодого человека в общении, развлечениях, активном и подвижном отдыхе. 1.2. Возможности использования анимационных программ в молодежном туризме Понятие «анимация» имеет латинское происхождение (anima-воздух, ветер, душа; animatus-одушевление) и означает воодушевление ...

Скачать
99972
4
5

... организованная игровая деятельность ребенка способствует формированию таких волевых качеств, как ответственности, упорства, настойчивости, решительности, выдержки. Экспериментальная работа по формированию волевых качеств личности в процессе игровой деятельности была проведена с учащимися 4 класса «В» СОШ №8, г. Майкопа. В классе 29 человек. На первом этапе нашего исследования провели изучение ...

0 комментариев


Наверх