|
Программирование >> Разработка пользовательского интерфейса
\Ц1упа ф>ид Tri±mjMil Нпиер заказа: pj L[?rAI]TO: Click! ТВОТ ЫСЩ kapaWepHcmisi модели автомобиля: Cn ic:DK а?т11маБнл?й Клиент: J]rat Модель: Тпк1 CULk: CliLk CLLtik Click FIND ODD CHLt I Clicfe:
С*<ьатп Рис. 9.9. Отношения между объектами, событиями и методами в разрабатываемой форме Код для события Load формы: && В администраторе ODBC необходимо иметь соединение auto к БД Auto store OPEN DATABASE Auto store EXCLUSIVE CREATE CONNECTION remote 01 DATASOURCE auto DO CASE CASE LevDostup=1 = DBSETPROP(remote 01, CONNECTION, ConnectString, ; DSN=auto;UID=login lev1;PWD=lev1) CASE LevDostup=2 =DBSETPROP(remote 01, CONNECTION, ConnectString, ; DSN=auto;UID=login lev2;PWD=lev2) CASE LevDostup=3 =DBSETPROP(remote 01, CONNECTION, ConnectString, ; DSN=auto;UID=login lev3;PWD=lev3) CASE LevDostup=4 =DBSETPROP(remote 01, CONNECTION, ConnectString, ; DSN=auto;UID=login lev4;PWD=lev4) CASE LevDostup=5 =DBSETPROP(remote 01, CONNECTION, ConnectString, ; DSN=auto;UID=login lev5;PWD=lev5) ENDCASE && Создаем просмотры a v=ADBOBJECTS(a view, VIEW) IF a v>>0 prm=ASCAN(a view, propmodel view) lau=ASCAN(a view, lauto view) smn=ASCAN(a view, sman view) cus=ASCAN(a view, cust view) mod=ASCAN(a view, model view) ord=ASCAN(a view, order view) ENDIF IF prm=0 CREATE SQL VIEW propmodel view CONNECTION remote 01 SHARE ; AS SELECT model.key model, model.name model, model.swept volume, ; model.quantity drum, model.capacity, model.torgue, model.top speed, model.starting, ; model.quantity door, model.quantity sead, model.length, model.width, ; model.height, model.expense 90, model.expense 120, model.expense town, ; firm.name firm, country.name country,fuel oil.name fuel oil, ; tyre.name tyre, body.name body ; FROM model ,firm, country, fuel oil, tyre, body ; WHERE model.key firm=firm.key firm ; AND firm.key country=country.key country ; AND model.key fuel oil=fuel oil.key fuel oil ; AND model.key tyre=tyre.key tyre ; AND model.key body=body.key body ENDIF IF lau=0 CREATE SQL VIEW lauto view CONNECTION remote 01 SHARE ; AS SELECT automobile passenger car.key model, automobile passenger car.date issue, ; automobile passenger car.cost, account.selled ; FROM automobile passenger car, account ; WHERE automobile passenger car.key auto=account.key auto ENDIF IF smn=0 CREATE SQL VIEW sman view CONNECTION remote 01 SHARE ; AS SELECT salesman.key salman, ; salesman.last name+ +salesman.first name+ +salesman.patronymic as sman ; FROM salesman ENDIF SELECT * FROM sman view INTO ARRAY Arcombo1 IF cus=0 CREATE SQL VIEW cust view CONNECTION remote 01 SHARE ; AS SELECT customer.key customer, customer.name customer ; FROM customer ENDIF SELECT * FROM cust view INTO ARRAY Arcombo2 IF mod=0 CREATE SQL VIEW model view CONNECTION remote 01 SHARE ; AS SELECT model.key model, model.name model ; FROM model ENDIF SELECT * FROM model view INTO ARRAY Arcombo3 IF ord=0 CREATE SQL VIEW order view CONNECTION remote 01 SHARE ; AS SELECT order .key order, order .key salman, order .key customer, order .key model ; FROM order && Устанавливаем таблицу order обновляемой =DBSETPROP(order view, View, Tables, order ) && Устанавливаем имена для обновления = DBSETPROP(order view.key order, Field, UpdateName, order .key order) =DBSETPROP(order view.key salman, Field, UpdateName, order .key salman) =DBSETPROP(order view.key customer, Field, UpdateName, order .key customer) = DBSETPROP(order view.key model, Field, UpdateName, order .key model) && Задаем простой уникальный ключ на основе одного поля таблицы Order = DBSETPROP(order view.key order, Field, KeyField, .T.) && Задаем обновляемые поля = DBSETPROP(order view.key salman, Field, Updatable, .T.) = DBSETPROP(order view.key customer, Field, Updatable, .T.) = DBSETPROP(order view.key model, Field, Updatable, .T.) && Активизация процесса обновления = DBSETPROP(order view, View, SendUpdates, .T.) && Задаем сравнение временной метки всех полей записи, && расположенной на удаленном источнике данных =DBSETPROP(order view, View, WhereType, 4) ENDIF USE order view =CURSORSETPROP( Buffering , 5) Код для события Unload формы: CLOSE DATABASES ALL CLOSE TABLES ALL Добавим в форму метод Combo init и запишем для него следующий код: nnAddItem= ThisForm.Combo +ALLT(cNum)+ .AddItem nnArn= Arcombo +ALLT(cNum) FOR I=1 TO ALEN(&nnArn,1) &nnAddItem(allt(&nnArn(i,2))) ENDFOR Добавим в форму метод Refresh list и запишем для него следующий код: ThisForm.Combo1.Value=((ASCAN(Arcombo1,order view.key salman))+1)/2 ThisForm.Combo2.Value=((ASCAN(Arcombo2,order view.key customer))+1)/2 ThisForm.Combo3.Value=((ASCAN(Arcombo3,order view.key model))+1)/2 Добавим в форму метод Show sav und и запишем для него следующий код: MyUpdate=1 ThisForm.mygo1.Com8.Enabled = .T. ThisForm.mygo1.Com9.Enabled = .T. Для события Click кнопки Propmodel (характеристика модели автомобиля) запишем следующий код: glkey mod=order view.key model DO FORM prop mod.scx Для события Click кнопки Lauto (список автомобилей) запишем следующий код: glkey mod=order view.key model glname mod=ALLT(Arcombo3(ThisForm.Combo3.Value,2)) DO FORM listauto.scx Для события Init всех элементов управления типа Combo Box (Combo1, Combo2 и Combo3) запишем следующий код: cNum=RIGHT(This.Name,1) ThisForm.combo init Для события InteractiveChange элемента управления Combo1 запишем следующий код: REPLACE order view.key salman WITH Arcombo1(ThisForm.Combo1.Value,1) ThisForm.Text2.Refresh ThisForm.Show sav und Для события InteractiveChange элемента управления Combo2 запишем следующий код: REPLACE order view.key customer WITH Arcombo2(ThisForm.Combo2.Value,1) ThisForm.Text3.Refresh ThisForm.Show sav und Для события InteractiveChange элемента управления Combo3 запишем следующий код: REPLACE order view.key model WITH Arcombo3(ThisForm.Combo3.Value,1) ThisForm.Text4. Refres h ThisForm.Show sav und Как видно из кода события Click кнопки lauto, сначала мы определяем значения кода (glkey mod) и наименования (glname mod) выбранной модели для дальнейшей выборки списка автомобилей по данной модели. После чего запускаем форму LISTAUTO (Список автомобилей). Похожая ситуация и с событием Click кнопки propmodel, где мы определяем значение кода (glkey mod) модели и запускаем форму PROP MOD (Характеристика модели автомобиля). Кратко опишем вызываемые формы. Форма LISTAUTO (Список автомобилей). Некоторые формы используют данные из одной или нескольких таблиц. Для включения требуемых таблиц в описание формы выберите команду Data Environment из меню View главного меню Visual FoxPro. Откроется окно Data Environment, напоминающее область просмотра таблиц Конструктора базы данных. Для добавления таблицы следует выбрать команду Add в меню Data Environment, которое добавляется в главное меню Visual FoxPro, или в контекстном меню, появляющемся при нажатии правой кнопки мыши. После этого выберите требуемую таблицу из диалогового окна Add Table or View. Обратите внимание, что можно либо использовать несколько таблиц и определять отношения между ними в самой форме, либо использовать готовые многотабличные представления данных. Для установления отношения между двумя таблицами нажмите на имя поля в главной таблице
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |