Анимация
JavaScript
|
Главная Библионтека mywksp.Close Me![Кнопка1].Enabled = True DoCmd.OpenTable "account" DoCmd.GoToRecord acTable, "account", acLast Обратите внимание на то, что объекты rstOrd, rstAc и mywksp закрываются с помощью имеющегося у них метода Close. Если их не закрывать, то при нескольких повторных использованиях формы "Прием заказов" появится сообщение, что Access больше не может открыть таблицу. Если покупатель все-таки решил не покупать автомобиль, то используйте кнопку "Отказ от заказа". При этом произойдет откат транзакции, и ни в одну из таблиц новые данные внесены не будут. Правда, есть один момент: если вы используете поле типа счетчик, то внутри базы данных его номер прирастет, поэтому при следующей попытке добавить запись, его значение будет больше на значение приращения. Private Sub cmbRback Click() mywksp.Rollback rstOrd.Close rstAc.Close mywksp.Close Me![Кнопка1].Enabled = True Me!cmbCust.Enabled = False Me!txtFam.Enabled = False Me!cmbAc.Enabled = False End Sub 9.3. Разработка управляющего меню Меню в прикладной программе - это первое, что видит пользователь, решив запустить разработанное вами приложение. Естественно, стоит приложить усилия, чтобы первое впечатление стимулировало, а не отпугивало пользователя. В этом параграфе мы рассмотрим вопросы, связанные с разработкой меню для управления работой приложения. Основное назначение меню заключается в том, чтобы дать возможность пользователю получить легкий доступ ко всем элементам прикладной программы. Следовательно, меню должно отображать не функциональную схему вашей программы и сложные взаимосвязи между ее блоками, а соответствовать логике работы пользователя. При разработке меню, на наш взгляд, следует придерживаться следующих принципов: • Заголовок меню должен включать максимально ясную информацию о его назначении. Старайтесь использовать общеупотребительные термины, не используйте легкозабываемые сокращения. • Структура меню должна соответствовать частоте выполнения тех или иных действий, логической последовательности их выполнения или в крайнем случае хотя бы алфавитному порядку. В то же время, если ваше меню насчитывает более 8 команд, алфавитный порядок их расположения может оказаться наиболее эффективным. • Старайтесь выделять функционально связанные группы команд с помощью разделителей. • Избегайте чрезмерно длинных списков команд в меню, делите такие списки на подменю по функциональным признакам. Во всяком случае, категорически избегайте создавать в меню списки команд, не умещающиеся на экране. • Для часто используемых команд в меню определяйте горячие клавиши. Это позволит пользователю выполнять такие команды, не отрывая рук от клавиатуры. Разработка меню в Visual FoxPro Для разработки меню в Visual FoxPro проще всего использовать Конструктор меню (Menu Designer). Интересно отметить, что с помощью Конструктора меню можно не только разрабатывать меню для пользовательского приложения, но и настраивать меню Visual FoxPro для наиболее эффективной работы программиста. В проекте выберем вкладку Other, найдем заголовок Menus и дадим команду New. На экране появится окно Конструктора меню, внешний вид которого приведен на рис. 9.16. На этом же рисунке поясняются основные элементы этого Конструктора. Обратите внимание, что Конструктор меню принципиально отличается от других визуальных средств проектирования Палоса для перемещения пунктоа (комйщ) меню Название пункта маню Задание опций для пункта меню Описание ПЁрекод на Qoneg высокие уровень меню liimenu iJjJ ОВЬ01Ч M*nuLsvel * I I Menu Ёвг присмотр системы меню Вставка нйвоп: пункта м&ял Удалаинв аьДвлвннйПй выше выделенного пункта меню Рис. 9.16. Конструктор меню в Visual FoxPro Если в вашу задачу входит настройка главного меню Visual FoxPro, то самое подходящее в этом случае решение - в меню Menu выбрать команду Quick Menu. После этого в Конструкторе меню в качестве заготовки мы получаем копию существующего меню Visual FoxPro, с которым можем проделывать любые изменения, включая удаление каких-либо меню и команд, добавление новых и т. д. Не стоит слишком усердствовать с удалением, помните, что, изымая какую-либо команду из меню, вы теряете предусмотренную наличием этой команды функциональность. Например, удалив меню Edit, вы не сможете использовать стандартные возможности переноса, копирования и поиска при работе с текстом. В соответствии со сложившимися правилами включать свои собственные меню в главное меню следует перед меню Help, которое должно оставаться последним. Для разработки меню пользовательской программы нам придется вручную описать все необходимые пункты. Рассмотрим последовательность, в которой следует выполнить эти действия. Запишем заголовки пользовательского меню в столбце Prompt. Если после выбора меню на экране должен появиться список команд, выберем в столбце Result пункт Submenu и щелкнем на появившейся справа кнопке Create. Мы окажемся на следующем уровне меню, где запишем заголовки команд, входящих в это подменю. Если структура нашего меню предусматривает еще один уровень вложения, повторите указанные действия. Для перехода с уровня подменю на верхний уровень необходимо выбрать его из комбинированного списка Menu Level. Если вы хотите выделить группы команд, поместите в столбце Prompt в строке, разделяющей группы команд меню, знаки \-. Вы всегда можете проверить, как визуально будет выглядеть ваше меню на экране, нажав клавишу Preview. Для быстрого перемещения по меню можно назначить для его команд "горячие клавиши". Нажимая соответствующую алфавитную клавишу, пользователь может сразу выполнить нужную команду или перейти в какое-либо меню. Выбранная клавиша в меню подчеркивается. Для задания такой клавиши перед нужной буквой необходимо поставить знаки \<<. Например, если мы хотим, чтобы команда Счет выполнялась при нажатии клавиши С, мы должны заголовок этой команды написать в виде \<<Счет. После этого в меню буква С будет подчеркнута. Естественно, в одном меню не может быть несколько команд, использующих в качестве "горячих клавиш" одну и ту же букву. К сожалению, при использовании русских заголовков для меню не все так просто и, чтобы можно было реализовать описанные возможности, необходимо прочитать следующий абзац. Visual FoxPro. После того как мы опишем с его помощью меню, необходимо сгенерировать программу. Файл с этой программой будет иметь расширение MPR, а файл после компиляции -MPX. Этот файл и следует запускать для работы с созданным меню. Недаром раньше такой инструмент программиста так и назывался - Генератор. Для генерации программы в меню Menu необходимо выбрать команду Generate. Prnmpi Opiions Сйшпиепс ZI i ok Cancel Shortait... Vstip Fat Г Pud Имя меню Пояснение для пользователя в строке состояния Расположение команды при редаетировании OLE-объекта Задание клавиатурной комбинации Условие доступа к команде меню Рис. 9.17. Вы можете регулировать доступ к тем или иным командам меню с помощью поля проверки Skip For, находящегося в диалоговом окне Prompt Options. Если вы щелкнете на этом поле, появится уже знакомое вам окно Построителя выражения, в котором можно сформировать условие доступа к этой команде меню. Если условие будет равно .F., команда будет доступна, если .T. -недоступна. Наиболее часто эта возможность используется для регулирования доступа различных пользователей прикладной программы к тем или иным ее функциям. В связи с тем, что Visual FoxPro поддерживает редактирование на месте OLE-объектов, с помощью поля проверки Negotiate мы можем для меню верхнего уровня указать, где меню будет располагаться после активизации OLE-сервера. По умолчанию действует установка None - меню убирается при редактировании OLE-объекта. Для пояснения назначения той или иной команды меню с помощью поля проверки Message можно задать текст, который будет появляться в строке состояния. Для задания такого текста используется Построитель выражения. Если вы непосредственно набираете текст, не забудьте поместить его в кавычки. В окне Prompt Options осталось еще одно поле проверки - Pad Name, о котором можно было бы ничего и не говорить, если бы мы не использовали русские заголовки для меню. При проектировании меню Конструктор автоматически присваивает имена меню на основании их заголовков. В то же время Visual FoxPro, как и его предшественники, на дух не переносит русских названий в меню. Не будем раздражаться по столь мелкому поводу, щелкнем на поле проверки Pad Name и изменим русское название на латинское. Для выполнения каких-либо действий при выборе пользователем команд меню необходимо в колонке Result для каждой команды меню назначить команду Visual FoxPro, функцию или процедуру. Для назначения команды Visual FoxPro в столбце Result выберите пункт Command и наберите соответствующую команду в текстовом поле справа. Например, DO Log user. Если указанная в этой команде процедура находится в блоке Cleanup Конструктора меню (о нем мы расскажем чуть позднее), то команду следует записать в виде: DO Log user IN Main, где Main - Наиболее часто выполняемым командам в меню можно присвоить клавиатурные комбинации. Для этого напротив соответствующего заголовка необходимо щелкнуть мышкой на кнопке в колонке Options. На экране появится диалоговое окно Prompt Options, с помощью которого для меню можно задать дополнительные условия. Внешний вид этого окна с необходимыми комментариями приведен на рис. 9.17. Щелкнем на поле проверки Shortcut, появится диалоговое окно Key Definition. Нажмем нужное сочетание клавиш. Их обозначение появится в поле Key Label. Символы в поле Key Text будут написаны рядом с командой меню, их можно отредактировать. Командам меню принято присваивать клавиатурные комбинации, начинающиеся с клавиши Ctrl. В клавиатурных комбинациях Visual FoxPro использует скан-код клавиши, поэтому не имеет значения текущий регистр и не важно, включена ли русская или латинская раскладка клавиатуры. Если вы используете знаки \<< для меню верхнего уровня, Visual FoxPro автоматически поместит в поле Key Label сочетание клавиш Alt и выделенной этими знаками буквы. Если буква русская, при запуске меню произойдет ошибка. Поэтому надо открыть окно Key Definition и вручную в поле Key Label исправить русскую букву на соответствующую той же клавише латинскую. Поле для записи комментария программиста 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 [ 110 ] 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |