Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лабы / gorev_akhajan_makakshiripov_ehffektivnaja_rabota_s_subd

.pdf
Скачиваний:
52
Добавлен:
26.04.2015
Размер:
3.17 Mб
Скачать

рабочая книга открывается в ней. При этом будет получена ошибка, если указанное в функции имя файла совпадет с уже открытым файлом в загруженной копии Excel. Если параметр FileName задан в виде пустой строки ("") и если не существует запущенной копии Microsoft Excel, то запускается невидимая ее копия и создается рабочая книга с именем "Object" и один рабочий лист с именем "Sheet1". Если параметр FileName задан в виде пустой строки ("") и если хотя бы одна копия Microsoft Excel

загружена в память, то в одной из них открывается рабочая книга, как это было описано выше. Если параметр FileName не указан, всегда генерируется ошибка.

Как вы можете заметить, изучив табл. 10.2, создание объектов OLE Automation или обращение к ним в Microsoft Excel зачастую может привести к совершенно различным последствиям. Почти всегда Excel создает невидимую копию приложения. Для того чтобы сделать ее видимой для пользователя, надо присвоить свойству Visible объекта Application значение "истина":

...Application.Visible = .T.

Если создается невидимая копия рабочей книги, то сделать ее видимой можно, присвоив значение "истина" свойству Visible окна:

...Window(n).Visible = .T.

В некоторых случаях Excel при запуске посредством OLE Automation не открывает новый файл. Тогда это придется сделать с помощью метода Add коллекции Workbooks:

...Workbooks.Add

Для завершения обсуждения проблем, связанных с объектами верхнего уровня Microsoft Excel, приведем несколько примеров.

Объект Application

oApp = CREATEOBJECT("EXCEL.APPLICATION") oApp = GETOBJECT(" ","EXCEL.APPLICATION")

Любая из этих строк приведет к запуску новой копии Excel в скрытом виде.

oApp = GETOBJECT(,"EXCEL.APPLICATION")

Обеспечит ссылку на текущее приложение Excel. Если же Excel на компьютере не запущен, будет сгенерировано сообщение об ошибке.

Объект Sheet

oExSheet = CREATEOBJECT("EXCEL.SHEET") FOR nVal = 1 TO 10

oExlSheet.Cells(nVal, nVal).Value = nVal * nVal

Ⱦɚɧɧɚɹ ɜɟɪɫɢɹ ɤɧɢɝɢ ɜɵɩɭɳɟɧɚ ɷɥɟɤɬɪɨɧɧɵɦ ɢɡɞɚɬɟɥɶɫɬɜɨɦ %RRNV VKRS Ɋɚɫɩɪɨɫɬɪɚɧɟɧɢɟ ɩɪɨɞɚɠɚ ɩɟɪɟɡɚɩɢɫɶ ɞɚɧɧɨɣ ɤɧɢɝɢ ɢɥɢ ɟɟ ɱɚɫɬɟɣ ɁȺɉɊȿɓȿɇɕ Ɉ ɜɫɟɯ ɧɚɪɭɲɟɧɢɹɯ ɩɪɨɫɶɛɚ ɫɨɨɛɳɚɬɶ ɩɨ ɚɞɪɟɫɭ piracy@books-shop.com

ENDFOR

*Если хотите увидеть результат, уберите комментарий в следующий строке

*oExlSheet.Application.Visible = .T.

oExlSheet.SaveAs("TEMP.XLS")

Создает новый рабочий лист в запускаемой невидимой копии Excel и заполняет его цифрами так, как это показано на рис. 10.4. Созданная таблица сохраняется в файле TEMP.XLS в папке, установленной по умолчанию для Excel.

Рис. 10.4. oExlSheet = GETOBJECT("RAS_1.XLS", "EXCEL.SHEET") oExlSheet.Range("G2").Value = 16 oExlSheet.Range("G3").Value = 10 oExlSheet.Parent.Save && Сохраняем рабочую книгу

? oExlSheet.Range("G4").Value

Создает ссылку на первый рабочий лист в файле RAS_1.XLS. Файл в данном случае должен располагаться в папке, указанной по умолчанию для приложения, использующего OLE Automation, иначе необходимо указать путь к нему. В этот файл, содержащий результаты расчетов, мы заносим новые данные в ячейки G2 и G3, сохраняем данные, а затем выводим результат вычислений из ячейки G4, где записана формула, вычитающая G3 из G2.

Объект Chart

oExlChart = CREATEOBJECT("EXCEL.CHART")

* Стираем данные по умолчанию на рабочем листе со значениями oExlChart.Parent.Sheets(2).Range("A1:D10").Clear

FOR nVal = 1 TO 10

* Заполняем таблицу новыми значениями oExlChart.Parent.Sheets(2).Cells(nVal,1).Value = nVal oExlChart.Parent.Sheets(2).Cells(nVal,2).Value = nVal * nVal

NEXT

*Строим график по новым значениям по колонкам oExlChart.ChartWizard(oExlChart.Parent.Sheets(2).Range("A1:B10"),,,2)

*Смотрим, что получилось

oExlChart.Application.Visible = .T. WAIT

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

www.books-shop.com

используем команду WAIT для того, чтобы рабочая книга не была выгружена после завершения работы программы.

oExlChart = GETOBJECT("RAS_1.XLS", "EXCEL.CHART") oExlChart.ChartTitle.Text = "Результаты продаж"

Создает ссылку на первый рабочий лист с диаграммой в файле RAS_1.XLS. В файле должен быть предварительно создан объект Chart с помощью команды Chart в меню Insert.

Управление объектами Word for Windows

При работе с объектами Word for Windows функция CREATEOBJECT() запускает новую копию приложения только в том случае, если на компьютере это приложение еще не работает. При этом функция GETOBJECT() не может использоваться для ссылки на документ. Если она используется в виде

oWrd = GETOBJECT(" ","WORD.BASIC")

то ее применение аналогично функции CREATEOBJECT().

Задание функции в виде

oWrd = GETOBJECT(,"WORD.BASIC")

всегда приводит к ошибке.

В отличие от Excel текстовый процессор Word for Windows имеет только один объект OLE Automation - WordBasic (в синтаксисе мы пишем Word.Basic). Это означает, что управлять документом Word из другого приложения мы можем только посредством выполнения команд

WordBasic.

Для того чтобы продемонстрировать пример создания объекта Word, решим классическую для любого начинающего программиста задачу - выведем на экран слово "Hello!" В связи с тем, что читатель одиннадцатой главы этой внушительной по объему книги вряд ли захочет относить себя к начинающим программистам, усложним задачу. Загрузим на компьютере Word и Access. Теперь, находясь в Access, напишем заветное слово в документе Word.

Для решения этой задачи в контейнере БД Access перейдем на вкладку Модули. На панели инструментов нажмем кнопку Вставить процедуру. В появившемся диалоговом окне напишем ее название, например CallWord. В окне Модуль напишем следующий код:

Public Function CallWord() As Integer Dim oWbApp As Object

Set oWbApp = CreateObject("Word.Basic") oWbApp.FileNew ` Открываем новый документ oWbApp.Insert "Hello!" ` Вписываем в документ слово

Set oWbApp = Nothing Exit Function

End Function

Запустите этот модуль на выполнение. Напоминаем простейший способ сделать это - нажмите кнопку на панели инструментов Окно отладки и в появившемся окне наберите имя процедуры, после чего нажмите клавишу Enter. Смело переходите в Word и рассматривайте появившееся там слово.

Если вас испугало многообразие объектов в Excel и вы уже обрадовались наличию в Word всего одного объекта, то, возможно, ваша радость преждевременна. При управлении документом Word с помощью OLE Automation есть одна существенная для программиста неприятность.

Команды WordBasic используют поименованные аргументы, а посредством OLE Automation ссылаться на аргументы можно только по их положению. Например, вы хотите отключить вывод предупреждения при сохранении документа. В файле контекстной справки WordBasic вам будет подсказан следующий синтаксис команды ToolsOptionsSave

ToolsOptionsSave [.CreateBackup = number] [, .FastSaves = number] [, .SummaryPrompt = number]

В макросе Word вы, соответственно, можете написать: ToolsOptionsSave .SummaryPrompt = False

Для того чтобы выполнить эту команду из OLE-контроллера, необходимо знать порядковый номер этого аргумента в команде:

www.books-shop.com

oWbApp.ToolsOptionsSave , , 0

10.3. Использование OLE Automation для передачи данных

Впрактике создания систем автоматизации обработки данных программисту очень часто приходится сталкиваться с задачей графического представления данных. В комплекте со всеми средствами разработки Microsoft поставляется специальная утилита Microsoft Graph 5.0, которая как нельзя лучше подходит для этих целей.

Вэтом параграфе мы расскажем, как в пользовательском приложении можно использовать Microsoft Graph 5.0, а также остановимся на основных возможностях графического представления данных, которые предоставляет Microsoft Excel.

С помощью Microsoft Graph 5.0 мы можем легко встроить в форму в виде OLE-объекта графики самого разнообразного вида, которые помогут пользователю лучше разобраться с тенденциями изменения интересующих его показателей. MS Graph 5.0 имеет интуитивно понятный интерфейс, разобраться с которым в крайнем случае поможет обширная справочная информация. Но если мы не хотим заставлять пользователя нашей прикладной программы изучать еще и англоязычный интерфейс MS Graph, нам придется позаботиться об управлении процессом графического представления данных из программы с помощью средств OLE Automation. В связи с актуальностью этого вопроса остановимся на нем возможно подробнее.

На рис. 10.5 представлена иерархическая схема объектов MS Graph 5.0, а в табл. 10.3 - их краткое описание.

Таблица 10.3. Описание объектов MS Graph 5.0

Объект Описание

Application Содержит установки в целом для приложения

Axis Горизонтальные или вертикальные оси графика

AxisTitle Заголовок одной из осей графика

Border Рамка

Chart График

ChartArea Область графика, которая простирается и за внешние границы области, в которой вычерчивается график (поля, заголовки осей, описания данных и т. д.)

ChartGroup Группа серий данных, представленных в виде одного графика. Простейший график содержит один объект ChartGroup

ChartTitle Заголовок графика

DataLabel Дополнительное описание для графика одной серии данных (может иметь отношение ко всей серии или к одной точке)

DownBars Прямоугольник, который на линейном графике соединяет значение одной серии данных с более низким значением другой серии данных

DropLines Вертикальные линии, соединяющие точки графика со значениями на оси Y

ErrorBars Линии, графически отображающие ошибку расчета значения в графиках X-Y

Floor Координатная поверхность, служащая основанием для трехмерного графика

Font Шрифт

GridLines Линии координатной сетки

HiLoLines Вертикальные линии, которые соединяют максимальное и минимальное значения для различных серий данных

Interior Графическое оформление (фон, тень и т.

д.)

www.books-shop.com

Legend Описание серии данных для графика

LegendEntry Наименование серии данных, которое берется из колонки с данными и может быть изменено только на листе с данными

LegendKey Обозначения для серии данных

PlotArea Область непосредственного расположения графика

Point Точка в серии данных Series Серия данных

SeriesLines Линия для обозначения серии данных TickLabels Значения для засечек на оси графика TrendLine Линия тренда

UpBars Прямоугольник, который на линейном графике соединяет значение одной серии данных с более высоким значением другой серии данных

Walls Боковые координатные поверхности для трехмерных графиков

Перечисленные 27 объектов позволяют достаточно гибко программировать внешний вид графиков, предоставляя доступные для них свойства и методы, список которых приведен в табл. 10.4. Все объекты имеют свойства Application (возвращает имя приложения, создавшего объект), Creator (возвращает идентификатор приложения, создавшего объект - для Apple Macintosh) и Parent (возвращает имя родительского объекта), поэтому они не указаны в таблице.

Таблица 10.4. Свойства и методы объектов MS Graph 5.0

Объект

Свойства

Методы

Application ChartWizardDisplay, HasLink,

SaveAsOldExcelFile-Format

 

Name, Visible, Chart, Quit

 

Axis

AxisBetweenCategories,

Delete

 

AxisGroup, AxisTitle, Border,

 

 

Crosses, CrossesAt,

 

 

HasMajorGridlines,

 

 

HasMinorGridlines, HasTitle,

 

 

MajorGridlines,

 

 

MajorTickMark, MajorUnit,

 

 

MajorUnitIsAuto,

 

 

MaximumScale,

 

 

MaximumScaleIsAuto,

 

 

MinimumScale,

 

 

MinimumScaleIsAuto,

 

 

MinorGridlines,

 

 

MinorTickMark, MinorUnit,

 

 

MinorUnitIsAuto,

 

 

ReversePlotOrder, ScaleType,

 

 

TickLabelPosition, TickLabels,

 

 

TickLabelSpacing,

 

 

TickMarkSpacing, Type

 

AxisTitle

Border, Caption, Font,

Delete

 

HorizontalAlignment, Interior,

 

 

Left, Name, Orientation,

 

 

Shadow, Text, Top,

 

 

VerticalAlignment

 

Border

Color, ColorIndex, LineStyle,

-

 

Weight

 

Chart

Area3DGroup, AutoScaling,

BarGroups, ChartGroups,

 

Bar3DGroup, ChartArea,

ChartWizard, ColumnGroups,

 

ChartTitle, Column3DGroup,

Delete, DoughnutGroups,

 

Corners, DepthPercent,

LineGroups, OmitBackground,

 

DisplayBlanksAs, Elevation,

PieGroups, RadarGroups,

www.books-shop.com

 

Floor, GapDepth, HasAxis,

SeriesCollection, SetEchoOn,

 

HasLegend, HasTitle,

XYGroups

 

HeightPercent, Legend,

 

 

Line3DGroup, Perspective,

 

 

Pie3DGroup, PlotArea,

 

 

PlotVisibleOnly,

 

 

RightAngleAxes, Rotation,

 

 

SizeWithWindow, SubType,

 

 

SurfaceGroup, Type, Walls,

 

 

WallsAndGridlines2D,

 

 

ApplyDataLabels,

 

 

AreaGroups, AutoFormat,

 

 

Axes

 

ChartArea Border, Font, Height, Interior, Clear, ClearContents,

 

Left, Name, Shadow, Top,

ClearFormats, Copy

 

Width

 

Chart-

AxisGroup,

SeriesCollection

Group

DoughnutHoleSize,

 

 

DownBars, DropLines,

 

 

FirstSliceAngle, GapWidth,

 

 

HasDropLines, HasHiLoLines,

 

 

HasRadarAxisLabels,

 

 

HasSeriesLines,

 

 

HasUpDownBars, HiLoLines,

 

 

Overlap, RadarAxisLabels,

 

 

SeriesLines, SubType, Type,

 

 

UpBars, VaryByCategories

 

ChartTitle

Border, Caption, Font,

Delete

 

HorizontalAlignment, Interior,

 

 

Left, Name, Orientation,

 

 

Shadow, Text, Top,

 

 

VerticalAlignment

 

DataLabel AutoText, Border, Caption,

Delete

 

Font, HorizontalAlignment,

 

 

Interior, Left, Name,

 

 

NumberFormat, Orientation,

 

 

Shadow, ShowLegendKey,

 

 

Text, Top, Type,

 

 

VerticalAlignment

 

DownBars Border, Interior, Name

Delete

DropLines

Border, Name

Delete

ErrorBars

Border, EndStyle, Name,

Delete

 

Clear Formats

 

Floor

Border, Interior, Name

Clear Formats

Font

Background, Bold, Color,

-

 

ColorIndex, FontStyle, Italic,

 

 

Name, OutlineFont, Shadow,

 

 

Size, Strikethrough,

 

 

Subscript, Superscript,

 

 

Underline

 

GridLines

Border, Name

Delete

HiLoLines

Border, Name

Delete

Interior

Color, ColorIndex,

-

 

InvertIfNegative, Pattern,

 

 

PatternColor,

 

 

PatternColorIndex

 

Legend

Border, Font, Height, Interior, Clear, ClearContense, Copy,

 

Left, Name, Position, Shadow, Delete, LegendEntries

 

Top, Width

 

Legend-

Font, Index, LegendKey

Delete

Entry

 

 

LegendKey Border, Interior,

ClearFormats, Delete

www.books-shop.com

InvertIfNegative,

MarkerBackgroundColor,

MarkerBackgroundColorIndex,

MarkerForegroundColor,

MarkerForegroundColorIndex,

MarkerStyle, Smooth

PlotArea

Border, Font, Height, Interior, ClearFormats

 

Left, Name, Top, Width

 

Point

Border, DataLabel, Explosion,

ApplyDataLabels,

 

HasDataLabel, Interior,

ClearFormats, Copy, Delete

 

InvertIfNegative,

 

 

MarkerBackgroundColor,

 

 

MarkerBackgroundColorIndex,

 

 

MarkerForegroundColor,

 

 

MarkerForegroundColorIndex,

 

 

MarkerStyle, PictureType,

 

 

PictureUnit

 

Series

AxisGroup, Border, ErrorBars,

Interior, InvertIfNegative,

 

Explosion, HasDataLabels,

MarkerBackgroundColor,

 

HasErrorBars

MarkerBackgroundColorIndex,

 

 

MarkerForegroundColor,

 

 

MarkerForegroundColorIndex,

 

 

MarkerStyle, PictureType,

 

 

PictureUnit, Smooth, Type,

 

 

ApplyDataLabels,

 

 

ClearFormats, Copy,

 

 

DataLabels, Delete, ErrorBar,

 

 

Points, Trendlines

Series-

Border, Name

Delete

Lines

 

 

TickLabels Font, Name, NumberFormat,

Delete

 

Orientation

 

TrendLine

Backward, Border, DataLabel,

Clear Formats, Delete

 

DisplayEquation,

 

 

DisplayRSquared, Forward,

 

 

Index, Intercept,

 

 

InterceptIsAuto, Name,

 

 

NameIsAuto, Order, Period,

 

 

Type

 

UpBars

Border, Interior, Name

Delete

Walls

Border, Interior, Name

ClearFormats

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

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

www.books-shop.com

Рис. 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

Character

25

Заголовок графика

NUMBER

Integer

4

Номер графика

QUERY

Memo

4

Команда SQL запроса

Y_NUMBER

Integer

4

Число осей Y

Y1_CAPTION Character

25

Заголовок первой оси

 

 

 

Y

Y2_CAPTION Character

25

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

 

 

 

Y

GRAPH

General

4

График в виде

 

 

 

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

 

 

 

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.

www.books-shop.com

Присвоим ему имя 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. Присвоим ему следующие значения свойств:

RowSourceType = 5 - массив;

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

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

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

This.Value = 1

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

www.books-shop.com

ThisForm.ChangeGraphType Опишем для формы пользовательский метод ChangeGraphType: LOCAL NType

nType = ThisForm.cmbType.Value

IF ThisForm.opgShow.Value = 1 * Двухмерный график

ThisForm.olbGraph.Type = NType ELSE

* Трехмерный график

ThisForm.olbGraph.Type = NType + 8 ENDIF

Для выбора двухмерного или трехмерного вида графика разместим в форме две кнопки выбора в группе кнопок выбора opgShow.

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

ThisForm.ChangeGraphType

Опишем для формы пользовательский метод RefreshGraph: LOCAL cGraphString, nY_lim

cGraphString = ""

*Сколько полей должно участвовать в построении графика nY_lim = Graphs.Y_number + 1

SELECT Datafile

*Создаем список полей, разделенных через табулятор,

*в конце строки записываем символ CHR(13)

FOR iCounter = 1 TO nY_lim

cGraphString = cGraphString + FIELDS(iCounter) ;

+ IIF(iCounter << nY_lim, CHR(9), CHR(13))

ENDFOR

*Приводим к символьному типу данные

*и формируем строку для передачи в OLE-объект

SCAN

FOR iCounter = 1 TO nY_lim

cGraphString = cGraphString + IIF(TYPE(Fields(iCounter))='C',; EVALUATE(FIELDS(iCounter)); ,str(EVALUATE(FIELDS(iCounter))));

+ IIF(iCounter << nY_lim, CHR(9), CHR(13)) ENDFOR

ENDSCAN SELECT Graphs

APPEND GENERAL graph DATA cGraphString

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

Работу с объектами Excel проиллюстрируем на примере создания формы для анализа данных в виде графиков, функционально аналогичной рассмотренной выше. При использовании Excel мы не связаны такими жесткими ограничениями на работу с данными, как в MS Graph, за счет того, что в Excel есть доступ к данным, на основании которых строится график через объект Sheet. В MS Graph данные располагаются в DataSheet, но к ним можно обеспечить только интерактивный, а не программный доступ. В то же время использование возможностей Excel требует больше ресурсов компьютера и лицензионной копии пакета на компьютере пользователя, в то время как MS Graph поставляется в составе всех пакетов разработки Microsoft. Посмотрите оба варианта форм для вывода графиков и выберите для себя более подходящий.

Для воплощения нашей идеи в Конструкторе формы создадим следующие объекты.

oleChart - это объект OLE Container Control, с помощью которого мы встраиваем график Excel в форму. Нажимаем на панели инструментов Form Controls кнопку OLE Container Control и обводим в форме контур будущего графика. На экран выводится диалоговое окно Insert Object, в котором мы выбираем объект Excel Chart. Нажимаем кнопку OK и в обведенном контуре появляется график Excel, построенный на основании принятых по умолчанию данных, расположенных на втором рабочем листе таблицы. Одновременно, в соответствии с принципом редактирования на месте, изменяется главное меню Visual FoxPro для предоставления нам возможности отредактировать внешний вид представленного графика. Впоследствие можно вернуться к интерактивному

www.books-shop.com

Соседние файлы в папке лабы