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

1 ... 106 107 108 [ 109 ] 110 111 112 ... 147


ЯП В

Тй л в Ш\сл\Н й

fmfc

jH(ei oJajHl

lH *lf*rl

\ll лm


JMtiOiHJiTibtB J...T.i.wi.i0.eJrJ!!

OcsbD Eiiri IDdaiit]

h lha пати иж1 to idHonc- an Ejbpd n

lill; H .2* ЛИ) K> I i

Рис. 9.10.

В форме LISTAUTO мы используем данные из представления lauto view, и одним из возможных вариантов решения задачи является включение представления lauto view в окружение формы (Data Environment) вышеизложенным способом. И этот вариант был бы не худшим. Однако мы в своем примере поступаем по-другому. А именно, включаем в событие, имеющее место непосредственно перед созданием формы (Form.Load), запрос к представлению lauto view с выборкой данных по текущей модели, поместив результат запроса в курсор lauto. Подобный вариант приемлем только для просмотра данных. Дело в том, что данные в курсоре редактированию не подлежат.

В событие Load формы запишем следующий код:

SELECT lauto view.date issue, lauto view.cost, FROM lauto view ;

WHERE lauto view.key model=glkey mod ;

INTO CURSOR lauto

; lauto view.selled ;

Далее, посредством панели инструментов Form Controls, в форму LISTAUTO включаем объект таблицу (Grid).

В свойство источника данных (RecordSource), к которому привязан элемент управления Grid, помещаем имя курсора - lauto. После чего форму уже можно запускать на выполнение. И результат будет положительным. Хотя мы думаем, наш читатель вряд ли из тех, кого удовлетворит подобный результат. Дело в том, что заголовки колонок примут значения наименований полей курсора, элемент управления для отображения значений во всех колонках будет текстовым, что не всегда удобно, и т. д.

Поэтому мы несколько усовершенствуем данную форму.

На вкладке Layout для элемента управления Grid задаем количество объектов Column (свойство ColumnCount = 3), ликвидируем отображение столбца маркеров удаления (свойство DeleteMark = .F.), задаем тип полос прокрутки (свойство ScrollBars = 2 - только вертикальная полоса), задаем высоту заголовков столбцов (свойство HeaderHeight = 25) и высоту строк в элементе управления Grid (свойство RowHeight = 25).

На вкладке Data для каждой колонки таблицы Grid.Column задаем источник данных, к которому привязывается объект:

Grid.Column1.ControlSours=lauto.date issue

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



Grid.Column2.ControlSours=lauto.cost Grid.Column3.ControlSours=lauto.selled

Для третьей колонки указываем элемент управления в объекте Column - CurrentControl = CheckBox, который будет использоваться для отображения значений активной ячейки. Предварительно поместив его посредством перетаскивания элемента CheckBox из панели управления Form Control в колонку таблицы. Для этой же колонки позволяем свойству CurrentControl распространяться на все ячейки объекта Column (свойство Sparse = .F.).

На вкладке Layout для каждого заголовка колонки таблицы Grid.Column.Header, задаем текст (свойство Grid.Column1.Caption = Дата выпуска, Grid.Column2.Caption = Стоимость, Grid.Column3.Caption = Продажа), а вид выравнивания текста задаем по центру (свойство Alignment = 2).

После чего наша форма LISTAUTO будет иметь вид, показанный на рис. 9.11.

MlcidsdEt Visual FoxPro 5-D

File Edit View Foгmat lools Program Window Help

%JMBBQ!a( iaHiJ.pl©a

Form Designer - listauto.scx

Список автомобилей

Модель

Дата выпуска

Стоиглбсть

: - г.-

>

Рис. 9.11. Форма Список автомобилей в Конструкторе формы

Форма PROP MOD (Характеристика модели автомобиля).

В форме PROP MOD мы используем данные из представления propmodel view, предварительно включив в событие, имеющее место непосредственно перед созданием формы (Form.Load), запрос к данному представлению с выборкой данных по текущей модели и поместив результат запроса в курсор propmodel.

В событие Load Формы запишем следующий код:

SELECT * FROM propmodel view ;

WHERE propmodel view.key model=glkey mod

INTO CURSOR propmodel

Далее с помощью панели инструментов Form Controls в форму PROP MOD последовательно включаем объекты TextBox для всех полей курсора propmodel. Для каждого из них задаем источник данных (свойство ControlSours = <<имя курсора.имя поля>>). На рис. 9.12. показана форма PROP MOD.



у >ГлрйКТС]НС1Ш1-а МЦДСЛН-BBTDHETfitUin

Г<нт niinlinlJ 1


iJ l

Рис. 9.12. Форма Характеристика модели автомобиля в Конструкторе формы

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

Изменять порядок следования полей можно двумя способами: интерактивно (Interactive) и с помощью списка (By List). Требуемый метод выбирается во вкладке Forms в раскрывающемся списке Tab Ordering диалогового окна Options (см. рис. 9.5).

Если установлен метод интерактивного изменения порядка активизации полей в форме, то при выборе команды Tab Order из меню View главного меню Visual FoxPro в верхнем левом углу каждого объекта появится его порядковый номер (рис. 9.13).

№ t №н FvMI Fend I * йчп ntow №

DJtfHaj;:l>!::[.-l:-i


Нп4>1 С ):!

Модели зепЮобийя

St 15

W*rll

J 5*Ы I

Font [rurml 3 Рц Г

IHUH

Рис. 9.13. Интерактивный метод изменения порядка активизации объектов в форме



1 ... 106 107 108 [ 109 ] 110 111 112 ... 147

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