Короткое меню в Microsoft Visual FoxPro
« Назад Вернемся к форме ListForm (см. рис. 10.24) и создадим для нее приведенное на рис. 11.8 контекстное меню. Рис. 11.8. Создаем контекстное меню формы ListForm Назначение меню – изменять значение Value раскрывающегося списка Combo1 формы ListForm и вызывать обработчик его события InteractiveChange, который, в свою очередь, изменяет значения свойств списка List1 той же формы. С каждым пунктом меню связана команда, вызывающая процедуру DoChangeInCombo1( ), расположенную в Cleanup-коде меню. (Механизм создания Cleanup-кода такой же, что и Setup-кода.) Процедура DoChangeInCombo1( ) не имеет параметров, а для определения значения свойства Value элемента управления Combo1 активной формы используется функция Prompt( ), возвращающая заголовок выбранного пункта меню. Употребление такой функции приемлемо, поскольку соответствующие заголовки пунктов меню и значения свойства Value совпадают. procedure DoChangeInCombo1( ) && Получаем ссылку на объект формы oForm = _SCREEN.ActiveForm with oForm.Combo1 && Изменяем значение свойства Value списка Combo1 && и вызываем обработчик его события InteractiveChange .Value = Prompt( ) .InteractiveChange endWith && Устанавливаем список Combo1 в фокусе && Это нужно для визуализации обновлений oForm.Combo1.SetFocus endProc Чтобы созданное меню функционировало как контекстное, в обработчик события RightClick формы ListForm добавим следующий код: && Обработчик события RightClick формы ListForm if File('d:\SomeShortcutMenu.mpr') then do d:\SomeShortcutMenu.mpr endif После создания короткого меню и его Cleanup-кода сохраним меню в файле d:\SomeShortcutMenu.mnx, выполним генерацию меню и просмотрим полученный в файле d:\SomeShortcutMenu.mpr код (комментарий в приводимом коде частично опущен): * * * * This PROGRAM was automatically generated BY GENMENU * * * * Menu Definition * * DEFINE POPUP shortcut SHORTCUT RELATIVE FROM MROW( ), MCOL( ) DEFINE BAR 1 OF shortcut PROMPT "Value" DEFINE BAR 2 OF shortcut PROMPT "Alias" DEFINE BAR 3 OF shortcut PROMPT "SQL" DEFINE BAR 4 OF shortcut PROMPT "QPR" DEFINE BAR 5 OF shortcut PROMPT "Array" DEFINE BAR 6 OF shortcut PROMPT "Fields" DEFINE BAR 7 OF shortcut PROMPT "Files" DEFINE BAR 8 OF shortcut PROMPT "Structure" ON SELECTION BAR 1 OF shortcut DoChangeInCombo1( ) ON SELECTION BAR 2 OF shortcut DoChangeInCombo1( ) ON SELECTION BAR 3 OF shortcut DoChangeInCombo1( ) ON SELECTION BAR 4 OF shortcut DoChangeInCombo1( ) ON SELECTION BAR 5 OF shortcut DoChangeInCombo1( ) ON SELECTION BAR 6 OF shortcut DoChangeInCombo1( ) ON SELECTION BAR 7 OF shortcut DoChangeInCombo1( ) ON SELECTION BAR 8 OF shortcut DoChangeInCombo1( ) ACTIVATE POPUP shortcut * * * * Cleanup Code & Procedures * * procedure DoChangeInCombo1( ) && Код процедуры DoChangeInCombo1( ) см. выше … endProc Форма ListForm с созданным контекстным меню приведена на рис. 11.9. Рис. 11.9. Контекстное меню Shortcut формы ListForm |