⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.frm

📁 采用VB编写的一个电路分析系统
💻 FRM
📖 第 1 页 / 共 4 页
字号:

Private Sub self测量端_Click()
userplotter.node.Text = 元件.Tag
Call userplotter.node_Change
End Sub

Private Sub self共地端_Click()
userplotter.zerocom.Text = 节点.Tag
Call userplotter.zerocom_Change
End Sub

Private Sub sgn_Click()
signalsource.Show
End Sub

Public Sub userguide_Click()
Text1.Text = fpath + "\help\userguide.htm"
helper.Navigate Text1.Text
End Sub

Private Sub vf_Click()
voltform.Show
End Sub

Private Sub VScroll1_Change()
Picture1.Top = -VScroll1.value
Picture1.SetFocus
End Sub

Private Sub VScroll2_Change()
Picture2.Top = -VScroll2.value
Picture2.SetFocus
End Sub

Private Sub VScroll2_Scroll()
Picture2.Top = -VScroll2.value
Picture2.SetFocus
End Sub

Private Sub 波特分析_Click()

Call bodeplotter.plotter_start
bodeplotter.Show
End Sub

Private Sub 波特仪_Click()
bodeplotter.Show
End Sub

Private Sub 测量端_Click()
bodeplotter.node.Text = 节点.Tag
Call bodeplotter.node_Change
End Sub

Private Sub 打印结果_Click()
notepad.Show
End Sub

Private Sub 打印项目_Click()
printoption.Show (1)
End Sub

Private Sub 电流表_Click()
currentform.Show
End Sub

Private Sub 电路示波_Click()

Call waveviewer.waveshowstart
waveviewer.Show
End Sub

Private Sub 电压表_Click()
voltform.Show
End Sub

Private Sub 共地端_Click()
bodeplotter.zerocom.Text = 节点.Tag
Call bodeplotter.zerocom_Change
End Sub

Private Sub 普通分析_Click()
Call wholeanalysis(0)
End Sub

Private Sub 清理电路图_Click()
Call clearmap_Click
End Sub

Private Sub 删除元件_Click()
'删除元件时,要做到去元件,清连接,清记录,重新定义它
元件.Tag = Picture1.Tag
Call deletecell
End Sub
Sub deletecell()
Dim temp1, temp2 As Integer
If counts > 1 Then
typecount(cell(index).celltype) = typecount(cell(index).celltype) - 1
index = 元件.Tag

If cell(index).celltype = 6 Then
 main.tbToolBar.Buttons(25).Enabled = True
End If

temp1 = Fix(cell(index).celln1 / 10)
temp2 = cell(index).celln1 Mod 10
If temp2 <> 0 Then
 Call resetnode(temp1, temp2)
End If
temp1 = Fix(cell(index).celln2 / 10)
temp2 = cell(index).celln2 Mod 10
If temp2 <> 0 Then
 Call resetnode(temp1, temp2)
End If

For k = index To counts - 2
   Call changecell(k, k + 1)
Next k

Unload cell(counts - 1)
frmoptions.Combo1.RemoveItem (counts - 1)
frmoptions.Combo2.RemoveItem (counts - 1)
counts = counts - 1
元件.Tag = 0
Picture1.Tag = 0
Call redrawmap
Call checknodes(CInt(index))
Call redrawmap
End If
End Sub
Sub checknodes(index As Integer)
Dim m As Integer
For m = 0 To nodecounts - 1
  If node(m).noden1 > index * 10 Then
   node(m).noden1 = node(m).noden1 - 10
 End If
  If node(m).noden2 > index * 10 Then
    node(m).noden2 = node(m).noden2 - 10
End If
If node(m).noden3 > index * 10 Then
    node(m).noden3 = node(m).noden3 - 10
End If
If node(m).noden4 > index * 10 Then
    node(m).noden4 = node(m).noden4 - 10
End If
Next m
End Sub
Private Sub resetnode(index, nport As Integer)
temp = node(index).nodestate
Select Case nport
Case 1
  If temp = 1 Then
  node(index).noden1 = 0
  ElseIf temp = 2 Then
  node(index).noden1 = node(index).noden2
  Call node_cell(node(index).noden2 Mod 10, Fix(node(index).noden2 / 10))
  node(index).noden2 = 0
  ElseIf temp = 3 Then
  node(index).noden1 = node(index).noden2
  Call node_cell(node(index).noden2 Mod 10, Fix(node(index).noden2 / 10))
  node(index).noden2 = node(index).noden3
   Call node_cell(node(index).noden3 Mod 10, Fix(node(index).noden3 / 10))
  node(index).noden3 = 0
  ElseIf temp = 4 Then
  node(index).noden1 = node(index).noden2
    Call node_cell(node(index).noden2 Mod 10, Fix(node(index).noden2 / 10))
  node(index).noden2 = node(index).noden3
    Call node_cell(node(index).noden3 Mod 10, Fix(node(index).noden3 / 10))
  node(index).noden3 = node(index).noden4
    Call node_cell(node(index).noden4 Mod 10, Fix(node(index).noden4 / 10))
  node(index).noden4 = 0
  End If
Case 2
  If temp = 2 Then
  node(index).noden2 = 0
  ElseIf temp = 3 Then
  node(index).noden2 = node(index).noden3
    Call node_cell(node(index).noden3 Mod 10, Fix(node(index).noden3 / 10))
  node(index).noden3 = 0
  ElseIf temp = 4 Then
  node(index).noden2 = node(index).noden3
    Call node_cell(node(index).noden3 Mod 10, Fix(node(index).noden3 / 10))
  node(index).noden3 = node(index).noden4
    Call node_cell(node(index).noden4 Mod 10, Fix(node(index).noden4 / 10))
  node(index).noden4 = 0
  End If
Case 3
 If temp = 3 Then
  node(index).noden3 = 0
  ElseIf temp = 4 Then
  node(index).noden3 = node(index).noden4
    Call node_cell(node(index).noden4 Mod 10, Fix(node(index).noden4 / 10))
  node(index).noden4 = 0
 End If
Case 4
 node(index).noden4 = 0
End Select
node(index).nodestate = node(index).nodestate - 1
End Sub
Sub node_cell(cport, index As Integer)
  If cport = 1 Then
  cell(index).celln1 = cell(index).celln1 - 1
  Else
   cell(index).celln2 = cell(index).celln2 - 1
  End If
End Sub
Private Sub changecell(m, n As Integer)
cell(m).cellarc = cell(n).cellarc
cell(m).cellvalue = cell(n).cellvalue
cell(m).cellstate = cell(n).cellstate
cell(m).cellindex = cell(n).cellindex
cell(m).celltype = cell(n).celltype
cell(m).cellinbranch = cell(n).cellinbranch
cell(m).celln1 = cell(n).celln1
cell(m).celln2 = cell(n).celln2
cell(m).cellinhole1 = cell(n).cellinhole1
cell(m).cellinhole2 = cell(n).cellinhole2
cell(m).celltag = cell(n).celltag
cell(m).n1volt = cell(n).n1volt
cell(m).n2volt = cell(n).n2volt
cell(m).cellcurrent = cell(n).cellcurrent
cell(m).isnew = cell(n).isnew
cell(m).main1 = cell(n).main1
cell(m).main2 = cell(n).main2
cell(m).left = cell(n).left
cell(m).Top = cell(n).Top
cell(m).Tag = cell(n).Tag
Call cell(m).incall

End Sub

Public Sub 删除元件1_Click()
Call deletecell
End Sub

Private Sub 设为零电势点_Click()
zeronode = CInt(节点.Tag)
End Sub

Private Sub 示波器_Click()
waveviewer.Show
End Sub
Function search(n, d As Integer) As Boolean
For n = 0 To counts - 1
 If cell(n).cellstate = d Then
 search = True
 Exit Function
 End If
Next
search = False
End Function
Private Sub lineabx(c, n, X, Y As Integer)
If n = 1 Then
X1 = cell(c).left + cell(c1).n1x - 10
Y1 = cell(c).Top + cell(c1).n1y
Else
X1 = cell(c).left + cell(c1).n2x - 10
Y1 = cell(c).Top + cell(c1).n2y
End If

  
  If tempn = 1 Then
   Picture1.Line (X1, Y1)-(tempx, tempy), vbWhite
   Picture1.Line (X1, Y1)-(X, Y), vbWhite
  Else
   Picture1.Line (X1, Y1)-(X, Y), vbWhite
End If
  tempx = X
  tempy = Y
  tempn = 1
   
End Sub
Private Sub displaycellinfo()
docform.Text1.Text = ""
For m = 0 To counts - 1
docform.Text1.Text = docform.Text1.Text + CStr(cell(m).celln1) + "////////"
Next m
End Sub

Private Sub linenc(ltype, noden, celln, nport, cport As Integer)
Dim index As Integer
If cport = 1 Then
X1 = cell(celln).left + cell(celln).n1x - 10
Y1 = cell(celln).Top + cell(celln).n1y
Else
X1 = cell(celln).left + cell(celln).n2x
Y1 = cell(celln).Top + cell(celln).n2y
End If
Select Case nport
Case 1
X2 = node(noden).left
Y2 = node(noden).Top + 30
Case 2
X2 = node(noden).left + 30
Y2 = node(noden).Top
Case 3
X2 = node(noden).left + 60
Y2 = node(noden).Top + 60
Case 4
X2 = node(noden).left + 30
Y2 = node(noden).Top + 60
End Select
mycolor = vbWhite

If ltype = 0 Then
Picture1.Line (X1, Y1)-(tempx, tempy), vbWhite
Picture1.DrawMode = 13
mycolor = vbBlack
End If

 If X1 > X2 And cport = 1 Then
   drawtype = 2
 ElseIf X1 > X2 And cport = 2 Then
   drawtype = 1
 ElseIf X1 < X2 And cport = 1 Then
   drawtype = 1
 ElseIf X1 < X2 And cport = 2 Then
 drawtype = 2
 End If
   
Select Case drawtype
Case 1
 Picture1.Line (X1, Y1)-(X1, Y2), mycolor
  Picture1.Line (X1, Y2)-(X2, Y2), mycolor
Case 2
 Picture1.Line (X1, Y1)-(X2, Y1), mycolor
  Picture1.Line (X2, Y1)-(X2, Y2), mycolor
End Select

If ltype = 0 Then
Picture1.DrawMode = 7

End If
tempn = 0
End Sub
Private Sub copypenline(index As Integer)
 Dim temp1, temp2 As Integer
temp1 = cell(index).celln1 Mod 10
temp2 = Fix(cell(index).celln1 / 10)
   If temp1 > 0 Then
      Call linenc(1, temp2, index, temp1, 1)
   End If
temp1 = cell(index).celln2 Mod 10
temp2 = Fix(cell(index).celln2 / 10)
   If temp1 > 0 Then
      Call linenc(1, temp2, index, temp1, 2)
   End If
End Sub


Public Sub matshower(ftype, a, b As Integer, mat() As Single, strs As String)
Dim k, kk As Integer

If Picture2.Tag = 0 Then
   matshow(0).Height = 400 + 200 * a
 If b >= 4 Then
  matshow(0).Columns = 3
  Else
   matshow(0).Columns = 2
  End If
 If a = 1 Then
 matshow(0).Height = 420
 End If
 matrixname(0).Caption = strs + "矩阵"
 Frame(0).Tag = matshow(0).Height + matrixname(0).Height
'-----------------------------------------------
For k = 0 To b - 1
  For kk = 0 To a - 1
matshow(0).AddItem mat(kk, k)
 Next kk
 Next k

Else

Load matrixname(Picture2.Tag)
 Load matshow(Picture2.Tag)
 matshow(Picture2.Tag).Visible = True
 matrixname(Picture2.Tag).Visible = True
 matrixname(Picture2.Tag).Top = Frame(0).Tag
 matrixname(Picture2.Tag).Caption = strs + "矩阵"
 matshow(Picture2.Tag).Top = Frame(0).Tag + matrixname(0).Height


If ftype = 0 Then
 
  matshow(Picture2.Tag).Height = 400 + 200 * a
 If b >= 4 Then
   matshow(Picture2.Tag).Columns = 3
  Else
   If a = 1 Then
   matshow(Picture2.Tag).Columns = 2
  Else
   matshow(Picture2.Tag).Columns = b
  End If
  End If
If a = 1 Then
  matshow(Picture2.Tag).Height = 420
 End If
 If a = -1 Then
For kk = 0 To b - 1
matshow(Picture2.Tag).AddItem mat(kk)
Next kk
Else
For k = 0 To b - 1
  For kk = 0 To a - 1
matshow(Picture2.Tag).AddItem mat(kk, k)
 Next kk
 Next k
 
 End If
 
ElseIf ftype = 1 Then '==============================
 
 If b >= 3 Then
   matshow(Picture2.Tag).Height = 400 + 200 * a
   matshow(Picture2.Tag).Columns = 3
  Else
   matshow(Picture2.Tag).Height = 400 + 200 * a
   matshow(Picture2.Tag).Columns = b
  End If
 
 If a = -1 Then
  matshow(Picture2.Tag).Height = 420
  For kk = 1 To b
   matshow(Picture2.Tag).AddItem mat(kk)
   Next kk
Else
  For k = 1 To b
   For kk = 1 To a
    matshow(Picture2.Tag).AddItem mat(kk, k)
   Next kk
  Next k
 End If

End If
Frame(0).Tag = Frame(0).Tag + matshow(Picture2.Tag).Height + matrixname(0).Height

End If
Picture2.Tag = Picture2.Tag + 1
Picture2.Height = Frame(0).Tag
End Sub



Private Sub 添加到自定义绘图仪绑定源_Click()
userplotter.sourcec.Text = 元件.Tag
Call userplotter.sourcec_Change
End Sub
Private Sub 停止_Click()
 If main.tbToolBar.Buttons(30).Image = 22 Then
    waveviewer.Timer1.Enabled = False
     main.tbToolBar.Buttons(30).Image = 23
    Call waveviewer.wave_end
    End If
End Sub

Private Sub 元件属性_Click()
frmoptions.Show
End Sub

Private Sub 元件属性1_Click()
frmoptions.Show
End Sub

Private Sub 运行_Click()
Call wholeanalysis(0)
End Sub

Private Sub 自定义分析_Click()

Call userplotter.plotter_start
userplotter.Show
End Sub

Private Sub 自定义分析绘图仪_Click()
userplotter.Show
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -