Разработка игровой программы "Морской бой" — страница 8

  • Просмотров 7413
  • Скачиваний 492
  • Размер файла 211
    Кб

режима, объединение меню можно выполнить при вызове метода: 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. Для обычных форм объединение происходит только на верхнем

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

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

TOLEContainer загружен объект OLE, то в конец подменю Edit обычно добавляется подменю, из которого можно вызвать функции открытия и редактирования этого объекта. После активизации сервера он может не только вставлять свои подменю в главное, но и добавлять новые пункты к уже существующим подменю. Три метода TMainMenu используются для работы с меню OLE: 1.     procedure PopulateOle2Menu(SharedMenu: HMenu; Groups: array of Integer; var Widths: array of Longint); 2.     procedure