📄 analyser.frm
字号:
VERSION 5.00
Begin VB.Form Analyser
Caption = "Form1"
ClientHeight = 3285
ClientLeft = 60
ClientTop = 405
ClientWidth = 7710
LinkTopic = "Form1"
ScaleHeight = 3285
ScaleWidth = 7710
StartUpPosition = 3 '窗口缺省
Begin VB.CommandButton Draw
Caption = "作图"
Height = 375
Left = 120
TabIndex = 11
Top = 2280
Width = 1215
End
Begin VB.PictureBox Picture1
Height = 2895
Left = 4440
MousePointer = 99 'Custom
ScaleHeight = 2835
ScaleMode = 0 'User
ScaleWidth = 3195
TabIndex = 10
Top = 360
Width = 3255
Begin VB.Line Line2
BorderColor = &H00FFC0C0&
X1 = 0
X2 = 3240
Y1 = 2880
Y2 = 2880
End
Begin VB.Line Line1
BorderColor = &H00FFC0C0&
X1 = 10000
X2 = 10000
Y1 = 0
Y2 = 2880
End
End
Begin VB.CommandButton Command1
Caption = "函数列表"
Height = 375
Left = 120
TabIndex = 9
Top = 1320
Width = 1215
End
Begin VB.CommandButton Help
Caption = "帮助"
Height = 375
Left = 120
TabIndex = 8
Top = 1800
Width = 1215
End
Begin VB.CommandButton WinCalc
Caption = "计算器"
Height = 375
Left = 120
TabIndex = 7
Top = 840
Width = 1215
End
Begin VB.CommandButton Command3
Caption = "Val"
Height = 255
Left = 2640
TabIndex = 5
Top = 840
Width = 1575
End
Begin VB.CommandButton Command2
Caption = "Name"
Height = 255
Left = 1560
TabIndex = 4
Top = 840
Width = 1095
End
Begin VB.ListBox List2
Height = 2040
Left = 2640
TabIndex = 3
Top = 1080
Width = 1575
End
Begin VB.ListBox List1
Height = 2040
Left = 1560
TabIndex = 2
Top = 1080
Width = 1095
End
Begin VB.CommandButton AddSpace
Caption = "计算表达式"
Height = 375
Left = 120
TabIndex = 1
Top = 2760
Width = 1215
End
Begin VB.TextBox MainText
Height = 375
Left = 120
TabIndex = 0
Top = 120
Width = 4215
End
Begin VB.Frame Frame1
Caption = "常数列表"
Height = 2655
Left = 1440
TabIndex = 6
Top = 600
Width = 2895
End
Begin VB.Label Label1
Height = 255
Left = 4440
TabIndex = 12
Top = 120
Width = 3255
End
Begin VB.Menu Menu
Caption = "Menu"
Visible = 0 'False
Begin VB.Menu MenuDelete
Caption = "删除"
End
Begin VB.Menu MenuAdd
Caption = "添加"
End
Begin VB.Menu MenuModify
Caption = "修改"
End
Begin VB.Menu MenuInfo
Caption = "说明"
End
End
End
Attribute VB_Name = "Analyser"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim SX As Single, SY As Single
Dim G As Boolean
Private Sub AddSpace_Click()
ReDim ConstInfo1(1 To 1)
For i = 0 To List1.ListCount - 1
Module1.InputConst List1.List(i), List2.List(i)
Next i
InText = MainText.Text
MainText.Text = Module1.Initialize(MainText.Text)
If MainText.Text <> InText Then MainText.Text = Val(MainText.Text)
End Sub
Private Sub Command1_Click()
MsgBox "函数列表" & Chr(10) & Chr(13) _
& "sin 正弦函数" & Chr(10) & Chr(13) _
& "cos余弦函数" & Chr(10) & Chr(13) _
& "tan正切函数" & Chr(10) & Chr(13) _
& "rnd 随即数" & Chr(10) & Chr(13) _
& "abs 绝对值" & Chr(10) & Chr(13) _
& "exp 自然对数e的n次方" & Chr(10) & Chr(13) _
& "fix 取整" & Chr(10) & Chr(13) _
& "int 取整" & Chr(10) & Chr(13) _
& "log 对数函数" & Chr(10) & Chr(13) _
& "sqr或者sqrt 平方根" & Chr(10) & Chr(13) _
& "Int 和 Fix 的不同之处在于,如果 number 为负数,则 Int 返回小于或等于 number 的第一个负整数,而 Fix 则会返回大于或等于 number 的第一个负整数。例如,Int 将 -8.4 转换成 -9,而 Fix 将 -8.4 转换成 -8。"
End Sub
Private Sub draw_Click()
On Error Resume Next
G = True
Dim iii As Integer
For i = 1 To Len(MainText.Text)
If Mid(MainText.Text, i, 1) = "X" Or Mid(MainText.Text, i, 1) = "x" Then iii = iii + 1
Next i
If iii = 0 Then MsgBox ("未能找到常数X"): Exit Sub
Picture1.Picture = LoadPicture("")
Picture1.AutoRedraw = True
Picture1.Line (0, -20)-(0, 20)
Picture1.Line (-20, 0)-(20, 0)
For SX = -20 To 20 Step 0.1
ReDim ConstInfo1(1 To 1)
For i = 0 To List1.ListCount - 1
Module1.InputConst List1.List(i), List2.List(i)
Next i
Module1.InputConst "X", SX
InText = MainText.Text
SY = Module1.Initialize(MainText.Text)
Picture1.PSet (SX, SY)
Next SX
Picture1.AutoRedraw = False
End Sub
Private Sub Form_Load()
Picture1.Scale (-20, 20)-(20, -20)
Picture1.Picture = LoadPicture("")
Picture1.AutoRedraw = True
Picture1.Line (0, -20)-(0, 20)
Picture1.Line (-20, 0)-(20, 0)
Picture1.AutoRedraw = False
List1.AddItem ("G")
List2.AddItem (9.807)
List1.AddItem ("P")
List2.AddItem (3.142)
SX = SX + 1
End Sub
Private Sub Form_Unload(Cancel As Integer)
End
End Sub
Private Sub Help_Click()
MsgBox "欢迎使用本软件!" & Chr(10) & Chr(13) _
& "本软件用于分析并计算数学表达式或者画图。您可以用各种运算方法和函数进行复杂的运算。" & Chr(10) & Chr(13) _
& "您可以在字符框里以自然的方式输入表达式,但是还是有些需要注意的地方。这些是不可以弄错的。" & Chr(10) & Chr(13) _
& "首先,这里没有点乘,也不可以忽略它。例如平时我们习惯的将A乘以B写为AB,但是您在此不得不写为A*B" & Chr(10) & Chr(13) _
& "第二,在运算中,函数拥有最高的优先权。这意味着sin 3^2 =(sin 3)^2。如果您不希望这样,请用括号括起他们。" & Chr(10) & Chr(13) _
& "第三,如果一个常数紧跟一个函数,请把常数括起来。例如sin(G)就不会发生错误" & Chr(10) & Chr(13) _
& "第四,为了让程序区分负号和减号,减号一律用下划线“_”代替……出了问题别怪我没提醒……" & Chr(10) & Chr(13) _
& "最后,由于本人技术不高,又为了狗日的自然书写,因此如果……正确的表达式发生了错误或答案不正确,那么……" & Chr(10) & Chr(13) _
& "关于作图,很简单,把X当作一个常数就行了。不过呢……有可能……比较慢……" & Chr(10) & Chr(13) _
& "祝这个软件能帮上大家一些忙~谢谢大家的支持~还有,有问题还请多多包涵……并且联系我。制作人CauLiFloWeR。" & Chr(10) & Chr(13) _
& "关于固定函数请见相关帮助。在常数列表框内点击右键以操作常数并取得常数的帮助。"
End Sub
Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
List2.ListIndex = List1.ListIndex
If Button = 2 Then
PopupMenu Menu
End If
End Sub
Private Sub List2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
List1.ListIndex = List2.ListIndex
If Button = 2 Then
PopupMenu Menu
End If
End Sub
Private Sub MainText_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then AddSpace_Click
End Sub
Private Sub MenuAdd_click()
On Error Resume Next
Dim Name As String, V As Integer
Abcd: Name = UCase(InputBox("Enter Name"))
If Name = "" Or Len(Name) <> 1 Or IsNumeric(Name) = True Or Name = "X" Then MsgBox ("错误的命名。请查阅说明。"): GoTo Abcd
V = Val(InputBox("Enter Val"))
List1.AddItem Name
List2.AddItem V
End Sub
Private Sub Menumodify_click()
On Error Resume Next
Dim Name As String, V As Integer
Abc: Name = InputBox("Enter Name", , List1.List(List1.ListIndex))
If Name = "" Or Len(Name) <> 1 Or IsNumeric(Name) = True Or Name = "X" Then MsgBox ("错误的命名。请查阅说明。"): GoTo Abc
V = Val(InputBox("Enter Val", , List1.List(List2.ListIndex)))
List1.List(List1.ListIndex) = Name
List2.List(List2.ListIndex) = V
End Sub
Private Sub Menudelete_click()
On Error Resume Next
If MsgBox("You are sure to delete?", vbYesNo) = vbYes Then
List1.RemoveItem List1.ListIndex
List2.RemoveItem List2.ListIndex
Else
Exit Sub
End If
End Sub
Private Sub Menuinfo_click()
MsgBox "您可以在计算时用常数替代一些复杂而重复的数。您也可以自定义常数。" & Chr(10) & Chr(13) _
& "您可以添加 删除 修改常数,但常数的名称必须是大写的单个英文字母(不可以为X)不能有有多余的空格;常数的数值必须是一个不太长的数字。如果不是大写系统将自动转换……我好象说废话了" & Chr(10) & Chr(13) _
& "但是在输入表达式时并没有类似规定;您可以小写,或则不空格也可以。", , "帮助"
End Sub
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If G Then
Dim AY As Single
ReDim ConstInfo1(1 To 1)
For i = 0 To List1.ListCount - 1
Module1.InputConst List1.List(i), List2.List(i)
Next i
Module1.InputConst "X", Round(X, 3)
AY = Val(Module1.Initialize(MainText.Text))
Label1.Caption = Round(X, 3) & " : " & AY
Line1.X1 = X: Line1.X2 = X
Line2.Y1 = AY: Line2.Y2 = AY
End If
End Sub
Private Sub WinCalc_Click()
Shell "C:\WINDOWS\system32\CALC.EXE"
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -