Функция CNTBAR( )

Возвращает количество элементов в меню, определенном пользователем, или в системном меню 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

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 30.11.2002