Function FunctionEval1(ByVal X As Double) As Double
ScriptControl1.ExecuteStatement "X=" & X
FunctionEval1 = ScriptControl1.Eval(Trim(Text1.Text))
End Function
Function FunctionEval2(ByVal X As Double) As Double
ScriptControl1.AddCode "X=" & X
FunctionEval2 = ScriptControl1.Eval(Trim(Text2.Text))
End Function
Private Sub Command1_Click()
Dim t As Double
Dim XMin As Double, XMax As Double, YMin As Double, YMax As Double
Dim XPixels As Integer
On Error GoTo FncError
YMin = 1E+101: YMax = -1E+101
XMin = 2: XMax = 10
Picture1.Cls
Picture1.ScaleMode = 3
XPixels = Picture1.ScaleWidth - 1
Me.Caption = "Calculating range..."
Screen.MousePointer = vbHourglass
' Calculate Min and Max for Y axis
For i = 1 To XPixels
t = XMin + (XMax - XMin) * i / XPixels
functionVal = FunctionEval1(t)
If functionVal > YMax Then YMax = functionVal
If functionVal < YMin Then YMin = functionVal
Next
Me.Caption = "Plotting function..."
' Set up a user defined scale mode
Picture1.Scale (XMin, YMin)-(XMax, YMax)
Picture1.ForeColor = RGB(0, 0, 255)
' Move to the first point
Picture1.PSet (XMin, FunctionEval1(XMin))
' Plot the function
For i = 0 To XPixels
t = XMin + (XMax - XMin) * i / XPixels
'Picture1.PSet (t, FunctionEval1(t))
Picture1.Line -(t, FunctionEval1(t))
Next
Me.Caption = "Function Plot"
Screen.MousePointer = vbDefault
Exit Sub
FncError:
MsgBox "There was an error in evaluating the function"
Screen.MousePointer = vbDefault
End Sub
Private Sub Command2_Click()
Dim t As Double
Dim XMin As Double, XMax As Double, YMin As Double, YMax As Double
Dim XPixels As Integer
YMin = 1E+101: YMax = -1E+101
XMin = 2: XMax = 10
Picture1.Cls
Picture1.ScaleMode = 3
XPixels = Picture1.ScaleWidth - 1
Me.Caption = "Calculating range..."
Screen.MousePointer = vbHourglass
' Calculate Min and Max for Y axis
For i = 0 To XPixels
t = XMin + (XMax - XMin) * i / XPixels
functionVal = FunctionEval2(t)
If functionVal > YMax Then YMax = functionVal
If functionVal < YMin Then YMin = functionVal
Next
Me.Caption = "Plotting function..."
' Set up a user defined scale mode
Picture1.Scale (XMin, YMin)-(XMax, YMax)
Picture1.ForeColor = RGB(255, 0, 0)
' Move to the first point
Picture1.PSet (XMin, FunctionEval1(XMin))
' Plot the function
For i = 0 To XPixels - 1
t = XMin + (XMax - XMin) * i / XPixels
functionVal = FunctionEval2(t)
'Picture1.PSet (t, functionVal)
Picture1.Line -(t, functionVal)
Next
Me.Caption = "Function Plot"
Screen.MousePointer = vbDefault
Exit Sub
FncError:
MsgBox "There was an error in evaluating the function"
Screen.MousePointer = vbDefault
End Sub
Private Sub Command3_Click()
Dim t As Double
Dim XMin As Double, XMax As Double, YMin As Double, YMax As Double
Dim XPixels As Integer
YMin = 1E+101: YMax = -1E+101
XMin = 2: XMax = 10
Picture1.Cls
Picture1.ScaleMode = 3
XPixels = Picture1.ScaleWidth - 1
Me.Caption = "Calculating range..."
Screen.MousePointer = vbHourglass
' Calculate Min and Max for Y axis
For i = 1 To XPixels
t = XMin + (XMax - XMin) * i / XPixels
functionVal = FunctionEval1(t)
If functionVal > YMax Then YMax = functionVal
If functionVal < YMin Then YMin = functionVal
Next
Me.Caption = "Plotting functions..."
' Set up a user defined scale mode
Picture1.Scale (XMin, YMin)-(XMax, YMax)
Picture1.ForeColor = RGB(0, 0, 255)
' Move to the first point
Picture1.PSet (XMin, FunctionEval1(XMin))
' Plot the function
For i = 0 To XPixels
t = XMin + (XMax - XMin) * i / XPixels
'Picture1.PSet (t, FunctionEval1(t))
Picture1.Line -(t, FunctionEval1(t))
Next
Picture1.ForeColor = RGB(255, 0, 0)
Picture1.PSet (XMin, FunctionEval2(XMin))
' Plot the function
For i = 0 To XPixels
t = XMin + (XMax - XMin) * i / XPixels
'Picture1.PSet (t, FunctionEval2(t))
Picture1.Line -(t, FunctionEval2(t))
Next
Me.Caption = "Function Plot"
Screen.MousePointer = vbDefault
Exit Sub
FncError:
MsgBox "There was an error in evaluating the function"
Screen.MousePointer = vbHourglass
End Sub
Private Sub ScriptControl1_Error()
Debug.Print ScriptControl1.Error.Number
Debug.Print ScriptControl1.Error.Text
End Sub