|
Программирование >> Разработка пользовательского интерфейса
>> 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
J> 14Мт н>и flurrtuubJ щмшнп A HUM Рис. 10.8. -Г Построение отчета в Word for Windows Чрезвычайно популярным пакетом для подготовки текстовой информации в нашей стране является текстовый процессор Word for Windows. Поэтому вполне объяснимо желание пользователя увидеть нужные ему данные в любимом редакторе и самостоятельно преобразовать
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |