FoxPro Club Главная

Конференция Решения Фотоальбом Сайт М.Дроздова Статьи Файловый архив Книга Visual FoxPro 9.0 Русский Help для Visual FoxPro
Пользователей: 9114
Вход
Устранение сообщения о синтаксической ошибке при запуске меню

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


 
Прислал: Владимир Максимов   Категория: Разное


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

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

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

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

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

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

MODIFY COMMAND "c:\program files\microsoft visual studio\vfp98\genmenu.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
 
Сделайте оценку этого решения Плохо Удовлетворительно Так себе Хорошо Отлично Текущая оценка: (4.906)
Дополнения пользователей
Устранение сообщения о синтаксической ошибке при запуске меню
[+][?]
Black Cat
14.08.01 06:38:04

дополнение к глобальному способу
в файле genmenu.prg в функции addkey
в условный оператор 
 IF NOT EMPTY(m.cKeyname)
добавить  AND NOT EMPTY(m.cKeylabel)
получится
IF NOT EMPTY(m.cKeyname) AND NOT EMPTY(m.cKeylabel)

[Дополнить]



© 2000-2017 Fox Club 
При размещении любых материалов с сайта на других ресурсах- прямая ссылка на www.foxclub.ru обязательна
Яндекс.Метрика