Устранение сообщения о синтаксической ошибке при запуске меню

Если Вы создаете собственное меню, то в момент его запуска, как правило, выскакивает сообщение о синтаксической ошибке. Если его игнорировать, то дальнейшая работа программы идет без проблем. Я предлагаю несколько вариантов устранения данной ошибки.

Устранение сообщения о синтаксической ошибке при запуске меню

Предлагаю несколько вариантов решения.

I) Глобальный

За генерацию меню (т.е. создание файла MPR на базе вашего файла MPX) отвечает программа GenMenu.prg.

Эта программа расположена в корневом каталоге VFP. Если Вы делали установку в директорию по умолчанию, то это директория "C:Program FilesMicrosoft Visual StudioVfp98"

Откройте файл GenMenu.prg на редактирование командой:

MODIFY COMMAND "c:program filesmicrosoft visual studiovfp98genmenu.prg"

Найдите в нем функцию
FUNCTION addkey

и закоментируйте в этой функции весь условный оператор, начинающийся с фразы:

IF !IsLeadByte(prompt)

Однако, оставьте незакоментированной в нем единственную строчку

STORE "" to m.cKeyname

Т.е. соответсвующий кусок программы должен выглядеть так:

*!* IF !IsLeadByte(prompt)
*!* STORE c_key_padhotkey_LOC + UPPER(LEFT(prompt,1)) TO m.cKeyname
*!* ELSE
STORE "" to m.cKeyname
*!* ENDIF

Сохраните и откомпилируйте измененный файл GenMenu.prg.

Все. Теперь Вам остается только перегенерить все Ваши меню. Сообщение о синтаксической ошибке больше возникать не будут.

II) Ловкость рук

Если Вы считаете, что MicroSoft не ошибается или не чуствуете в себе достаточной уверенности, чтобы исправлять не свои файлы, то Вам остается только каким-либо способом обмануть генератор меню:

а) Каждый пункт главной линейки меню начинать с цифры
б) Первым символом каждого пункта использовать латинскую букву похожую на русскую ("C","M","P" и т.п.)
в) Обязательно вручную назначать комбинацию горячих клавишь для каждого пунтка меню

III) Игнорирование сообщения об ошибке

Это совсем грубый способ. Перед каждым вызовом меню, следует включать собственный обработчик ошибок. Примерно так:

LOCAL lcOldError, lnErrorNumber
lcOldError = ON("Error")
ON ERROR lnErrorNumber = Error()

DO MyMenu.mpr

ON ERROR &lcOldError

Автор: Владимир Максимов

Автор публикации

не в сети 20 лет

Владимир Максимов

0
Комментарии: 0Публикации: 14Регистрация: 02-09-2000
0
Оставить комментарий
Авторизация
*
*
Регистрация
*
*
*
Пароль не введен
*
Генерация пароля