Анимация
JavaScript
|
Главная Библионтека 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 |