Возвращает номер последнего выбранного элемента меню, определенного с помощью команды DEFINE POPUP, или номер элемента меню Visual FoxPro.

BAR( )

Expand imageВозвращаемое значение

Числовое

Expand imageПримечания

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

BAR( ) возвращает 0, если активных меню нет или если пользователь вышел из меню, нажав клавишу Esc.

Expand imageПример

данном примере функция BAR( ) используется для передачи номера элемента меню в процедуру. Текущая системная строка меню сохраняется в памяти по команде SET SYSMENU SAVE, а затем все заголовки системных меню удаляются командой SET SYSMENU TO.

Командами DEFINE PAD создаются два заголовка меню, и для каждого из них с помощью команды DEFINE POPUP строится меню. Команда DEFINE BAR используется для создания элементов в каждом меню. При выборе заголовка меню команда ON PAD с помощью команды ACTIVATE POPUP активизирует соответствующее меню.

Когда вы выбираете элемент из меню, команда ON SELECTION POPUP с помощью функций BAR( ) и POPUP( ) передает номер элемента и заголовок меню в процедуру choice. Эта процедура отображает на экране номер выбранного элемента и название содержащего его меню. Если вы выберете Exit в меню Card Info, то по команде SET SYSMENU TO DEFAULT будет восстановлена первоначальная система меню Visual FoxPro.

  CopyCode imageCopy Code
*** Name this program BAR_EXAM.PRG ***
CLEAR
SET SYSMENU SAVE
SET SYSMENU TO
DEFINE PAD padConv OF _MSYSMENU ;
   PROMPT '\<Conversions' COLOR SCHEME 3 ;
   KEY ALT+C, ''
DEFINE PAD padCard OF _MSYSMENU ;
   PROMPT 'Card \<Info' COLOR SCHEME 3 ;
   KEY ALT+I, ''
ON PAD padConv OF _MSYSMENU ACTIVATE POPUP popConv
ON PAD padCard OF _MSYSMENU ACTIVATE POPUP popCard
DEFINE POPUP popConv MARGIN RELATIVE COLOR SCHEME 4
DEFINE BAR 1 OF popConv PROMPT 'Ar\<ea' KEY CTRL+E, '^E'
DEFINE BAR 2 OF popConv PROMPT '\<Length' ;
   KEY CTRL+L, '^L'
DEFINE BAR 3 OF popConv PROMPT 'Ma\<ss' ;
   KEY CTRL+S, '^S'
DEFINE BAR 4 OF popConv PROMPT 'Spee\<d' ;
   KEY CTRL+D, '^D'
DEFINE BAR 5 OF popConv PROMPT '\<Temperature' ;
   KEY CTRL+T, '^T'
DEFINE BAR 6 OF popConv PROMPT 'T\<ime' ;
   KEY CTRL+I, '^I'
DEFINE BAR 7 OF popConv PROMPT 'Volu\<me' ;
   KEY CTRL+M, '^M'
*** Here is where the POPCONV menu uses the BAR( ) function
*** to pass a bar number to the procedure called choice below.
ON SELECTION POPUP popConv;
   DO choice IN bar_exam WITH BAR( ), POPUP( )
DEFINE POPUP popCard MARGIN RELATIVE COLOR SCHEME 4
DEFINE BAR 1 OF popCard PROMPT '\<View Charges' ;
   KEY ALT+V, ''
DEFINE BAR 2 OF popCard PROMPT 'View \<Payments' ;
   KEY ALT+P, ''
DEFINE BAR 3 OF popCard PROMPT 'Vie\<w Users' ;
   KEY ALT+W, ''
DEFINE BAR 4 OF popCard PROMPT '\-'
DEFINE BAR 5 OF popCard PROMPT '\<Charges ';
   KEY ALT+C
DEFINE BAR 6 OF popCard PROMPT '\-'
DEFINE BAR 7 OF popCard PROMPT 'E\<xit ';
   KEY ALT+X
*** Here is where the POPCARD menu uses the BAR( ) function
*** to pass a bar number to the procedure called choice below.
ON SELECTION POPUP popCard;
   DO choice IN bar_exam WITH BAR( ), POPUP( )
*** The procedure choice uses the gnBar parameter
*** to contain the value passed by the BAR( ) function.
PROCEDURE choice
PARAMETERS gnBar, gcPopup
WAIT WINDOW 'You chose bar #' + LTRIM(STR(gnBar)) + ;
   ' from popup ' + gcPopup NOWAIT
SET SYSMENU TO DEFAULT

Expand imageСмотрите также