|
Программирование >> Разработка пользовательского интерфейса
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. Интерактивный метод изменения порядка активизации объектов в форме
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |