Возвращает количество элементов в меню, определенном пользователем, или в системном меню Visual FoxPro.
Синтаксис:
CNTBAR([cMenuName])
Параметры:
cMenuName
Задает имя меню, для которого функция CNTBAR( ) возвращает число элементов. Список имен системных меню Visual FoxPro приведен в теме Имена системных меню.
Если имя cMenuName опущено, функция CNTBAR( ) возвращает число элементов активного меню, созданного с помощью команды DEFINE POPUP.
Результат:
Числовой
Комментарии:
Если меню создано пользователем с указанием опции PROMPT в команде DEFINE POPUP, то по команде ACTIVATE POPUP Visual FoxPro вычисляет количество элементов в нем. Для такого меню CNTBAR( ) сможет возвратить осмысленное значение только после активизации меню. Однако если элементы подобного меню созданы с помощью команды DEFINE BAR, функция CNTBAR( ) может определить число элементов до выдачи команды ACTIVATE POPUP.
Пример:
* В следующем примере программа с именем CNTBAR.PRG добавляет * заголовок меню в системное меню. Новое меню popEnv создается с * четырьмя элементами. При выборе какого-либо элемента программа * ставит возле него в меню галочку. Функция CNTBAR( ) используется в * цикле, чтобы отобразить галочки у соответствующих элементов меню. *** You must name this program CNTBAR.PRG *** CLEAR SET TALK OFF DEFINE PAD padEnv OF _MSYSMENU PROMPT 'E\<nvironment'; KEY ALT+V, 'ALT+V' ON PAD padEnv OF _MSYSMENU ACTIVATE POPUP popEnv DEFINE POPUP popEnv MARGIN RELATIVE SHADOW COLOR SCHEME 4 DEFINE BAR 1 OF popEnv PROMPT '\<Status Bar' DEFINE BAR 2 OF popEnv PROMPT '\<Clock' DEFINE BAR 3 OF popEnv PROMPT '\<Extended Video' DEFINE BAR 4 OF popEnv PROMPT 'St\<icky' ON SELECTION POPUP popEnv DO enviropop IN cntbar.prg FOR i = 1 TO CNTBAR('popEnv') DO CASE CASE PRMBAR('popEnv', i) = 'Status Bar' SET MARK OF BAR i OF popEnv TO SET('STATUS') = 'ON' CASE PRMBAR('popEnv', i) = 'Clock' SET MARK OF BAR i OF popEnv TO SET('CLOCK') = 'ON' CASE PRMBAR('popEnv', i) = 'Extended Video' SET MARK OF BAR i OF popEnv TO SROW( ) > 25 CASE PRMBAR('popEnv', i) = 'Sticky' SET MARK OF BAR i OF popEnv TO SET('STICKY') = 'ON' ENDCASE ENDFOR PROCEDURE enviropop DO CASE CASE PROMPT() = 'Status' IF mrkbar('popEnv', bar( )) DO CASE CASE _WINDOWS OR _MAC SET STATUS BAR OFF CASE _DOS SET STATUS OFF OTHERWISE ENDCASE SET MARK OF BAR bar( ) OF popEnv TO .F. ELSE DO CASE CASE _WINDOWS OR _MAC SET STATUS BAR ON CASE _DOS SET STATUS ON OTHERWISE ENDCASE SET MARK OF BAR bar( ) OF popEnv TO .T. ENDIF CASE PROMPT( ) = 'Clock' IF mrkbar('popEnv', bar( )) SET CLOCK OFF SET MARK OF BAR bar( ) OF popEnv TO .F. ELSE DO CASE CASE _WINDOWS OR _MAC SET STATUS BAR ON SET CLOCK STATUS CASE _DOS SET CLOCK ON OTHERWISE ENDCASE SET MARK OF BAR bar( ) OF popEnv TO .T. ENDIF CASE PROMPT( ) = 'Extended Video' IF MRKBAR('popEnv', bar( )) SET DISPLAY TO VGA25 SET MARK OF BAR bar( ) OF popEnv TO .F. ELSE SET DISPLAY TO VGA50 SET MARK OF BAR bar( ) OF popEnv TO .T. ENDIF CASE PROMPT( ) = 'Sticky' IF MRKBAR('popEnv', bar( )) DO CASE CASE _WINDOWS OR _MAC WAIT WINDOW 'STICKY is always on in this Visual FoxPro version' CASE _DOS SET STICKY OFF OTHERWISE ENDCASE SET MARK OF BAR bar( ) OF popEnv TO .F. ELSE DO CASE CASE _WINDOWS OR _MAC WAIT WINDOW 'STICKY is always ON in Visual FoxPro' CASE _DOS SET STICKY ON OTHERWISE ENDCASE SET MARK OF BAR bar( ) OF popEnv TO .T. ENDIF ENDCASE