Окт 16

Процедура определения пункта для меню i-го уровня

1. Начало.
2. Двойным щелчком мыши на прямоугольнике пункта меню вызовите диалоговое окно Menu Item Properties.
3. Если пункт определяет подменю, то есть меню (i+ 1)-го уровня, выполните следующую последовательность действий:
■ установите флажок Pop-up;
■ введите имя пункта. Если оно содержит мнемонический символ, то перед таким символом нужно вставить знак &;
■ при необходимости задайте другие опции пункта;
■ закройте окно Menu Item Properties;
■ для каждого пункта меню (i + 1)-го уровня выполните настоящую процедуру, подставив на месте параметра г значение i + 1.
4. Если пункт определяет команду, то выполните следующую последовательность действий:
■ сбросьте флажок Pop-up;
■ введите имя пункта, предваряя мнемонический символ знаком &;
■ введите идентификатор пункта;
при необходимости задайте другие опции пункта;
закройте окно Menu Item Properties.
5. Если пункт определяет горизонтальную разделительную линию, то выполните следующую последовательность действий:
сбросьте флажок Pop-up;
установите флажок Separator;
• закройте окно Menu Item Properties.
6. Конец.
Обратите внимание на то, что на шаге 3 алгоритма процедура вызывает саму себя. Именно поэтому она является рекурсивной.
При кажущейся простоте алгоритма на самом деле он может описывать довольно сложный процесс. Вообразите себе виртуальный стек, на вершине которого запоминается очередной рекурсивный вызов процедуры из шага 3 алгоритма. Когда разработчик, создающий меню, достигает шага 6 алгоритма, это в общем случае вовсе не конец процесса. Если виртуальный стек не пуст, то нужно вернуться к прерванной процедуре, из которой произошел вызов выполняемой процедуры. И, конечно, удалить запомненный вызов с вершины стека. И только когда воображаемый стек окажется пуст, создание рассматриваемого пункта меню i-го уровня будет завершено.
Теперь можно описать процедуру создания меню верхнего уровня при помощи редактора меню.