Турбо Паскаль 6.0

       

Полоса меню.


Переменная полосы меню MenuBar инициализируется вложенными вызовами стандартных функций NewMenu, NewSubMenu, NewItem и NewLine. После того, как Вы инициализируете меню, Ваша работа закончена. Полоса меню знает как обработать ввод пользователя без Вашей помощи. Инициализируем простую полосу меню с одним элементом, содержащем один выбор:

## File ############# +----------------+** |**Open F3*******|#* +----------------+#* **##################* *********************

const cmFileOpen = 200; { определение новой команды } procedure TMyApp.InitMenuBar; var R: TRect; begin GetExtent(R); R.B.Y := R.A.Y + 1; MenuBar := New(PMenuBar, Init(R, NewMenu( { создать полосу с меню } NewSubMenu('~F~ile', hcNoContext, NewMenu( { определить меню } NewItem('~O~pen', 'F3', kbF3, cmFileOpen, hcNoContext, { элемент } nil)), { больше нет элементов } nil) { больше нет подменю } ))); { конец полосы } end;

Меню, создаваемое этим кодом, называется 'File' и элемент меню называется 'Open'. "~" делает F символом короткого ввода в 'File', а O - символом короткого ввода 'Open'; клавиша F3 устанавливается как горячая клавиша для 'Open'. Все видимые элементы Turbo Vision могут иметь номер контекстной подсказки, связанный с ними. Номер позволяет просто реализовать контекстно-ориентированную справочную систему в Вашей программе. По умолчанию видимые элементы имеют контекст hcNoContext - это специальный контекст, который не изменяет текущий контекст. Номера контекстов подсказки появляются при инициализации полосы меню, поскольку из-за вложенной структуры этих объектов добавить номера позднее будет трудно. Когда Вы готовы добавить контекст подсказки в полосу меню, Вы можете подставить свои значения для hcNoContext в коде Init. Чтобы добавить второй элемент в меню 'File', Вы просто вкладываете другую функцию NewItem:

## File ############# +----------------+** |**Open F3*******|#* | New F4 |#* +----------------+#* **##################* *********************

MenuBar := New(PMenuBar, Init(R, NewMenu( NewSubMenu('~F~ile', hcNoContext, NewMenu( NewItem('~O~pen', 'F3', kbF3, cmFileOpen, hcNoContext, NewItem('~N~ew', 'F4', kbF4, cmNewWin, hcNoContext, nil))), nil) )));


Чтобы добавить второе меню, Вы вкладываете другую функцию NewSubMenu:

## File Window########### ********+---------------+** ********|**Next F6******|#* ********| Zoom F5 |#* ********+---------------+#* **********################* ***************************

MenuBar := New(PMenuBar, Init(hcNoContext, NewMenu( NewSubMenu('~F~ile', hcNoContext, NewMenu( NewItem('~O~pen', 'F3', kbF3, cmFileOpen, hcNoContext, NewItem('~N~ew', 'F4', kbF4, cmNewWin, hcNoContext, nil))), NewSubMenu('~W~indow', hcNoContext, NewMenu( NewItem('~N~ext', 'F6', kbF6, cmNext, hcNoContext, NewItem('~Z~oom', 'F5', kbF5, cmZoom, hcNoContext, nil)), nil))) { закрывающая скобка для меню } )));

Вы связали 2 стандартных команды Turbo Vision cmNext и cmZoom с элементами меню и горячими клавишами. Чтобы добавить горизонтальную линию между выборами в меню, вставьте вызов NewLine между вызовами NewItem:

## File Window###### +----------------+** |**Open F3*******|#* | New F4 |#* +----------------+#* | Exit Alt-X |#* +----------------+#* **##################* *********************

{ находится в TVGUID03.PAS } MenuBar := New(PMenuBar, Init(hcNoContext, NewMenu( NewSubMenu('~F~ile', hcNoContext, NewMenu( NewItem('~O~pen', 'F3', kbF3, cmFileOpen, hcNoContext, NewItem('~N~ew', 'F4', kbF4, cmNewWin, hcNoContext, NewLine( NewItem('E~x~it', 'Alt-X', kbAltX, cmNewWin, hcNoContext, nil))))), NewSubMenu('~W~indow', hcNoContext, NewMenu( NewItem('~N~ext', 'F6', kbF6, cmNext, hcNoContext, NewItem('~Z~oom', 'F5', kbF5, cmZoom, hcNoContext, nil))), nil)) )));

Вы можете заметить, что версия TVGUID03.PAS на Вашем диске так же добавляет клавишу статуса в строку статуса, связывая клавишу F10 с командой cmMenu. cmMenu - это стандартная команда Turbo Vision, которая помогает пользователям использовать полосу меню без мышки. В этом случае клавиша F10 активирует полосу меню, позволяя выбрать меню и элементы меню, используя клавиши курсора. Вы можете так же заметить, что элемент статуса имеет пустую строку в качестве текста и для него ничего не появляется на экране. Хотя можно предупредить пользователей, что F10 будет активировать меню, они, скорее всего, не будут указывать этот элемент мышкой. Отметить полосу меню гораздо более удобно.


Содержание раздела







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий