Пример отображения на форме vb графика функции
Передвигает указатель мыши по диаграмме.
MouseUp
Закончил перемещение мыши и освободил кнопку.
Resize
Изменил размер диаграммы.
Select
Выделил некоторый элемент диаграммы
SeriesChange
Изменил значение точки ряда данных.
Построение обработчиков событий
Обработчики событий для объектов Workbook, Worksheet и объектов Chart, задающих листы диаграмм, построить нетрудно. Все эти события по умолчанию включены, поэтому для построения обработчика достаточно перейти в окно проектов, выбрать модуль, обрабатывающий события этого объекта, в окне объектов этого модуля выбрать нужный объект, а затем в окне событий и процедур выбрать из списка имя события. В результате этих действий появится заготовка, содержащая заголовок обработчика события, после чего останется написать код обработчика. Более сложно строятся обработчики событий для объектов Chart, задающих встроенные диаграммы. О том как создаются обработчики событий для тех объектов, у которых события по умолчанию выключены, я подробно рассказал при рассмотрении событий объекта Application. Остается только коротко напомнить схему действий:
· Вначале нужно создать класс, в котором следует объявить объект Chart с событиями (With Events)
· Затем нужно объявить глобальный объект созданного класса — объект, уже имеющий события. После этого остается написать инициализирующую процедуру, в которой связывается глобальный объект с объектом, задающим встроенную диаграмму.
· Поскольку объект Chart с событиями появляется в окне созданного класса, то к нему применяется обычная схема создания обработчиков событий.
· После запуска инициализирующей процедуры, объект, задающий встроенную диаграмму, будет реагировать на события.
48. Пример отображения на форме VB графика функции с использованием объектной модели MS Excel. Рассмотреть способ передачи графика через диск и через буфер обмена.
Пример. (Отобразить на форме график функции, используя объектную модель MS Excel.)
Private Sub Command1_Click()
Dim GraphFunc As String, FileName As String, ObjRange As Object
Dim xmin As Double, xmax As Double, h As Double, ObjExcel As Object
‘xmin — начало диапазона, xmax — конец, h — шаг
Dim n As Integer ‘ счетчик строк
Const xlLines = 4
Const xlColumns = 2
Const xlPrimary = 1
Const xlCategory = 1
Const xlLocationasObject = 2
‘Создаем объект OLE Automation
Set ObjExcel = CreateObject("Excel. Application")
‘Задаем свойства рабочей книги и листа
With ObjExcel
.WorkBooks. Add
.ActiveSheet. Name = "График"
.Visible = True
.DisplayAlerts = False
End With
ObjExcel. Range("A1:B150").Clear
‘ Присваиваем имя "X" ячейки A1
ObjExcel. Range("A1").Name = "X"
‘Считываем параметры графика из полей
GraphFunc = "=" & Text1
xmin = Text2
xmax = Text3
h = Text4
‘Задаем параметры графика и координатной сетки
With ObjExcel. WorkSheets("График")
.Range("A1").Value = xmin
.Range("A1").DataSeries RowCol:=xlColumns, Step:=h, Stop:=xmax
‘Определяем число заполненных строк
n = .Range("A2").CurrentRegion. Rows. Count
.Range("B1").Formula = GraphFunc
.Range("A1:A" & LTrim(CStr(n))).Name = "X"
.Range("B1").AutoFill Destination:=.Range(.Cells(1, 2), .Cells(n, 2)), Type:=0
End With
FileName = App. Path& "График. gif" ‘ App. Path – путь к файлу
With ObjExcel
.Charts. Add
.ActiveChart. ChartArea. Font. Size = 10
.ActiveChart. ChartArea. Font. Bold = True
.ActiveChart. ChartArea. Font. Name = "Times New Roman Cyr"
.ActiveChart. ChartType = xlLines
.ActiveChart. ChartArea. Interior. ColorIndex = 6 ‘Желтый
.ActiveChart. ChartArea. Border. ColorIndex = 5 ‘Синий
.ActiveChart. PlotArea. Interior. ColorIndex = 2 ‘Белый
.ActiveChart. SetSourceData Source:=.Sheets("График").Range("B1:B" & LTrim(CStr(n))), PlotBy:=xlColumns
.ActiveChart. SeriesCollection(1).XValues = "=График! R2C1:R" & LTrim(CStr(n) & "C1")
.ActiveChart. Location Where:=xlLocationasObject, Name:="График"
With. ActiveChart
.HasTitle = True
.ChartTitle. Characters. Text = Trim(Text1)
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle. Characters. Text = "X"
.HasLegend = False
.Export FileName, FilterName:="GIF"
End With
Image1.Picture = LoadPicture(FileName) ‘Загружаем график с диска
End With
ObjExcel. Quit ‘Закрываем Excel без сохранения
Set ObjExcel = Nothing ‘ Удаление объекта
End Sub
Private Sub Form_Load()
Caption = "Пример на OLE Automation"
Command1.Caption = "График"
Text1 = "3 * SIN(ABS(X)^0.5) + 0.35 * X — 3.8"
Text2 = "-1"
Text3 = "8"
Text4 = "0,1"
Text1.TabIndex = 0
End Sub
Когда запись на диск из прикладной программы невозможна (например, проект был запущен с компакт-диска), то диаграмму следует передавать на форму через буфер обмена. Тогда вместо следующих строк
FileName= App. Path& "Градус. gif"
ObjExcel. ActiveChart.ExportFileName, filtername:="GIF"
Image1.Picture = LoadPicture(FileName)
Следует записать строки:
ObjExcel. ActiveChart. ChartArea.Select
‘Если диаграмма была уже выделена, то не нужно методом Select дополнительно ее выделять
ObjExcel. ActiveChart. ChartArea.Copy
Image1.Picture = Clipboard.GetData
49. Методы SolverOK и SolverAdd библиотеки Solver. xla.
Кроме нахождения корня нелинейного уравнения с помощью библиотеки-надстройки Solver. xla можно находить корни систем уравнений и решать различные задачи оптимизации. Эта библиотека содержит набор функций (макросов). Основными из них являются: SolverOk, SolverAdd, SolverOptions, SolverSolve.
Функция SolverOk позволяет поставить задачу оптимизации решения. Она задает значения тех параметров, которые вручную устанавливаются пользователем в окне Поиска решения
Синтаксис:
SolverOk (SetCell, MaxMinVal, ValueOf, ByChange),
Где SetCell – задает ячейку, содержащую формулу с функцией цели;
MaxMinVal–задает тип задачи, решаемой для функции цели, и может иметь следующие значения: 1 –для задачи максимизации; 2 –для задачи минимизации; 3 –для задачи нахождения значения;
ValueOf–задает то значение, которое функция цели должна достичь, если значение параметра MaxMinVal равно 3;
ByChange–задает диапазон изменяемых ячеек, то есть тех ячеек, в которых размещены переменные оптимизационной задачи.
Функция SolverAdd позволяет добавлять ограничения в модель. Она задает значения тех параметров, которые вручную устанавливаются пользователем в окне Добавление ограничения
Синтаксис: SolverAdd(CellRef, Relation, FormulaText),
Где CellRef – задает ссылку на ячейку или диапазон ячеек из левой части ограничений;
Relation – задает тип соотношения между левой и правой частями ограничения и может иметь следующие значения: 1 – соответствует соотношению "<="; 2 – соответствует соотношению "="; 3 – соответствует соотношению">="; 4 – допустимыми значениями диапазона ячеек, заданного параметром CellRef, являются целые числа (значение параметра FormulaText опускается); 5 – допустимыми значениями диапазона ячеек, заданного параметром CellRef, являются толькочисла 0 и 1 (значение параметра FormulaText также опускается);
FormulaText – задает ссылку на ячейку или диапазон ячеек в правой части ограничений либо значение в правой части ограничений.
50. Методы SolverOptions, SolverSolve и SolverDelete, SolverSave, SolverLoad библиотеки Solver. xla.
Функция SolverOptions задает значения тех параметров Поиска решения, которые вручную устанавливаются в окне Параметры поиска решения
Синтакси: SolverOptions(MaxTime, Iterations, Precision, AssumeLinear, StepThru, Estimates, Derivatives, Search, IntTolerance, Scaling, Convergence, AssumeNonNeg).
Значение каждого параметра легче понять, глядя на рис. Так, MaxTime – задает максимальное время; Iterations – предельное число итераций; Precision – относительная погрешность; AssumeLinear – флажок Линейная модель; StepThru – флажок Показывать результаты итераций; Estimates – опция в рамке Оценки, Derivatives – опция в рамке Разности, Search – опция в рамке Метод поиска, IntTolerance – допустимое отклонение, Scaling – флажок Автоматическое масштабирование, Convergence – сходимость, AssumeNonNeg – флажок Неотрицательные значения.
Функция SolverSolve запускает Поиск решения. Ее действие эквивалентно нажатию на кнопку Выполнить окна Поиск решения.