Программирование >>  Разработка пользовательского интерфейса 

1 ... 108 109 110 [ 111 ] 112 113 114 ... 147


для чтения и записи.

Выбрав клиента, необходимо выбрать и автомобиль для него. Для этого предназначена форма Наличие автомобилей, дата выпуска, цена , которая вызывается с помощью кнопки Выбор автомобиля . Используется метод OpenForm объекта DoCmd:

Private Sub cmbCAuto Click()

DoCmd.OpenForm Наличие автомобилей, дата выпуска, цена , acNormal End Sub

Форма Наличие автомобилей, дата выпуска, цена имеет установленное свойство RecordSource (Источник данных). Источником данных для этой формы служит запрос с одноименным названием. Для поиска автомобилей предназначены два комбинированных списка: с помощью первого вы отфильтровываете данные по названию производителя, а с помощью второго - по моделям. После этого из ограниченного списка данных вы легко выбираете автомобиль для вашего клиента. При этом используется замечательное свойство форм использовать фильтр и динамически менять его. Это становится ясно из следующего фрагмента кода. Как уже неоднократно отмечалось, с отфильтрованными данными Access работает значительно быстрее, особенно если вы их не изменяете, а просто просматриваете.

Private Sub name model AfterUpdate() If Len(Trim(name model)) >> 0 Then Me.FilterOn = False

Me.Filter = name model= & Chr(39) & Me!name model & Chr(39) &

and name firm= & Chr(39) & Me!name firm & Chr(39) Me.FilterOn = True

End If End Sub

После этого вы можете просмотреть подробную информацию о конкретной модели. Для чего вызывается еще одна форма, которая называется Подробно о модели , устанавливается она с отфильтрованными данными.

Private Sub Кнопка9 Click()

DoCmd.OpenForm Подробно о модели , acNormal, , [Name model]= & Chr(39) & Me![name model] & Chr(39), acReadOnly End Sub

После того как вы выберете автомобиль, подходящий вашему клиенту, можете передать управление форме Прием заказов . При этом начинается заполняться таблица Account. Но, как вы помните, все это происходит в рамках транзакции, поэтому изменения еще не окончательны.

Private Sub Кнопка8 Click() Dim FStr As String

FStr = name customer= & Chr(39) & Forms![Прием заказов].cmbCust & Chr(39) Set rstAc = mywksp.Databases(0).OpenRecordset( account , dbOpenDynaset) rstAc.AddNew

rstAc!key customer = DLookup( key customer , customer , FStr) rstAc!key auto = Me!key auto rstAc!date write = Now() rstAc.UPDATE

Forms![Прием заказов].cmbAc.Enabled = True DoCmd.Close acForm, Наличие автомобилей, дата выпуска, цена End Sub

После возврата в форму Прием заказов вы принимаете окончательное решение о продаже автомобиля. Пользователь имеет последнюю возможность отказаться. После нажатия на кнопку Оформление счета транзакция завершается.

mywksp.CommitTrans

rstOrd.Close

rstAc.Close



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.



1 ... 108 109 110 [ 111 ] 112 113 114 ... 147

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика