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

1 ... 117 118 119 [ 120 ] 121 122 123 ... 147


>> 3 = 0

IF ThisForm.nSubType ThisForm.nSubType

ENDIF

ThisForm.nSubType = ThisForm.nSubType + 1 ThisForm.OleChart.SubType = ThisForm.nSubType

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

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

RELEASE ThisForm

В завершение нам осталось включить в объект DataEnvironment формы таблицы, которые будем использовать в качестве источника данных для графика. Внешний вид формы приведен на рис. 10.7.

nRow = nRow + 1

ENDSCAN

ThisForm.LockScreen = .F.

Здесь мы использовали блокировку изменения данных в форме, чтобы предотвратить последовательное изменение данных в каждом столбце графика (первая и последняя строка фрагмента кода). После ссылки на объект oleChart необходимо использовать свойство Object для того, чтобы Visual FoxPro понял, что указанное далее свойство Parent относится к объекту Excel. В противном случае Visual FoxPro решит, что мы ссылаемся на объект Form - родительский объект для объекта oleChart. Свойство Parent для объекта Excel нам необходимо для того, чтобы сослаться на объект Workbook. Только после этого мы можем использовать метод Sheets для получения ссылки на рабочий лист Sheet1, на котором находятся данные. Метод Cells позволяет нам указать конкретную ячейку таблицы, в которой мы хотим поменять данные с помощью свойства Value. Значения Sum1, Sum2 и Sum3 - это поля в таблицах, которые используются как источники данных для построения графиков и отображают изменение какого-то показателя во времени.

Для отображения данных из первой таблицы при запуске формы в событии Init объекта Form следует поместить такой код:

ThisForm.cmbData.Value = ThisForm.cmbData.List(1,2) ThisForm.cmbData.InteractiveChange

Добавим в форму собственные свойства NType и nSubType для задания типа и подтипа выводимого графика. Для этого достаточно в меню Form выбрать команду New Property. По умолчанию присвоим им значения 3 и 1 соответственно.

В событии Click для объекта cmdType запишем следующий код:

IF ThisForm.nType >> 13 ThisForm.nType = 0

ENDIF

ThisForm.nType = ThisForm.nType + 1 ThisForm.OleChart.Type = ThisForm.nType

Это обеспечит приращение значения для типа графика при нажатии на кнопку Тип и сброс значения на начало отсчета при исчерпании числа типов графика. В событии Click для объекта cmdSubType запишем следующий код:



30 26 20 15 Ю

5 -И

□ Группа 1 Г-:уппэ 2

□ Jjjynna

И1н нени

данкыя для

Изменены вк(Ай

Ткп J


Рис. 10.7. Форма для представления графиков с помощью MS Excel 7.0

В современных условиях все больше специалистов могут самостоятельно использовать стандартные пакеты программ. Например, готовить графики и другую расчетную информацию с помощью пакета Excel. В этом случае достаточно только правильно импортировать данные из СУБД в Excel. Один из возможных способов представлен ниже. Он реализован в форме Характеристика модели автомобиля , разработка которой была описана в предыдущей главе.

Программный код для передачи данных в Microsoft Excel:

oleExcel=CREATEOBJECT( Excel.Application ) &&Создаем объект Excel oleExcel.Visible=.T. && Делаем его видимым oleExcel.Workbooks.Add && Добавляем Книгу oleExcel.Selection.ColumnWidth = 20 && Ширина 1 колонки oleExcel.Range( B1 ).Select

oleExcel.Selection.ColumnWidth = 12 && Ширина 2 колонки oleExcel.Range( C1 ).Select

oleExcel.Selection.ColumnWidth = 12 && Ширина 3 колонки oleExcel.Columns( A:A ).Select && Отмечаем 1 колонку oleExcel.Selection.WrapText = .T.

&& Перенос непоместившихся символов на следующую строку

oleExcel.Range( A1:C1 ).Select

oleExcel.Selection.HorizontalAlignment =7

&& Заголовок размещаем в 1, 2 и 3 ячейках первой строки

oleExcel.Range( A2:C2 ).Select

oleExcel.Selection.HorizontalAlignment = -4108

&& Центрируем 1, 2 и 3 ячейки второй

&& строки

oleExcel.Columns( A:B ).Select

oleExcel.Selection.Borders(2).Weight=2 && Линия справа oleExcel.Columns( A:C ).Select

oleExcel.Selection.Borders(3).Weight=2 && Нижняя линия oleExcel.Range( A2:C2 ).Select oleExcel.Selection.Borders(3).Weight=-4138 && Верхняя линия

oleExcel.Selection.Borders(4).Weight=-4138 && Нижняя линия oleExcel.Range( A1:C1 ).Select oleExcel.Selection.Font.Bold = .T. oleExcel.Selection.Font.ColorIndex = 25

oleExcel.ActiveCell.FormulaR1C1 = Характеристика модели автомобиля

oleExcel.Range( A2 ).Select

oleExcel.ActiveCell.FormulaR1C1 = Наименование модели oleExcel.Range( A2:C2 ).Select oleExcel.Selection.Font.Bold = .T.

oleExcel.Range( B2 ).Select



oleExcel.ActiveCell.FormulaR1C1 = Мощность oleExcel.Range( C2 ).Select

oleExcel.ActiveCell.FormulaR1C1 = Крутящий момент ******* Добавления значений ******* FOR I = 1 TO KOL Z

oleExcel.Cells(i+2,1).Value = all value(i,1) oleExcel.Cells(i+2,2).Value = all value(i,2) oleExcel.Cells(i+2,3).Value = all value(i,3) ENDFOR

******* Строим диаграмму ******* oleExcel.ActiveSheet.ChartObjects.Add(245, 10, 340, 270).Select oleExcel.ActiveChart.;

chartwizard(oleExcel.range(oleExcel.cells(2,1),oleExcel.cells(12,3)),;

-4100,5,1,1,1,2, Десять лучших , , , )

&& Где:

&& Gallery - -4100,

&& Format - 5,

&& PlotBy - 1,

&& CategoryLabels - 1,

&& SeriesLabels - 1,

&& HasLegend - 2,

&& Title - Десять лучших ,

&& CategoryTitle - ,

&& ValueTitle - ,

&& ExtraTitle - ******* Изменяем угол просмотра ******* oleExcel.ActiveChart.Elevation = 0 oleExcel.ActiveChart.Rotation = 328

Результат выполнения данного кода представлен на рис. 10.8.

я Ёадм Фщдаг Снушл Д м 2

Lsv-I

i авттшЕии

ИРМ пи

HfliiHcuib

Turin

г, \..- -ri

J !:> 11;

з :-.:: :i

11 :: CpJC

t?;L?№ 4.0

1J:li.

1 i: f.-h 1с; jKer Jj6

1ь.14

i; ; :<iwnV1i:tiitna 1£

и;:(В!Л


J> 14Мт н>и flurrtuubJ щмшнп A HUM

Рис. 10.8.

Построение отчета в Word for Windows

Чрезвычайно популярным пакетом для подготовки текстовой информации в нашей стране является текстовый процессор Word for Windows. Поэтому вполне объяснимо желание пользователя увидеть нужные ему данные в любимом редакторе и самостоятельно преобразовать



1 ... 117 118 119 [ 120 ] 121 122 123 ... 147

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