Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 [ 117 ] 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146

Series

Series-Lines

HasDataLabel, Interior,

InvertIfNegative,

MarkerBackgroundColor,

MarkerBackgroundColorIndex,

MarkerForegroundColor,

MarkerForegroundColorIndex,

MarkerStyle, PictureType,

PictureUnit

AxisGroup, Border, ErrorBars, Explosion, HasDataLabels, HasErrorBars

ClearFormats, Copy, Delete

Border, Name

TickLabels Font, Name, NumberFormat, Orientation

TrendLine Backward, Border, DataLabel, DisplayEquation, DisplayRSquared, Forward, Index, Intercept, InterceptIsAuto, Name, NameIsAuto, Order, Period,

Type

UpBars Border, Interior, Name Walls Border, Interior, Name

Interior, InvertIfNegative, MarkerBackgroundColor, MarkerBackgroundColorIndex, MarkerForegroundColor, MarkerForegroundColorIndex, MarkerStyle, PictureType, PictureUnit, Smooth, Type, ApplyDataLabels, ClearFormats, Copy, DataLabels, Delete, ErrorBar, Points, Trendlines

Delete Delete

Clear Formats, Delete

Delete

ClearFormats

Построение графиков с помощью MS Graph 5.0

Возможности отображения данных с помощью MS Graph 5.0 рассмотрим на примере построения формы в Visual FoxPro, в которой пользователь мог бы анализировать изменение данных с помощью графиков различного типа. Внешний вид такой формы приведен на рис. 10.6. Форма включает внедренный объект MS Graph 5.0 для отображения графика, раскрывающийся список для изменения отображаемых данных, раскрывающийся список и две кнопки выбора для изменения типа графика, кнопку управления для закрытия формы и элементы внешнего оформления.



Выписано no сч«та№


Длрвпь

Нипь

Рис. 10.6.

Для создания этой формы предварительно нам придется создать вспомогательную таблицу для хранения внедренного объекта MS Graph (графика). В этой же таблице (ее структура приведена в табл. 10.5) удобно хранить и дополнительную информацию о заголовках, а также сам запрос для получения наиболее "свежих" данных. Создать ее можно интерактивно с помощью Конструктора таблицы и информации, приведенной в табл. 10.5, или, что будет быстрее, с помощью следующих команд:

CREATE TABLE Graphs (title C(25), number I, query M, y number I,;

y1 caption C(25), y2 caption C(25), graph G) APPEND BLANK

APPEND GENERAL graph CLASS "MSGraph"

Таблица 10.5. Структура таблицы GRAPHS.DBF для хранения внедренного графика

Поле

TITLE NUMBER QUERY Y NUMBER

Character Integer Memo Integer

Y1 CAPTION Character Y2 CAPTION Character GRAPH General

Ширина

4 4 4

25 25 4

Назначение поля

Заголовок графика Номер графика Команда SQL запроса Число осей Y Заголовок первой оси

Заголовок второй оси

График в виде внедренного объекта

MS Graph 5.0

В созданную таблицу запишите необходимые данные. Обратите внимание, что число символов в SQL запросе, записываемом в поле Query, не должно превышать 256 и он должен быть записан в одну строку. Для того чтобы уложиться в это число, не стоит пренебрегать никакими способами сокращения длины команды, в том числе полезно вспомнить о возможности использования внутренних псевдонимов, как это показано в следующем примере (здесь сознательно не используется символ переноса строк):

SELECT m.month name,SUM(d.Price*d.quantity),m.month numb

FROM Months m,Invoices i,Inv Details d WHERE i.kod id = d.kod id AND

MONTH(i.inv date) = m.month numb GROUP BY m.month name ORDER BY m.month numb

INTO CURSOR Datafile

Для временного хранения результата запроса мы используем курсор с именем Datafile. Теперь откроем Конструктор формы и разместим в новой форме объект OLE Bound Control.



RowSourceType = 5 - массив; RowSource = aType - имя массива;

BoundColumn = 2 - значение свойства Value определяется по второй колонке массива.

В коде события Init объекта cmbType для первоначального выбора первого типа графика запишем:

This.Value = 1

В коде события InteractiveChange для объекта cmbType предусмотрим выполнение пользовательского метода:

Присвоим ему имя olbGraph. В Data Environment формы добавим только что созданную таблицу и для свойства ControlSource объекта olbGraph выберем поле graph. В коде события Init обновим данные для отображаемого графика:

ThisForm.LockScreen = .T. SELECT Graphs

GO TOP cCom = Query

cCom =LEFT(cCom, LEN(cCom) - 2)

* Выполняем запрос, записанный в поле примечаний Query &cCom

ThisForm.RefreshGraph ThisForm.ChangeGraphType ThisForm.LockScreen = .F.

В коде для события Load формы опишем массив aType возможных типов графиков. В дальнейшем этот массив будет источником данных для списка типов графиков:

PUBLIC ARRAY aType[4,2] aType[1,1] = "С областями" aType[2,1] = "Гистограмма" aType[3,1] = "График"

aType[4,1] = "Круговая"

aType[1,2] = 1 aType[2,2] = 3 aType[3,2] = 4 aType[4,2] = 5

Тогда в событии Destroy формы не забудем стереть этот массив:

RELEASE aType

Для отображения названий графиков создадим раскрывающийся список с именем cmbData. Присвоим ему следующие значения свойств: RowSourceType = 2 - псевдоним; RowSource = Graphs.title

В коде события Init для объекта cmbData запишем: This.Value = Graphs.Title

В коде события InteractiveChange для объекта cmbData: LOCAL cData, cCom ThisForm.LockScreen = .T. cData = This.Value SELECT Graphs LOCATE FOR Title = cData

cCom = Query

cCom =LEFT(cCom, LEN(cCom) - 2)

&cCom

ThisForm.RefreshGraph ThisForm.ChangeGraphType

ThisForm.olbGraph.Object.ChartTitle.Caption = cData ThisForm.LockScreen = .F.

Для выбора типа графика разместим в форме раскрывающийся список с именем cmbType. Присвоим ему следующие значения свойств:



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 [ 117 ] 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146