直接上代码
《登陆界面的代码》
Private Sub cmdCancel_Click()
Me.Hide
End
End Sub
Private Sub cmdOK_Click()
'检查正确的密码
If (txtUserName = "admin") And (txtPassword = "txtbjhjs") Then
MainForm.Show
Me.Hide
Else
MsgBox "无效的密码,请重试!", , "登录"
txtPassword.SetFocus
txtPassword.Text = ""
End If
End Sub
《主界面代码》
Dim X As String '用于临时存储元件名
Dim S As String '用于临时存储语句表
Dim I, J, A, B, C As Integer '用语临时局部变量
Dim p As Integer '用于输出"━( )━┫"时记录连续"━"是从何处开始加的
Dim M As Integer '用于记录前进的步数,用于后退时的判断
Dim Z As Integer '用于跟踪上一步前进的步数,用于后退时的判断
Dim sizeI, sizeJ, k, N As Integer '全局变量(sizeI, sizeJ)用于记录数组当前位置,
'K 用于记录输入器件的索引值
'N 用于跟踪上一步前进的输入器件的索引值,用于后退时的判断
Dim Matrix(1 To 260, 0 To 72) As String
Dim Arr(1 To 260) As Integer '用于存储每行中元件长为5个字节的元件结束时的下一位横坐标
Dim Visited(1 To 260, 0 To 72) As Integer '访问标记,Visited(I,J)为 0 表示未曾访问,为 1 表示已经访问
Dim BlockVisited(1 To 260, 0 To 72) As Integer '访问标记,BlockVisited(I,J)为 0 ANB 或 ORB 表示未曾访问,为 1 表示已经访问
Private Sub Form_Activate()
For I = 1 To 260
For J = 0 To 72
Matrix(I, J) = " " '对Matrix(I, J)矩阵进行初始化
Visited(I, J) = 0
BlockVisited(I, J) = 0
Next J
Arr(I) = 0 '对Arr()数组进行初始化
Next I
Call Fresh '刷新图片
End Sub
Private Sub Form_Load()
sizeI = 2 '初始化
sizeJ = 1
S = ""
M = 5
k = 0
Z = 0
N = 0
p = 0
Command1.Enabled = True
Command2.Enabled = True
Command3.Enabled = True
Command4.Enabled = True
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
Command9.Enabled = False
Command10.Enabled = False
Command11.Enabled = False
Command12.Enabled = False
Command13.Enabled = False
Public Sub Fresh() ' 自定义过程
Picture1.Cls
For I = 1 To sizeI
For J = 0 To 72
Picture1.Print Matrix(I, J);
Next J
Picture1.Print '换行
Next I
End Sub
Public Sub Procedure(I As Integer, J As Integer) ' 自定义递归过程
If Visited(I, J) = 0 Then
If I = sizeI And J = sizeJ Then
S = S & "END" & Chr(13) & Chr(10)
End If
If J = Arr(I) Then
Call OUT(I, J)
While Matrix(I + 2, 56) = "┃"
I = I + 2
Wend
If I <= sizeI And Matrix(I + 2, 56) = "┫" Then
I = I + 2
J = Arr(I)
While (J > 5) And (Matrix(I, J - 1) = "┳" Or Matrix(I, J - 1) = "━")
J = J - 5
Wend
Call Procedure(I, J)
Else
Call Procedure(I, 1)
End If
End If
If (I = 2 And J = 1) Then
Call LDorLDI(I, J)
If Matrix(I, J + 4) = "━" Then
Call Procedure(I, J + 5)
ElseIf Matrix(I, J + 4) = "┳" Then
I = I + 2
While Matrix(I, J) = "┃"
I = I + 2
Wend
Call Procedure(I, J)
End If
End If
If (I = 2 And J > 1 And J < Arr(I)) Then
If Matrix(I, J - 1) = "━" Then
Call ANDorANI(I, J)
If Matrix(I, J + 4) = "┳" Then
A = I
I = I + 2
While (Matrix(I, J + 4) = "┃" Or Matrix(I, J + 4) = "┣")
I = I + 2
Wend
If Matrix(I, J + 4) = "┛" Or Matrix(I, J + 4) = "┻" Or Matrix(I, J + 4) = "╋" Or Matrix(I, J + 4) = "┫" Then
While (J > 5 And (Matrix(I, J - 1) = "━" Or Matrix(I, J - 1) = "┳"))
J = J - 5
Wend
Call Procedure(I, J)
ElseIf Matrix(I, J + 4) = "┗" Then
I = A
Call Procedure(I, J + 5)
End If
Else
Call Procedure(I, J + 5)
End If
Else 'Matrix(I, J - 1) = "┳"(其中 I=2)
If Matrix(I, J + 4) = "━" Then
B = J + 5
While Matrix(I, B - 1) = "━" And B < Arr(I)
B = B + 5
Wend
If Matrix(I, B - 1) = "━" Then
Call ANDorANI(I, J)
Call Procedure(I, J + 5)
Else
A = I
I = I + 2
While (Matrix(I, J - 1) = "┃" Or Matrix(I, J - 1) = "┫")
I = I + 2
Wend
If Matrix(I, J - 1) = "┛" Then
I = A
Call ANDorANI(I, J)
Call Procedure(I, J + 5)
Else
I = A
Call LDorLDI(I, J)
Call Procedure(I, J + 5)
End If
End If
Else 'Matrix(I, J + 4) = "┳"
A = I
I = I + 2
While (Matrix(I, J - 1) = "┫" Or Matrix(I, J - 1) = "┃")
I = I + 2
Wend
If Matrix(I, J - 1) <> "┛" Then
C = I
I = A
Call LDorLDI(I, J)
I = C
Call Procedure(I, J)
Else
I = A
J = J
Call ANDorANI(I, J)
I = A + 2
J = J + 5
While (Matrix(I, J - 1) = "┃" Or Matrix(I, J - 1) = "┣")
I = I + 2
Wend
If Matrix(I, J - 1) = "┛" Or Matrix(I, J - 1) = "┻" Or Matrix(I, J - 1) = "╋" Or Matrix(I, J - 1) = "┫" Then
J = J - 5
While (Matrix(I, J - 1) = "━" Or Matrix(I, J - 1) = "┳")
J = J - 5
Wend
Call Procedure(I, J)
End If
End If
End If
End If
End If
If (I > 2 And J = 1) Then '处理非第一行,第一列元件
Select Case Matrix(I, J + 4)
Case "┫", "╋"
Call ORorORI(I, J)
Call Procedure(I + 2, J)
Case "┣", "┃"
Call Procedure(I + 2, J)
Case "━"
If Matrix(I, J + 6) <> "━" Then
Call LDorLDI(I, J)
Else '其后没有元件了
B = J
J = J + 5
While (Matrix(I, J - 1) = "━" And J < (Arr(I)))
J = J + 5
Wend
If Matrix(I, J - 1) = "━" Then
J = B
Call LDorLDI(I, J)
ElseIf Matrix(I, J - 1) = "┛" Or Matrix(I, J - 1) = "┻" Or Matrix(I, J - 1) = "╋" Or Matrix(I, J - 1) = "┫" Then
J = B
Call ORorORI(I, J)
End If
End If
Call Procedure(I, J + 5)
Case "┳"
Call LDorLDI(I, J)
Call Procedure(I + 2, J)
Case "┻", "┛"
Call ORorORI(I, J)
I = I - 2
While (Matrix(I, J + 4) <> "┳")
I = I - 2
Wend
Call Procedure(I, J + 5)
End Select
End If
If (I > 2 And J > 5 And J < Arr(I)) Then '处理非第一行,非第一列元件
If Matrix(I, J - 1) = "┳" Then
If Matrix(I, J + 4) = "┳" Then
A = I
I = I + 2
While (Matrix(I, J - 1) = "┫" Or Matrix(I, J - 1) = "┃")
I = I + 2
Wend
If Matrix(I, J - 1) = "┻" Or Matrix(I, J - 1) = "╋" Then
I = A
Call LDorLDI(I, J)
Call Procedure(I + 2, J)
ElseIf Matrix(I, J - 1) = "┛" Then
I = A
Call ANDorANI(I, J)
I = I + 2
While (Matrix(I, J + 4) = "┣" Or Matrix(I, J + 4) = "┃")
I = I + 2
Wend
If Matrix(I, J + 4) = "┛" Or Matrix(I, J + 4) = "┻" Or Matrix(I, J + 4) = "╋" Or Matrix(I, J + 4) = "┫" Then
While (J > 5) And (Matrix(I, J - 1) = "┳" Or Matrix(I, J - 1) = "━")
J = J - 5
Wend
Call Procedure(I, J)
Else
I = A
Call Procedure(I, J + 5)
End If
End If
ElseIf Matrix(I, J + 4) = "━" Then
If Matrix(I, J + 7) = "━" Then
Call ANDorANI(I, J)
Else
B = J
J = J + 5
While (Matrix(I, J + 4) = "━" And J < (Arr(I)))
J = J + 5
Wend
If Matrix(I, J + 4) <> "━" Then
J = B
Call LDorLDI(I, J)
Else
J = B
Call ANDorANI(I, J)
End If
End If
Call Procedure(I, J + 5)
ElseIf Matrix(I, J + 4) = "┫" Or Matrix(I, J + 4) = "╋" Then
A = I
I = I + 2
While (Matrix(I, J - 1) = "┫" Or Matrix(I, J - 1) = "┃")
I = I + 2
Wend
If Matrix(I, J - 1) = "┻" Or Matrix(I, J - 1) = "╋" Then
I = A
Call LDorLDI(I, J)
Call Procedure(I + 2, J)
ElseIf Matrix(I, J - 1) = "┛" Then
I = A
Call ANDorANI(I, J)
I = I + 2
While (Matrix(I, J + 4) = "┣" Or Matrix(I, J + 4) = "┃")
I = I + 2
Wend
If Matrix(I, J + 4) = "┛" Or Matrix(I, J + 4) = "┻" Or Matrix(I, J + 4) = "╋" Or Matrix(I, J + 4) = "┫" Then
While (J > 5) And (Matrix(I, J - 1) = "┳" Or Matrix(I, J - 1) = "━")
J = J - 5
Wend
Call Procedure(I, J)
Else
I = A - 2
While Matrix(I, J + 4) <> "┳" And (Matrix(I, J + 4) = "┃" Or Matrix(I, J + 4) = "┫")
I = I - 2
Wend
Call Procedure(I, J + 5)
End If
End If
End If
End If
If Matrix(I, J - 1) = "━" Then
If Matrix(I, J + 2) <> "━" Then
Call ANDorANI(I, J)
End If
Select Case Matrix(I, J + 4)
Case "━"
Call Procedure(I, J + 5)
Case "┳"
A = I
I = I + 2
While (Matrix(I, J + 4) = "┣" Or Matrix(I, J + 4) = "┃")
I = I + 2
Wend
If Matrix(I, J + 4) = "┛" Or Matrix(I, J + 4) = "┻" Or Matrix(I, J + 4) = "╋" Or Matrix(I, J + 4) = "┫" Then
While (J > 5) And (Matrix(I, J - 1) = "┳" Or Matrix(I, J - 1) = "━")
J = J - 5
Wend
Call Procedure(I, J)
Else
I = A
Call Procedure(I, J + 5)
End If
Case "┫", "╋"
If Matrix(I, J + 2) <> "━" Then
Call ORB(I, J + 5, I - 2, J + 5, I, J, 0)
End If
I = I + 2
While (Matrix(I, J + 4) = "┣" Or Matrix(I, J + 4) = "┃")
I = I + 2
Wend
If Matrix(I, J + 4) = "┛" Or Matrix(I, J + 4) = "┻" Or Matrix(I, J + 4) = "╋" Or Matrix(I, J + 4) = "┫" Then
While (J > 5) And (Matrix(I, J - 1) = "┳" Or Matrix(I, J - 1) = "━")
J = J - 5
Wend
Call Procedure(I, J)
End If
Case "┻", "┛"
A = 0 '求此行上元件个数
B = 3
While B < J + 5
If Matrix(I, B) <> "━" Then
A = A + 1
End If
B = B + 5
Wend
If A > 1 Then
Call ORB(I, J + 5, I - 2, J + 5, I, J, 0)
End If
I = I - 2
While Matrix(I, J + 4) <> "┳" And (Matrix(I, J + 4) = "┫" Or Matrix(I, J + 4) = "┃" Or Matrix(I, J + 4) = "╋")
I = I - 2
Wend
If Matrix(I, J + 4) = "┳" Then
Call Procedure(I, J + 5)
End If
End Select
End If
If Matrix(I, J - 1) = "╋" Then
If Matrix(I, J + 4) = "┻" Or Matrix(I, J + 4) = "┛" Then
Call ORorORI(I, J)
I = I - 2
While (Matrix(I, J - 1) = "┫" Or Matrix(I, J - 1) = "┃")
I = I - 2
Wend
If Matrix(I, J - 1) = "┳" Then
Call Procedure(I, J)
End If
Else
B = J
J = J + 5
While (Matrix(I, J - 1) = "━" And J <> Arr(I))
J = J + 5
Wend
If J = Arr(I) Then
J = B
Call ANDorANI(I, J)
Call Procedure(I, J + 5)
ElseIf Matrix(I, J - 1) = "┳" Or Matrix(I, J - 1) = "╋" Then
C = J
J = B
Call LDorLDI(I, J)
If C <> J + 5 Then
Call Procedure(I, J + 5)
Else
I = I + 2
While (Matrix(I, J - 1) = "┫" Or Matrix(I, J - 1) = "┃")
I = I + 2
Wend
Call Procedure(I, J)
End If
ElseIf Matrix(I, J - 1) = "┻" Or Matrix(I, J - 1) = "┛" Then
C = J
J = B
If C <> J + 5 Then
Call LDorLDI(I, J)
Call Procedure(I, J + 5)
Else
Call ANDorANI(I, J)
J = C
I = I - 2
While (Matrix(I, J - 1) = "┫" Or Matrix(I, J - 1) = "┃" Or Matrix(I, J - 1) = "╋")
I = I - 2
Wend
If Matrix(I, J - 1) = "┳" Then
Call Procedure(I, J)
End If
End If
End If
End If
End If
If Matrix(I, J - 1) = "┗" Then
If Matrix(I, J + 4) = "┻" Or Matrix(I, J + 4) = "┛" Then
Call ORorORI(I, J)
I = I - 2
While (Matrix(I, J + 4) = "┫" Or Matrix(I, J + 4) = "┃" Or Matrix(I, J + 4) = "╋")
I = I - 2
Wend
If Matrix(I, J + 4) = "┳" Then
Call Procedure(I, J + 5)
End If
ElseIf Matrix(I, J + 4) = "┫" Or Matrix(I, J + 4) = "╋" Then
Call ORorORI(I, J)
I = I + 2
While (Matrix(I, J + 4) = "┣" Or Matrix(I, J + 4) = "┃")
I = I + 2
Wend
While (Matrix(I, J - 1) = "┳" Or Matrix(I, J - 1) = "━")
J = J - 5
Wend
Call Procedure(I, J)
Else
If Matrix(I, J + 6) <> "━" Then
Call LDorLDI(I, J)
Else '其后没有元件了
B = J
J = J + 5
While (Matrix(I, J - 1) = "━" And J < (Arr(I)))
J = J + 5
Wend
If Matrix(I, J - 1) = "━" Then
If J = Arr(I) Then
J = B
Call ANDorANI(I, J)
Else
Call LDorLDI(I, J)
End If
ElseIf Matrix(I, J - 1) = "┛" Or Matrix(I, J - 1) = "┻" Or Matrix(I, J - 1) = "╋" Or Matrix(I, J - 1) = "┫" Then
J = B
Call ORorORI(I, J)
End If
End If
Call Procedure(I, J + 5)
End If
End If
If Matrix(I, J - 1) = "┻" Then
If Matrix(I, J + 4) = "┻" Or Matrix(I, J + 4) = "┛" Then
Call ORorORI(I, J)
Call ANB(I, J + 5, I - 2, J + 5, I, J, 0)
I = I - 2
While (Matrix(I, J + 4) = "┫" Or Matrix(I, J + 4) = "┃" Or Matrix(I, J + 4) = "╋")
I = I - 2
Wend
If Matrix(I, J + 4) = "┳" Then
Call Procedure(I, J + 5)
End If
ElseIf Matrix(I, J + 4) = "┫" Or Matrix(I, J + 4) = "╋" Then
Call ORorORI(I, J)
Call ANB(I, J + 5, I - 2, J + 5, I, J, 0)
I = I + 2
While (Matrix(I, J + 4) = "┣" Or Matrix(I, J + 4) = "┃")
I = I + 2
Wend
While (Matrix(I, J - 1) = "┳" Or Matrix(I, J - 1) = "━")
J = J - 5
Wend
Call Procedure(I, J)
Else
If Matrix(I, J + 6) <> "━" Then
Call LDorLDI(I, J)
Else '其后没有元件了
B = J
J = J + 5
While (Matrix(I, J - 1) = "━" And J < (Arr(I)))
J = J + 5
Wend
If Matrix(I, J - 1) = "━" Then
If J = Arr(I) Then
J = B
Call ANDorANI(I, J)
Else
Call LDorLDI(I, J)
End If
ElseIf Matrix(I, J - 1) = "┛" Or Matrix(I, J - 1) = "┻" Or Matrix(I, J - 1) = "╋" Or Matrix(I, J - 1) = "┫" Then
J = B
Call ORorORI(I, J)
End If
End If
Call Procedure(I, J + 5)
End If
End If
If Matrix(I, J - 1) = "┣" Then
Select Case Matrix(I, J + 4)
Case "━"
If Matrix(I, J + 6) <> "━" Then
Call LDorLDI(I, J)
Else '其后没有元件了
B = J
J = J + 5
While (Matrix(I, J - 1) = "━" And J < (Arr(I)))
J = J + 5
Wend
If Matrix(I, J - 1) = "━" Then
If J = Arr(I) Then
J = B
Call ANDorANI(I, J)
Else
Call LDorLDI(I, J)
End If
ElseIf Matrix(I, J - 1) = "┛" Or Matrix(I, J - 1) = "┻" Or Matrix(I, J - 1) = "╋" Or Matrix(I, J - 1) = "┫" Then
J = B
Call ORorORI(I, J)
End If
End If
Call Procedure(I, J + 5)
Case "┳"
Call LDorLDI(I, J)
I = I + 2
While (Matrix(I, J + 4) = "┣" Or Matrix(I, J + 4) = "┃")
I = I + 2
Wend
If Matrix(I, J + 4) = "┛" Or Matrix(I, J + 4) = "┻" Or Matrix(I, J + 4) = "╋" Or Matrix(I, J + 4) = "┫" Then
While (J > 5) And (Matrix(I, J - 1) = "┳" Or Matrix(I, J - 1) = "━")
J = J - 5
Wend
Call Procedure(I, J)
End If
Case "┫", "╋"
Call ORorORI(I, J)
I = I + 2
While (Matrix(I, J + 4) = "┣" Or Matrix(I, J + 4) = "┃")
I = I + 2
Wend
If Matrix(I, J + 4) = "┛" Or Matrix(I, J + 4) = "┻" Or Matrix(I, J + 4) = "╋" Or Matrix(I, J + 4) = "┫" Then
While (J > 5) And (Matrix(I, J - 1) = "┳" Or Matrix(I, J - 1) = "━")
J = J - 5
Wend
Call Procedure(I, J)
End If
Case "┻", "┛"
Call ORorORI(I, J)
I = I - 2
While Matrix(I, J + 4) <> "┳" And (Matrix(I, J + 4) = "┫" Or Matrix(I, J + 4) = "┃" Or Matrix(I, J + 4) = "╋")
I = I - 2
Wend
If Matrix(I, J + 4) = "┳" Then
Call Procedure(I, J + 5)
End If
End Select
End If
End If
End If
End Sub
Public Sub LDorLDI(I1 As Integer, J1 As Integer)
If Visited(I1, J1) = 0 Then
Visited(I1, J1) = 1
If Matrix(I1, J1 + 2) = " " Then
S = S & "LD " & Matrix(I1 - 1, J1 + 1) & Chr(13) & Chr(10)
ElseIf Matrix(I1, J1 + 2) = "╱" Then
S = S & "LDI " & Matrix(I1 - 1, J1 + 1) & Chr(13) & Chr(10)
End If
End If
End Sub
Public Sub ANDorANI(I1 As Integer, J1 As Integer)
If Visited(I1, J1) = 0 Then
Visited(I1, J1) = 1
If Matrix(I1, J1 + 2) = " " Then
S = S & "AND " & Matrix(I1 - 1, J1 + 1) & Chr(13) & Chr(10)
ElseIf Matrix(I1, J1 + 2) = "╱" Then
S = S & "ANI " & Matrix(I1 - 1, J1 + 1) & Chr(13) & Chr(10)
End If
End If
End Sub
Public Sub ORorORI(I1 As Integer, J1 As Integer)
If Visited(I1, J1) = 0 Then
Visited(I1, J1) = 1
If Matrix(I1, J1 + 2) = " " Then
S = S & "OR " & Matrix(I1 - 1, J1 + 1) & Chr(13) & Chr(10)
ElseIf Matrix(I1, J1 + 2) = "╱" Then
S = S & "ORI " & Matrix(I1 - 1, J1 + 1) & Chr(13) & Chr(10)
End If
End If
End Sub
Public Sub OUT(I1 As Integer, J1 As Integer)
If Visited(I1, J1) = 0 Then
Visited(I1, J1) = 1
S = S & "OUT " & Matrix(I1 - 1, 53) & Chr(13) & Chr(10)
End If
End Sub
Public Sub ANB(I1 As Integer, J1 As Integer, I2 As Integer, J2 As Integer, I3 As Integer, J3 As Integer, signal As Integer)
If (signal = 1 And BlockVisited(I2, J3) = 0) Or (signal = 0 And BlockVisited(I2 + 2, J3) = 0) Then
If signal = 0 Then
BlockVisited(I2 + 2, J3) = 1
Else
BlockVisited(I2, J3) = 1
End If
Dim x1, y1, x2, y2, x3, y3, x4, y4, m1, n1, k(1 To 20), p, flag As Integer
flag = 0
x4 = I3 - 2
y4 = J3
While (Matrix(x4, y4 - 1) = "╋" Or Matrix(x4, y4 - 1) <> "┳")
x4 = x4 - 2
Wend
y2 = J2
If I2 > x4 And signal = 0 Then
x2 = I2 - 2
While x2 > x4 And Matrix(I2, y2 - 1) <> "┳"
x2 = x2 - 2
Wend
Else
x2 = I2
End If
If x2 = x4 Then
x3 = I3
y3 = J3
While (Matrix(x3, y3 - 1) = "━" Or Matrix(x3, y3 - 1) = "┻")
y3 = y3 - 5
Wend
x1 = x2
y1 = y2 - 5
While (y1 > y4) And (Matrix(x1, y1 - 1) = "━" And Matrix(x1, y1 - 1) <> "┳")
y1 = y1 - 5
Wend
If y1 = y4 Then
While (Matrix(x1, y1 - 1) = "━" Or Matrix(x1, y1 - 1) = "┳")
y1 = y1 - 5
Wend
If y1 = y3 Then
x5 = x1 + 2
y5 = y1
If y5 <> 1 Then
While (Matrix(x5, y5 - 1) = "┃" Or Matrix(x5, y5 - 1) = "┣")
x5 = x5 + 2
Wend
Else
While x5 < x3
x5 = x5 + 2
Wend
End If
If x5 = x3 Then
S = S & "ANB " & Chr(13) & Chr(10)
End If
End If
End If
End If
If Matrix(x2, y2 - 1) = "┫" Or Matrix(x2, y2 - 1) = "╋" Then
a1 = I2: a2 = J2: a3 = I3: a4 = J3
I2 = x2: J2 = y2: I3 = x3: J3 = y3
Call ORB(I1, J1, I2, J2, I3, J3, 1)
I2 = a1: J2 = a2: I3 = a3: J3 = a4
End If
End If
End Sub
Public Sub ORB(I1 As Integer, J1 As Integer, I2 As Integer, J2 As Integer, I3 As Integer, J3 As Integer, signal As Integer)
'(I1,J1)是元件尾部P处坐标,(I2,J2)是竖对P点坐标,(I3,J3)是横对P点坐标,
'signal为0表示是从PROCDURE()调用,为1表示从ANB()调用
If (signal = 1 And BlockVisited(I2, J3) = 0) Or (signal = 0 And BlockVisited(I2 + 2, J3) = 0) Then
If signal = 0 Then
BlockVisited(I2 + 2, J3) = 1
Else
BlockVisited(I2, J3) = 1
End If
Dim x1, y1, x2, y2, x3, y3, x4, y4, m1, n1, k(1 To 20), p, flag As Integer
flag = 0
If signal = 1 Then
x2 = I2 - 2
Else
x2 = I2
End If
y2 = J2
x3 = I3
y3 = J3
While (Matrix(x3, y3 - 1) = "━")
y3 = y3 - 5
Wend
While (x2 >= 2)
x1 = x2
y1 = y2 - 5
While (Matrix(x1, y1 - 1) = "━" Or Matrix(x1, y1 - 1) = "┳")
y1 = y1 - 5
If y1 = y3 Then
GoTo p1
End If
Wend
x2 = x2 - 2
Wend
p1: x4 = x1 + 2
y4 = y1
While x4 < x3 And ((Matrix(x4, y4 - 1) = "┃" Or Matrix(x4, y4 - 1) = "┣") Or (y4 = 1))
x4 = x4 + 2
Wend
If x4 = x3 Then
For m1 = x1 To x3 Step 2
For p = 1 To 20 '初始化
k(p) = 1
Next p
p = 1
For n1 = y1 + 5 To y2 - 5 Step 5
If (Matrix(m1, n1 - 1) = "━" Or Matrix(m1, n1 - 1) = "┻") Then
GoTo p2
Else
k(p) = 2
p = p + 1
GoTo p3
End If
p2: Next n1
If k(p) = 1 Then '有一行满足要求,则退出
GoTo p4
End If
p3: Next m1
p4: For p = 1 To 20
If k(p) = 2 Then
flag = 1
End If
Next p
If flag = 0 Then
S = S & "ORB " & Chr(13) & Chr(10)
End If
End If
If Matrix(x3, y3 - 1) = "┻" Then
a1 = I2: a2 = J2: a3 = I3: a4 = J3
I2 = x2
J2 = y2
I3 = x3
J3 = y3
Call ANB(I1, J1, I2, J2, I3, J3, 1)
I2 = a1: J2 = a2: I3 = a3: J3 = a4
End If
End If
End Sub
Command21.Enabled = True
Command22.Enabled = False
If (sizeJ = 1) Then '加入梯形图的左边框线
If sizeI > 2 Then
I = sizeI - 1
While Matrix(I, sizeJ) = " "
Matrix(I, sizeJ) = "┃"
I = I - 1
Wend
Else
Matrix(sizeI - 1, sizeJ) = "┃"
End If
End If
Command21.Enabled = True
Command22.Enabled = False
If (sizeJ = 1) Then '加入梯形图的左边框线
If sizeI > 2 Then
I = sizeI - 1
While Matrix(I, sizeJ) = " "
Matrix(I, sizeJ) = "┃"
I = I - 1
Wend
Else
Matrix(sizeI - 1, sizeJ) = "┃"
End If
End If
X = InputBox("请输入器件名称(限三个字符,如 X01 )", "输入器件名称") '输入器件名称
While (Len(X) <> 3)
MsgBox "输入器件名称不合要求,请重新输入器件名称"
X = InputBox("请输入器件名称(限三个字符,如 X01 )", "输入器件名称")
Wend
Arr(sizeI) = Arr(sizeI) + 6
Matrix(sizeI, sizeJ) = "┣"
Matrix(sizeI, sizeJ + 1) = "┫"
Matrix(sizeI, sizeJ + 2) = "╱"
Matrix(sizeI, sizeJ + 3) = "┣"
Matrix(sizeI, sizeJ + 4) = "┛"
Matrix(sizeI - 1, sizeJ + 1) = X
Matrix(sizeI - 1, sizeJ + 2) = " "
I = sizeI - 1
While (Matrix(I, sizeJ + 4) = " ")
Matrix(I, sizeJ + 4) = "┃"
I = I - 1
Wend
If Matrix(I, sizeJ + 4) = "━" Then
Matrix(I, sizeJ + 4) = "┳"
ElseIf Matrix(I, sizeJ + 4) = "┻" Then
Matrix(I, sizeJ + 4) = "╋"
ElseIf Matrix(I, sizeJ + 4) = "┛" Then
Matrix(I, sizeJ + 4) = "┫"
ElseIf Matrix(I, sizeJ + 4) = "┗" Then
Matrix(I, sizeJ + 4) = "┣"
End If
sizeJ = sizeJ + 5
Z = M
M = 5
N = k
k = 4
Call Fresh
End Sub
Private Sub Command5_Click()
If Command10.Enabled = False Then
Command10.Enabled = True
End If
If Matrix(sizeI, sizeJ - 1) = "┛" Then
Matrix(sizeI, sizeJ - 1) = "┻"
ElseIf Matrix(sizeI, sizeJ - 1) = "┫" Then
Matrix(sizeI, sizeJ - 1) = "╋"
End If
X = InputBox("请输入器件名称(限三个字符,如 X01 )", "输入器件名称") '输入器件名称
While (Len(X) <> 3)
MsgBox "输入器件名称不合要求,请重新输入器件名称"
X = InputBox("请输入器件名称(限三个字符,如 X01 )", "输入器件名称")
Wend
Arr(sizeI) = Arr(sizeI) + 5
Matrix(sizeI, sizeJ) = "━"
Matrix(sizeI, sizeJ + 1) = "┥"
Matrix(sizeI, sizeJ + 2) = " "
Matrix(sizeI, sizeJ + 3) = "┝"
Matrix(sizeI, sizeJ + 4) = "━"
Matrix(sizeI - 1, sizeJ + 1) = X
Matrix(sizeI - 1, sizeJ + 2) = " "
If k = 18 Then '如果前边一个元件是空位键
Matrix(sizeI, sizeJ - 1) = "┗"
I = sizeI - 1
While (Matrix(I, sizeJ - 1) = " ")
Matrix(I, sizeJ - 1) = "┃"
I = I - 1
Wend
If Matrix(I, sizeJ - 1) = "━" Then
Matrix(I, sizeJ - 1) = "┳"
ElseIf Matrix(I, sizeJ - 1) = "┻" Then
Matrix(I, sizeJ - 1) = "╋"
End If
End If
sizeJ = sizeJ + 5
Z = M
M = 5
N = k
k = 5
Call Fresh
Command9.Enabled = True
Command21.Enabled = True
End Sub
Private Sub Command6_Click()
If Command10.Enabled = False Then
Command10.Enabled = True
End If
If Matrix(sizeI, sizeJ - 1) = "┛" Then
Matrix(sizeI, sizeJ - 1) = "┻"
ElseIf Matrix(sizeI, sizeJ - 1) = "┫" Then
Matrix(sizeI, sizeJ - 1) = "╋"
End If
X = InputBox("请输入器件名称(限三个字符,如 X01 )", "输入器件名称") '输入器件名称
While (Len(X) <> 3)
MsgBox "输入器件名称不合要求,请重新输入器件名称"
X = InputBox("请输入器件名称(限三个字符,如 X01 )", "输入器件名称")
Wend
Arr(sizeI) = Arr(sizeI) + 5
Matrix(sizeI, sizeJ) = "━"
Matrix(sizeI, sizeJ + 1) = "┥"
Matrix(sizeI, sizeJ + 2) = "╱"
Matrix(sizeI, sizeJ + 3) = "┝"
Matrix(sizeI, sizeJ + 4) = "━"
Matrix(sizeI - 1, sizeJ + 1) = X
Matrix(sizeI - 1, sizeJ + 2) = " "
If k = 18 Then '如果前边一个元件是空位键
Matrix(sizeI, sizeJ - 1) = "┗"
I = sizeI - 1
While (Matrix(I, sizeJ - 1) = " ")
Matrix(I, sizeJ - 1) = "┃"
I = I - 1
Wend
If Matrix(I, sizeJ - 1) = "━" Then
Matrix(I, sizeJ - 1) = "┳"
ElseIf Matrix(I, sizeJ - 1) = "┻" Then
Matrix(I, sizeJ - 1) = "╋"
End If
End If
sizeJ = sizeJ + 5
Z = M
M = 5
N = k
k = 6
Call Fresh
Command9.Enabled = True
Command21.Enabled = True
End Sub
Private Sub Command7_Click()
If Command10.Enabled = False Then
Command10.Enabled = True
End If
If Matrix(sizeI, sizeJ - 1) = "┛" Then
Matrix(sizeI, sizeJ - 1) = "┻"
ElseIf Matrix(sizeI, sizeJ - 1) = "┫" Then
Matrix(sizeI, sizeJ - 1) = "╋"
End If
X = InputBox("请输入器件名称(限三个字符,如 X01 )", "输入器件名称") '输入器件名称
While (Len(X) <> 3)
MsgBox "输入器件名称不合要求,请重新输入器件名称"
X = InputBox("请输入器件名称(限三个字符,如 X01 )", "输入器件名称")
Wend
Arr(sizeI) = Arr(sizeI) + 5
Matrix(sizeI, sizeJ) = "━"
Matrix(sizeI, sizeJ + 1) = "┥"
Matrix(sizeI, sizeJ + 2) = " "
Matrix(sizeI, sizeJ + 3) = "┝"
Matrix(sizeI, sizeJ + 4) = "┛"
Matrix(sizeI - 1, sizeJ + 1) = X
Matrix(sizeI - 1, sizeJ + 2) = " "
I = sizeI - 1
While (Matrix(I, sizeJ + 4) = " ")
Matrix(I, sizeJ + 4) = "┃"
I = I - 1
Wend
If Matrix(I, sizeJ + 4) = "━" Then
Matrix(I, sizeJ + 4) = "┳"
ElseIf Matrix(I, sizeJ + 4) = "┻" Then
Matrix(I, sizeJ + 4) = "╋"
ElseIf Matrix(I, sizeJ + 4) = "┛" Then
Matrix(I, sizeJ + 4) = "┫"
ElseIf Matrix(I, sizeJ + 4) = "┗" Then
Matrix(I, sizeJ + 4) = "┣"
End If
If k = 18 Then '如果前边一个元件是空位键
Matrix(sizeI, sizeJ - 1) = "┗"
I = sizeI - 1
While (Matrix(I, sizeJ - 1) = " ")
Matrix(I, sizeJ - 1) = "┃"
I = I - 1
Wend
If Matrix(I, sizeJ - 1) = "━" Then
Matrix(I, sizeJ - 1) = "┳"
ElseIf Matrix(I, sizeJ - 1) = "┻" Then
Matrix(I, sizeJ - 1) = "╋"
End If
End If
sizeJ = sizeJ + 5
Z = M
M = 5
N = k
k = 7
Call Fresh
Command9.Enabled = True
Command11.Enabled = True
Command21.Enabled = True
End Sub
Private Sub Command8_Click()
If Command10.Enabled = False Then
Command10.Enabled = True
End If
If Matrix(sizeI, sizeJ - 1) = "┛" Then
Matrix(sizeI, sizeJ - 1) = "┻"
ElseIf Matrix(sizeI, sizeJ - 1) = "┫" Then
Matrix(sizeI, sizeJ - 1) = "╋"
End If
X = InputBox("请输入器件名称(限三个字符,如 X01 )", "输入器件名称") '输入器件名称
While (Len(X) <> 3)
MsgBox "输入器件名称不合要求,请重新输入器件名称"
X = InputBox("请输入器件名称(限三个字符,如 X01 )", "输入器件名称")
Wend
Arr(sizeI) = Arr(sizeI) + 5
Matrix(sizeI, sizeJ) = "━"
Matrix(sizeI, sizeJ + 1) = "┥"
Matrix(sizeI, sizeJ + 2) = "╱"
Matrix(sizeI, sizeJ + 3) = "┝"
Matrix(sizeI, sizeJ + 4) = "┛"
Matrix(sizeI - 1, sizeJ + 1) = X
Matrix(sizeI - 1, sizeJ + 2) = " "
I = sizeI - 1
While (Matrix(I, sizeJ + 4) = " ")
Matrix(I, sizeJ + 4) = "┃"
I = I - 1
Wend
If Matrix(I, sizeJ + 4) = "━" Then
Matrix(I, sizeJ + 4) = "┳"
ElseIf Matrix(I, sizeJ + 4) = "┻" Then
Matrix(I, sizeJ + 4) = "╋"
ElseIf Matrix(I, sizeJ + 4) = "┛" Then
Matrix(I, sizeJ + 4) = "┫"
ElseIf Matrix(I, sizeJ + 4) = "┗" Then
Matrix(I, sizeJ + 4) = "┣"
End If
If k = 18 Then '如果前边一个元件是空位键
Matrix(sizeI, sizeJ - 1) = "┗"
I = sizeI - 1
While (Matrix(I, sizeJ - 1) = " ")
Matrix(I, sizeJ - 1) = "┃"
I = I - 1
Wend
If Matrix(I, sizeJ - 1) = "━" Then
Matrix(I, sizeJ - 1) = "┳"
ElseIf Matrix(I, sizeJ - 1) = "┻" Then
Matrix(I, sizeJ - 1) = "╋"
End If
End If
sizeJ = sizeJ + 5
Z = M
M = 5
N = k
k = 8
Call Fresh
Command9.Enabled = True
Command11.Enabled = True
Command21.Enabled = True
End Sub
Private Sub Command9_Click()
If Command10.Enabled = False Then
Command10.Enabled = True
End If
Arr(sizeI) = sizeJ
If Matrix(sizeI, sizeJ - 1) = "┛" Then '处理字符前端
Matrix(sizeI, sizeJ - 1) = "┻"
ElseIf Matrix(sizeI, sizeJ - 1) = "┫" Then
Matrix(sizeI, sizeJ - 1) = "╋"
End If
If N = 18 Then '如果前边一个元件是空位键
Matrix(sizeI, sizeJ - 6) = " "
I = sizeI - 1
While (Matrix(I, sizeJ - 6) = "┃")
Matrix(I, sizeJ - 1) = " "
I = I - 1
Wend
If Matrix(I, sizeJ - 6) = "┳" Then
Matrix(I, sizeJ - 6) = "━"
ElseIf Matrix(I, sizeJ - 6) = "╋" Then
Matrix(I, sizeJ - 6) = "┻"
End If
End If
End If
Else 'M=10(即输入(END)后)
sizeJ = 1 '删除梯形图的左边框线
If sizeI > 2 Then
I = sizeI - 1
While Matrix(I, sizeJ) = "┃"
Matrix(I, sizeJ) = " "
I = I - 1
Wend
Else
Matrix(sizeI - 1, sizeJ) = "┃"
End If
Command19.Visible = False
Command20.Visible = False
Text1.Text = ""
End Sub
Private Sub Command13_Click() '实现由梯形图向语句表的转化
Call Procedure(2, 1)
Text1.Text = S
Command13.Visible = False
Command14.Visible = False
Command19.Visible = True
Command12.Enabled = True
Command19.Enabled = True
Command20.Visible = True
End Sub
Private Sub Command14_Click()
frmAbout.Show
Me.Hide
End Sub
Private Sub Command15_Click()
If Command10.Enabled = False Then
Command10.Enabled = True
End If
If Matrix(sizeI, sizeJ - 1) = "┛" Then
Matrix(sizeI, sizeJ - 1) = "┻"
ElseIf Matrix(sizeI, sizeJ - 1) = "┫" Then
Matrix(sizeI, sizeJ - 1) = "╋"
End If
Arr(sizeI) = Arr(sizeI) + 5
Matrix(sizeI, sizeJ) = "━"
Matrix(sizeI, sizeJ + 1) = "━"
Matrix(sizeI, sizeJ + 2) = "━"
Matrix(sizeI, sizeJ + 3) = "━"
Matrix(sizeI, sizeJ + 4) = "━"
If k = 18 Then '如果前边一个元件是空位键
Matrix(sizeI, sizeJ - 1) = "┗"
I = sizeI - 1
While (Matrix(I, sizeJ - 1) = " ")
Matrix(I, sizeJ - 1) = "┃"
I = I - 1
Wend
If Matrix(I, sizeJ - 1) = "━" Then
Matrix(I, sizeJ - 1) = "┳"
ElseIf Matrix(I, sizeJ - 1) = "┻" Then
Matrix(I, sizeJ - 1) = "╋"
End If
End If
sizeJ = sizeJ + 5
Z = M
M = 5
N = k
k = 15
Call Fresh
Command9.Enabled = True
Command21.Enabled = True
End Sub
Private Sub Command16_Click()
If Command10.Enabled = False Then
Command10.Enabled = True
End If
If Matrix(sizeI, sizeJ - 1) = "┛" Then
Matrix(sizeI, sizeJ - 1) = "┻"
ElseIf Matrix(sizeI, sizeJ - 1) = "┫" Then
Matrix(sizeI, sizeJ - 1) = "╋"
End If
Arr(sizeI) = Arr(sizeI) + 5
Matrix(sizeI, sizeJ) = "━"
Matrix(sizeI, sizeJ + 1) = "━"
Matrix(sizeI, sizeJ + 2) = "━"
Matrix(sizeI, sizeJ + 3) = "━"
Matrix(sizeI, sizeJ + 4) = "┛"
I = sizeI - 1
While (Matrix(I, sizeJ + 4) = " ")
Matrix(I, sizeJ + 4) = "┃"
I = I - 1
Wend
If Matrix(I, sizeJ + 4) = "━" Then
Matrix(I, sizeJ + 4) = "┳"
ElseIf Matrix(I, sizeJ + 4) = "┻" Then
Matrix(I, sizeJ + 4) = "╋"
ElseIf Matrix(I, sizeJ + 4) = "┛" Then
Matrix(I, sizeJ + 4) = "┫"
ElseIf Matrix(I, sizeJ + 4) = "┗" Then
Matrix(I, sizeJ + 4) = "┣"
End If
If k = 18 Then '如果前边一个元件是空位键
Matrix(sizeI, sizeJ - 1) = "┗"
I = sizeI - 1
While (Matrix(I, sizeJ - 1) = " ")
Matrix(I, sizeJ - 1) = "┃"
I = I - 1
Wend
If Matrix(I, sizeJ - 1) = "━" Then
Matrix(I, sizeJ - 1) = "┳"
ElseIf Matrix(I, sizeJ - 1) = "┻" Then
Matrix(I, sizeJ - 1) = "╋"
End If
End If
sizeJ = sizeJ + 5
Z = M
M = 5
N = k
k = 16
Call Fresh
Command9.Enabled = True
Command11.Enabled = True
Command21.Enabled = True
End Sub
Private Sub Command17_Click()
Call Fresh
End Sub
Private Sub Command18_Click()
If Command10.Enabled = False Then
Command10.Enabled = True
End If
If (sizeJ = 1) Then '加入梯形图的左边框线
I = sizeI
While Matrix(I, sizeJ) = " "
Matrix(I, sizeJ) = "┃"
I = I - 1
Wend
End If
If (sizeJ = 1) Then
Arr(sizeI) = Arr(sizeI) + 6
Else
Arr(sizeI) = Arr(sizeI) + 5
End If
sizeJ = sizeJ + 5
Z = M
M = 5
N = k
k = 18
Call Fresh
Private Sub Command19_Click() '生成 *.txt 文件
FileNum = FreeFile()
Open "D:\生成的语句表.txt" For Output As #FileNum
Print #FileNum, Text1.Text
Close #FileNum
End Sub
Private Sub Command20_Click()
frmAbout.Show
Me.Hide
Private Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, ByRef phkResult As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal lpData As String, ByRef lpcbData As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long
Private Sub cmdSysInfo_Click()
Call StartSysInfo
End Sub
Private Sub cmdOK_Click()
Unload Me
End
End Sub
Public Sub StartSysInfo()
On Error GoTo SysInfoErr
Dim rc As Long
Dim SysInfoPath As String
' 试图从注册表中获得系统信息程序的路径及名称...
If GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFO, gREGVALSYSINFO, SysInfoPath) Then
' 试图仅从注册表中获得系统信息程序的路径...
ElseIf GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFOLOC, gREGVALSYSINFOLOC, SysInfoPath) Then
' 已知32位文件版本的有效位置
If (Dir(SysInfoPath & "\MSINFO32.EXE") <> "") Then
SysInfoPath = SysInfoPath & "\MSINFO32.EXE"
' 错误 - 文件不能被找到...
Else
GoTo SysInfoErr
End If
' 错误 - 注册表相应条目不能被找到...
Else
GoTo SysInfoErr
End If
Call Shell(SysInfoPath, vbNormalFocus)
Exit Sub
SysInfoErr:
MsgBox "此时系统信息不可用", vbOKOnly
End Sub
Public Function GetKeyValue(KeyRoot As Long, KeyName As String, SubKeyRef As String, ByRef KeyVal As String) As Boolean
Dim I As Long ' 循环计数器
Dim rc As Long ' 返回代码
Dim hKey As Long ' 打开的注册表关键字句柄
Dim hDepth As Long '
Dim KeyValType As Long ' 注册表关键字数据类型
Dim tmpVal As String ' 注册表关键字值的临时存储器
Dim KeyValSize As Long ' 注册表关键自变量的尺寸
'------------------------------------------------------------
' 打开 {HKEY_LOCAL_MACHINE...} 下的 RegKey
'------------------------------------------------------------
rc = RegOpenKeyEx(KeyRoot, KeyName, 0, KEY_ALL_ACCESS, hKey) ' 打开注册表关键字
If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError ' 处理错误...
附件上传失败啊!晚上再试
《登陆界面的代码》
Private Sub cmdCancel_Click()
Me.Hide
End
End Sub
Private Sub cmdOK_Click()
'检查正确的密码
If (txtUserName = "admin") And (txtPassword = "txtbjhjs") Then
MainForm.Show
Me.Hide
Else
MsgBox "无效的密码,请重试!", , "登录"
txtPassword.SetFocus
txtPassword.Text = ""
End If
End Sub
《主界面代码》
Dim X As String '用于临时存储元件名
Dim S As String '用于临时存储语句表
Dim I, J, A, B, C As Integer '用语临时局部变量
Dim p As Integer '用于输出"━( )━┫"时记录连续"━"是从何处开始加的
Dim M As Integer '用于记录前进的步数,用于后退时的判断
Dim Z As Integer '用于跟踪上一步前进的步数,用于后退时的判断
Dim sizeI, sizeJ, k, N As Integer '全局变量(sizeI, sizeJ)用于记录数组当前位置,
'K 用于记录输入器件的索引值
'N 用于跟踪上一步前进的输入器件的索引值,用于后退时的判断
Dim Matrix(1 To 260, 0 To 72) As String
Dim Arr(1 To 260) As Integer '用于存储每行中元件长为5个字节的元件结束时的下一位横坐标
Dim Visited(1 To 260, 0 To 72) As Integer '访问标记,Visited(I,J)为 0 表示未曾访问,为 1 表示已经访问
Dim BlockVisited(1 To 260, 0 To 72) As Integer '访问标记,BlockVisited(I,J)为 0 ANB 或 ORB 表示未曾访问,为 1 表示已经访问
Private Sub Form_Activate()
For I = 1 To 260
For J = 0 To 72
Matrix(I, J) = " " '对Matrix(I, J)矩阵进行初始化
Visited(I, J) = 0
BlockVisited(I, J) = 0
Next J
Arr(I) = 0 '对Arr()数组进行初始化
Next I
Call Fresh '刷新图片
End Sub
Private Sub Form_Load()
sizeI = 2 '初始化
sizeJ = 1
S = ""
M = 5
k = 0
Z = 0
N = 0
p = 0
Command1.Enabled = True
Command2.Enabled = True
Command3.Enabled = True
Command4.Enabled = True
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
Command9.Enabled = False
Command10.Enabled = False
Command11.Enabled = False
Command12.Enabled = False
Command13.Enabled = False
Command15.Enabled = False
Command16.Enabled = False
Command18.Enabled = False
Command19.Enabled = False
Command21.Enabled = False
Command22.Enabled = True
End Sub
Public Sub Fresh() ' 自定义过程
Picture1.Cls
For I = 1 To sizeI
For J = 0 To 72
Picture1.Print Matrix(I, J);
Next J
Picture1.Print '换行
Next I
End Sub
Public Sub Procedure(I As Integer, J As Integer) ' 自定义递归过程
If Visited(I, J) = 0 Then
If I = sizeI And J = sizeJ Then
S = S & "END" & Chr(13) & Chr(10)
End If
If J = Arr(I) Then
Call OUT(I, J)
While Matrix(I + 2, 56) = "┃"
I = I + 2
Wend
If I <= sizeI And Matrix(I + 2, 56) = "┫" Then
I = I + 2
J = Arr(I)
While (J > 5) And (Matrix(I, J - 1) = "┳" Or Matrix(I, J - 1) = "━")
J = J - 5
Wend
Call Procedure(I, J)
Else
Call Procedure(I, 1)
End If
End If
If (I = 2 And J = 1) Then
Call LDorLDI(I, J)
If Matrix(I, J + 4) = "━" Then
Call Procedure(I, J + 5)
ElseIf Matrix(I, J + 4) = "┳" Then
I = I + 2
While Matrix(I, J) = "┃"
I = I + 2
Wend
Call Procedure(I, J)
End If
End If
If (I = 2 And J > 1 And J < Arr(I)) Then
If Matrix(I, J - 1) = "━" Then
Call ANDorANI(I, J)
If Matrix(I, J + 4) = "┳" Then
A = I
I = I + 2
While (Matrix(I, J + 4) = "┃" Or Matrix(I, J + 4) = "┣")
I = I + 2
Wend
If Matrix(I, J + 4) = "┛" Or Matrix(I, J + 4) = "┻" Or Matrix(I, J + 4) = "╋" Or Matrix(I, J + 4) = "┫" Then
While (J > 5 And (Matrix(I, J - 1) = "━" Or Matrix(I, J - 1) = "┳"))
J = J - 5
Wend
Call Procedure(I, J)
ElseIf Matrix(I, J + 4) = "┗" Then
I = A
Call Procedure(I, J + 5)
End If
Else
Call Procedure(I, J + 5)
End If
Else 'Matrix(I, J - 1) = "┳"(其中 I=2)
If Matrix(I, J + 4) = "━" Then
B = J + 5
While Matrix(I, B - 1) = "━" And B < Arr(I)
B = B + 5
Wend
If Matrix(I, B - 1) = "━" Then
Call ANDorANI(I, J)
Call Procedure(I, J + 5)
Else
A = I
I = I + 2
While (Matrix(I, J - 1) = "┃" Or Matrix(I, J - 1) = "┫")
I = I + 2
Wend
If Matrix(I, J - 1) = "┛" Then
I = A
Call ANDorANI(I, J)
Call Procedure(I, J + 5)
Else
I = A
Call LDorLDI(I, J)
Call Procedure(I, J + 5)
End If
End If
Else 'Matrix(I, J + 4) = "┳"
A = I
I = I + 2
While (Matrix(I, J - 1) = "┫" Or Matrix(I, J - 1) = "┃")
I = I + 2
Wend
If Matrix(I, J - 1) <> "┛" Then
C = I
I = A
Call LDorLDI(I, J)
I = C
Call Procedure(I, J)
Else
I = A
J = J
Call ANDorANI(I, J)
I = A + 2
J = J + 5
While (Matrix(I, J - 1) = "┃" Or Matrix(I, J - 1) = "┣")
I = I + 2
Wend
If Matrix(I, J - 1) = "┛" Or Matrix(I, J - 1) = "┻" Or Matrix(I, J - 1) = "╋" Or Matrix(I, J - 1) = "┫" Then
J = J - 5
While (Matrix(I, J - 1) = "━" Or Matrix(I, J - 1) = "┳")
J = J - 5
Wend
Call Procedure(I, J)
End If
End If
End If
End If
End If
If (I > 2 And J = 1) Then '处理非第一行,第一列元件
Select Case Matrix(I, J + 4)
Case "┫", "╋"
Call ORorORI(I, J)
Call Procedure(I + 2, J)
Case "┣", "┃"
Call Procedure(I + 2, J)
Case "━"
If Matrix(I, J + 6) <> "━" Then
Call LDorLDI(I, J)
Else '其后没有元件了
B = J
J = J + 5
While (Matrix(I, J - 1) = "━" And J < (Arr(I)))
J = J + 5
Wend
If Matrix(I, J - 1) = "━" Then
J = B
Call LDorLDI(I, J)
ElseIf Matrix(I, J - 1) = "┛" Or Matrix(I, J - 1) = "┻" Or Matrix(I, J - 1) = "╋" Or Matrix(I, J - 1) = "┫" Then
J = B
Call ORorORI(I, J)
End If
End If
Call Procedure(I, J + 5)
Case "┳"
Call LDorLDI(I, J)
Call Procedure(I + 2, J)
Case "┻", "┛"
Call ORorORI(I, J)
I = I - 2
While (Matrix(I, J + 4) <> "┳")
I = I - 2
Wend
Call Procedure(I, J + 5)
End Select
End If
If (I > 2 And J > 5 And J < Arr(I)) Then '处理非第一行,非第一列元件
If Matrix(I, J - 1) = "┳" Then
If Matrix(I, J + 4) = "┳" Then
A = I
I = I + 2
While (Matrix(I, J - 1) = "┫" Or Matrix(I, J - 1) = "┃")
I = I + 2
Wend
If Matrix(I, J - 1) = "┻" Or Matrix(I, J - 1) = "╋" Then
I = A
Call LDorLDI(I, J)
Call Procedure(I + 2, J)
ElseIf Matrix(I, J - 1) = "┛" Then
I = A
Call ANDorANI(I, J)
I = I + 2
While (Matrix(I, J + 4) = "┣" Or Matrix(I, J + 4) = "┃")
I = I + 2
Wend
If Matrix(I, J + 4) = "┛" Or Matrix(I, J + 4) = "┻" Or Matrix(I, J + 4) = "╋" Or Matrix(I, J + 4) = "┫" Then
While (J > 5) And (Matrix(I, J - 1) = "┳" Or Matrix(I, J - 1) = "━")
J = J - 5
Wend
Call Procedure(I, J)
Else
I = A
Call Procedure(I, J + 5)
End If
End If
ElseIf Matrix(I, J + 4) = "━" Then
If Matrix(I, J + 7) = "━" Then
Call ANDorANI(I, J)
Else
B = J
J = J + 5
While (Matrix(I, J + 4) = "━" And J < (Arr(I)))
J = J + 5
Wend
If Matrix(I, J + 4) <> "━" Then
J = B
Call LDorLDI(I, J)
Else
J = B
Call ANDorANI(I, J)
End If
End If
Call Procedure(I, J + 5)
ElseIf Matrix(I, J + 4) = "┫" Or Matrix(I, J + 4) = "╋" Then
A = I
I = I + 2
While (Matrix(I, J - 1) = "┫" Or Matrix(I, J - 1) = "┃")
I = I + 2
Wend
If Matrix(I, J - 1) = "┻" Or Matrix(I, J - 1) = "╋" Then
I = A
Call LDorLDI(I, J)
Call Procedure(I + 2, J)
ElseIf Matrix(I, J - 1) = "┛" Then
I = A
Call ANDorANI(I, J)
I = I + 2
While (Matrix(I, J + 4) = "┣" Or Matrix(I, J + 4) = "┃")
I = I + 2
Wend
If Matrix(I, J + 4) = "┛" Or Matrix(I, J + 4) = "┻" Or Matrix(I, J + 4) = "╋" Or Matrix(I, J + 4) = "┫" Then
While (J > 5) And (Matrix(I, J - 1) = "┳" Or Matrix(I, J - 1) = "━")
J = J - 5
Wend
Call Procedure(I, J)
Else
I = A - 2
While Matrix(I, J + 4) <> "┳" And (Matrix(I, J + 4) = "┃" Or Matrix(I, J + 4) = "┫")
I = I - 2
Wend
Call Procedure(I, J + 5)
End If
End If
End If
End If
If Matrix(I, J - 1) = "━" Then
If Matrix(I, J + 2) <> "━" Then
Call ANDorANI(I, J)
End If
Select Case Matrix(I, J + 4)
Case "━"
Call Procedure(I, J + 5)
Case "┳"
A = I
I = I + 2
While (Matrix(I, J + 4) = "┣" Or Matrix(I, J + 4) = "┃")
I = I + 2
Wend
If Matrix(I, J + 4) = "┛" Or Matrix(I, J + 4) = "┻" Or Matrix(I, J + 4) = "╋" Or Matrix(I, J + 4) = "┫" Then
While (J > 5) And (Matrix(I, J - 1) = "┳" Or Matrix(I, J - 1) = "━")
J = J - 5
Wend
Call Procedure(I, J)
Else
I = A
Call Procedure(I, J + 5)
End If
Case "┫", "╋"
If Matrix(I, J + 2) <> "━" Then
Call ORB(I, J + 5, I - 2, J + 5, I, J, 0)
End If
I = I + 2
While (Matrix(I, J + 4) = "┣" Or Matrix(I, J + 4) = "┃")
I = I + 2
Wend
If Matrix(I, J + 4) = "┛" Or Matrix(I, J + 4) = "┻" Or Matrix(I, J + 4) = "╋" Or Matrix(I, J + 4) = "┫" Then
While (J > 5) And (Matrix(I, J - 1) = "┳" Or Matrix(I, J - 1) = "━")
J = J - 5
Wend
Call Procedure(I, J)
End If
Case "┻", "┛"
A = 0 '求此行上元件个数
B = 3
While B < J + 5
If Matrix(I, B) <> "━" Then
A = A + 1
End If
B = B + 5
Wend
If A > 1 Then
Call ORB(I, J + 5, I - 2, J + 5, I, J, 0)
End If
I = I - 2
While Matrix(I, J + 4) <> "┳" And (Matrix(I, J + 4) = "┫" Or Matrix(I, J + 4) = "┃" Or Matrix(I, J + 4) = "╋")
I = I - 2
Wend
If Matrix(I, J + 4) = "┳" Then
Call Procedure(I, J + 5)
End If
End Select
End If
If Matrix(I, J - 1) = "╋" Then
If Matrix(I, J + 4) = "┻" Or Matrix(I, J + 4) = "┛" Then
Call ORorORI(I, J)
I = I - 2
While (Matrix(I, J - 1) = "┫" Or Matrix(I, J - 1) = "┃")
I = I - 2
Wend
If Matrix(I, J - 1) = "┳" Then
Call Procedure(I, J)
End If
Else
B = J
J = J + 5
While (Matrix(I, J - 1) = "━" And J <> Arr(I))
J = J + 5
Wend
If J = Arr(I) Then
J = B
Call ANDorANI(I, J)
Call Procedure(I, J + 5)
ElseIf Matrix(I, J - 1) = "┳" Or Matrix(I, J - 1) = "╋" Then
C = J
J = B
Call LDorLDI(I, J)
If C <> J + 5 Then
Call Procedure(I, J + 5)
Else
I = I + 2
While (Matrix(I, J - 1) = "┫" Or Matrix(I, J - 1) = "┃")
I = I + 2
Wend
Call Procedure(I, J)
End If
ElseIf Matrix(I, J - 1) = "┻" Or Matrix(I, J - 1) = "┛" Then
C = J
J = B
If C <> J + 5 Then
Call LDorLDI(I, J)
Call Procedure(I, J + 5)
Else
Call ANDorANI(I, J)
J = C
I = I - 2
While (Matrix(I, J - 1) = "┫" Or Matrix(I, J - 1) = "┃" Or Matrix(I, J - 1) = "╋")
I = I - 2
Wend
If Matrix(I, J - 1) = "┳" Then
Call Procedure(I, J)
End If
End If
End If
End If
End If
If Matrix(I, J - 1) = "┗" Then
If Matrix(I, J + 4) = "┻" Or Matrix(I, J + 4) = "┛" Then
Call ORorORI(I, J)
I = I - 2
While (Matrix(I, J + 4) = "┫" Or Matrix(I, J + 4) = "┃" Or Matrix(I, J + 4) = "╋")
I = I - 2
Wend
If Matrix(I, J + 4) = "┳" Then
Call Procedure(I, J + 5)
End If
ElseIf Matrix(I, J + 4) = "┫" Or Matrix(I, J + 4) = "╋" Then
Call ORorORI(I, J)
I = I + 2
While (Matrix(I, J + 4) = "┣" Or Matrix(I, J + 4) = "┃")
I = I + 2
Wend
While (Matrix(I, J - 1) = "┳" Or Matrix(I, J - 1) = "━")
J = J - 5
Wend
Call Procedure(I, J)
Else
If Matrix(I, J + 6) <> "━" Then
Call LDorLDI(I, J)
Else '其后没有元件了
B = J
J = J + 5
While (Matrix(I, J - 1) = "━" And J < (Arr(I)))
J = J + 5
Wend
If Matrix(I, J - 1) = "━" Then
If J = Arr(I) Then
J = B
Call ANDorANI(I, J)
Else
Call LDorLDI(I, J)
End If
ElseIf Matrix(I, J - 1) = "┛" Or Matrix(I, J - 1) = "┻" Or Matrix(I, J - 1) = "╋" Or Matrix(I, J - 1) = "┫" Then
J = B
Call ORorORI(I, J)
End If
End If
Call Procedure(I, J + 5)
End If
End If
If Matrix(I, J - 1) = "┻" Then
If Matrix(I, J + 4) = "┻" Or Matrix(I, J + 4) = "┛" Then
Call ORorORI(I, J)
Call ANB(I, J + 5, I - 2, J + 5, I, J, 0)
I = I - 2
While (Matrix(I, J + 4) = "┫" Or Matrix(I, J + 4) = "┃" Or Matrix(I, J + 4) = "╋")
I = I - 2
Wend
If Matrix(I, J + 4) = "┳" Then
Call Procedure(I, J + 5)
End If
ElseIf Matrix(I, J + 4) = "┫" Or Matrix(I, J + 4) = "╋" Then
Call ORorORI(I, J)
Call ANB(I, J + 5, I - 2, J + 5, I, J, 0)
I = I + 2
While (Matrix(I, J + 4) = "┣" Or Matrix(I, J + 4) = "┃")
I = I + 2
Wend
While (Matrix(I, J - 1) = "┳" Or Matrix(I, J - 1) = "━")
J = J - 5
Wend
Call Procedure(I, J)
Else
If Matrix(I, J + 6) <> "━" Then
Call LDorLDI(I, J)
Else '其后没有元件了
B = J
J = J + 5
While (Matrix(I, J - 1) = "━" And J < (Arr(I)))
J = J + 5
Wend
If Matrix(I, J - 1) = "━" Then
If J = Arr(I) Then
J = B
Call ANDorANI(I, J)
Else
Call LDorLDI(I, J)
End If
ElseIf Matrix(I, J - 1) = "┛" Or Matrix(I, J - 1) = "┻" Or Matrix(I, J - 1) = "╋" Or Matrix(I, J - 1) = "┫" Then
J = B
Call ORorORI(I, J)
End If
End If
Call Procedure(I, J + 5)
End If
End If
If Matrix(I, J - 1) = "┣" Then
Select Case Matrix(I, J + 4)
Case "━"
If Matrix(I, J + 6) <> "━" Then
Call LDorLDI(I, J)
Else '其后没有元件了
B = J
J = J + 5
While (Matrix(I, J - 1) = "━" And J < (Arr(I)))
J = J + 5
Wend
If Matrix(I, J - 1) = "━" Then
If J = Arr(I) Then
J = B
Call ANDorANI(I, J)
Else
Call LDorLDI(I, J)
End If
ElseIf Matrix(I, J - 1) = "┛" Or Matrix(I, J - 1) = "┻" Or Matrix(I, J - 1) = "╋" Or Matrix(I, J - 1) = "┫" Then
J = B
Call ORorORI(I, J)
End If
End If
Call Procedure(I, J + 5)
Case "┳"
Call LDorLDI(I, J)
I = I + 2
While (Matrix(I, J + 4) = "┣" Or Matrix(I, J + 4) = "┃")
I = I + 2
Wend
If Matrix(I, J + 4) = "┛" Or Matrix(I, J + 4) = "┻" Or Matrix(I, J + 4) = "╋" Or Matrix(I, J + 4) = "┫" Then
While (J > 5) And (Matrix(I, J - 1) = "┳" Or Matrix(I, J - 1) = "━")
J = J - 5
Wend
Call Procedure(I, J)
End If
Case "┫", "╋"
Call ORorORI(I, J)
I = I + 2
While (Matrix(I, J + 4) = "┣" Or Matrix(I, J + 4) = "┃")
I = I + 2
Wend
If Matrix(I, J + 4) = "┛" Or Matrix(I, J + 4) = "┻" Or Matrix(I, J + 4) = "╋" Or Matrix(I, J + 4) = "┫" Then
While (J > 5) And (Matrix(I, J - 1) = "┳" Or Matrix(I, J - 1) = "━")
J = J - 5
Wend
Call Procedure(I, J)
End If
Case "┻", "┛"
Call ORorORI(I, J)
I = I - 2
While Matrix(I, J + 4) <> "┳" And (Matrix(I, J + 4) = "┫" Or Matrix(I, J + 4) = "┃" Or Matrix(I, J + 4) = "╋")
I = I - 2
Wend
If Matrix(I, J + 4) = "┳" Then
Call Procedure(I, J + 5)
End If
End Select
End If
End If
End If
End Sub
Public Sub LDorLDI(I1 As Integer, J1 As Integer)
If Visited(I1, J1) = 0 Then
Visited(I1, J1) = 1
If Matrix(I1, J1 + 2) = " " Then
S = S & "LD " & Matrix(I1 - 1, J1 + 1) & Chr(13) & Chr(10)
ElseIf Matrix(I1, J1 + 2) = "╱" Then
S = S & "LDI " & Matrix(I1 - 1, J1 + 1) & Chr(13) & Chr(10)
End If
End If
End Sub
Public Sub ANDorANI(I1 As Integer, J1 As Integer)
If Visited(I1, J1) = 0 Then
Visited(I1, J1) = 1
If Matrix(I1, J1 + 2) = " " Then
S = S & "AND " & Matrix(I1 - 1, J1 + 1) & Chr(13) & Chr(10)
ElseIf Matrix(I1, J1 + 2) = "╱" Then
S = S & "ANI " & Matrix(I1 - 1, J1 + 1) & Chr(13) & Chr(10)
End If
End If
End Sub
Public Sub ORorORI(I1 As Integer, J1 As Integer)
If Visited(I1, J1) = 0 Then
Visited(I1, J1) = 1
If Matrix(I1, J1 + 2) = " " Then
S = S & "OR " & Matrix(I1 - 1, J1 + 1) & Chr(13) & Chr(10)
ElseIf Matrix(I1, J1 + 2) = "╱" Then
S = S & "ORI " & Matrix(I1 - 1, J1 + 1) & Chr(13) & Chr(10)
End If
End If
End Sub
Public Sub OUT(I1 As Integer, J1 As Integer)
If Visited(I1, J1) = 0 Then
Visited(I1, J1) = 1
S = S & "OUT " & Matrix(I1 - 1, 53) & Chr(13) & Chr(10)
End If
End Sub
Public Sub ANB(I1 As Integer, J1 As Integer, I2 As Integer, J2 As Integer, I3 As Integer, J3 As Integer, signal As Integer)
If (signal = 1 And BlockVisited(I2, J3) = 0) Or (signal = 0 And BlockVisited(I2 + 2, J3) = 0) Then
If signal = 0 Then
BlockVisited(I2 + 2, J3) = 1
Else
BlockVisited(I2, J3) = 1
End If
Dim x1, y1, x2, y2, x3, y3, x4, y4, m1, n1, k(1 To 20), p, flag As Integer
flag = 0
x4 = I3 - 2
y4 = J3
While (Matrix(x4, y4 - 1) = "╋" Or Matrix(x4, y4 - 1) <> "┳")
x4 = x4 - 2
Wend
y2 = J2
If I2 > x4 And signal = 0 Then
x2 = I2 - 2
While x2 > x4 And Matrix(I2, y2 - 1) <> "┳"
x2 = x2 - 2
Wend
Else
x2 = I2
End If
If x2 = x4 Then
x3 = I3
y3 = J3
While (Matrix(x3, y3 - 1) = "━" Or Matrix(x3, y3 - 1) = "┻")
y3 = y3 - 5
Wend
x1 = x2
y1 = y2 - 5
While (y1 > y4) And (Matrix(x1, y1 - 1) = "━" And Matrix(x1, y1 - 1) <> "┳")
y1 = y1 - 5
Wend
If y1 = y4 Then
While (Matrix(x1, y1 - 1) = "━" Or Matrix(x1, y1 - 1) = "┳")
y1 = y1 - 5
Wend
If y1 = y3 Then
x5 = x1 + 2
y5 = y1
If y5 <> 1 Then
While (Matrix(x5, y5 - 1) = "┃" Or Matrix(x5, y5 - 1) = "┣")
x5 = x5 + 2
Wend
Else
While x5 < x3
x5 = x5 + 2
Wend
End If
If x5 = x3 Then
S = S & "ANB " & Chr(13) & Chr(10)
End If
End If
End If
End If
If Matrix(x2, y2 - 1) = "┫" Or Matrix(x2, y2 - 1) = "╋" Then
a1 = I2: a2 = J2: a3 = I3: a4 = J3
I2 = x2: J2 = y2: I3 = x3: J3 = y3
Call ORB(I1, J1, I2, J2, I3, J3, 1)
I2 = a1: J2 = a2: I3 = a3: J3 = a4
End If
End If
End Sub
Public Sub ORB(I1 As Integer, J1 As Integer, I2 As Integer, J2 As Integer, I3 As Integer, J3 As Integer, signal As Integer)
'(I1,J1)是元件尾部P处坐标,(I2,J2)是竖对P点坐标,(I3,J3)是横对P点坐标,
'signal为0表示是从PROCDURE()调用,为1表示从ANB()调用
If (signal = 1 And BlockVisited(I2, J3) = 0) Or (signal = 0 And BlockVisited(I2 + 2, J3) = 0) Then
If signal = 0 Then
BlockVisited(I2 + 2, J3) = 1
Else
BlockVisited(I2, J3) = 1
End If
Dim x1, y1, x2, y2, x3, y3, x4, y4, m1, n1, k(1 To 20), p, flag As Integer
flag = 0
If signal = 1 Then
x2 = I2 - 2
Else
x2 = I2
End If
y2 = J2
x3 = I3
y3 = J3
While (Matrix(x3, y3 - 1) = "━")
y3 = y3 - 5
Wend
While (x2 >= 2)
x1 = x2
y1 = y2 - 5
While (Matrix(x1, y1 - 1) = "━" Or Matrix(x1, y1 - 1) = "┳")
y1 = y1 - 5
If y1 = y3 Then
GoTo p1
End If
Wend
x2 = x2 - 2
Wend
p1: x4 = x1 + 2
y4 = y1
While x4 < x3 And ((Matrix(x4, y4 - 1) = "┃" Or Matrix(x4, y4 - 1) = "┣") Or (y4 = 1))
x4 = x4 + 2
Wend
If x4 = x3 Then
For m1 = x1 To x3 Step 2
For p = 1 To 20 '初始化
k(p) = 1
Next p
p = 1
For n1 = y1 + 5 To y2 - 5 Step 5
If (Matrix(m1, n1 - 1) = "━" Or Matrix(m1, n1 - 1) = "┻") Then
GoTo p2
Else
k(p) = 2
p = p + 1
GoTo p3
End If
p2: Next n1
If k(p) = 1 Then '有一行满足要求,则退出
GoTo p4
End If
p3: Next m1
p4: For p = 1 To 20
If k(p) = 2 Then
flag = 1
End If
Next p
If flag = 0 Then
S = S & "ORB " & Chr(13) & Chr(10)
End If
End If
If Matrix(x3, y3 - 1) = "┻" Then
a1 = I2: a2 = J2: a3 = I3: a4 = J3
I2 = x2
J2 = y2
I3 = x3
J3 = y3
Call ANB(I1, J1, I2, J2, I3, J3, 1)
I2 = a1: J2 = a2: I3 = a3: J3 = a4
End If
End If
End Sub
Private Sub Command1_Click()
Command1.Enabled = False
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = True
Command6.Enabled = True
Command7.Enabled = True
Command8.Enabled = True
Command9.Enabled = True
Command10.Enabled = True
Command11.Enabled = False
Command12.Enabled = True
Command13.Enabled = False
Command15.Enabled = True
Command16.Enabled = True
Command18.Enabled = True
Command19.Enabled = False
Command21.Enabled = True
Command22.Enabled = False
If (sizeJ = 1) Then '加入梯形图的左边框线
If sizeI > 2 Then
I = sizeI - 1
While Matrix(I, sizeJ) = " "
Matrix(I, sizeJ) = "┃"
I = I - 1
Wend
Else
Matrix(sizeI - 1, sizeJ) = "┃"
End If
End If
X = InputBox("请输入器件名称(限三个字符,如 X01 )", "输入器件名称") '输入器件名称
While (Len(X) <> 3)
MsgBox "输入器件名称不合要求,请重新输入器件名称"
X = InputBox("请输入器件名称(限三个字符,如 X01 )", "输入器件名称")
Wend
Arr(sizeI) = Arr(sizeI) + 6
Matrix(sizeI, sizeJ) = "┣"
Matrix(sizeI, sizeJ + 1) = "┫"
Matrix(sizeI, sizeJ + 2) = " "
Matrix(sizeI, sizeJ + 3) = "┣"
Matrix(sizeI, sizeJ + 4) = "━"
Matrix(sizeI - 1, sizeJ + 1) = X
Matrix(sizeI - 1, sizeJ + 2) = " "
sizeJ = sizeJ + 5
Z = M
M = 5
N = k
k = 1
Call Fresh
End Sub
Private Sub Command2_Click()
Command1.Enabled = False
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = True
Command6.Enabled = True
Command7.Enabled = True
Command8.Enabled = True
Command9.Enabled = True
Command10.Enabled = True
Command11.Enabled = False
Command12.Enabled = True
Command13.Enabled = False
Command15.Enabled = True
Command16.Enabled = True
Command18.Enabled = True
Command19.Enabled = False
Command21.Enabled = True
Command22.Enabled = False
If (sizeJ = 1) Then '加入梯形图的左边框线
If sizeI > 2 Then
I = sizeI - 1
While Matrix(I, sizeJ) = " "
Matrix(I, sizeJ) = "┃"
I = I - 1
Wend
Else
Matrix(sizeI - 1, sizeJ) = "┃"
End If
End If
X = InputBox("请输入器件名称(限三个字符,如 X01 )", "输入器件名称") '输入器件名称
While (Len(X) <> 3)
MsgBox "输入器件名称不合要求,请重新输入器件名称"
X = InputBox("请输入器件名称(限三个字符,如 X01 )", "输入器件名称")
Wend
Arr(sizeI) = Arr(sizeI) + 6
Matrix(sizeI, sizeJ) = "┣"
Matrix(sizeI, sizeJ + 1) = "┫"
Matrix(sizeI, sizeJ + 2) = "╱"
Matrix(sizeI, sizeJ + 3) = "┣"
Matrix(sizeI, sizeJ + 4) = "━"
Matrix(sizeI - 1, sizeJ + 1) = X
Matrix(sizeI - 1, sizeJ + 2) = " "
sizeJ = sizeJ + 5
Z = M
M = 5
N = k
k = 2
Call Fresh
End Sub
Private Sub Command3_Click()
Command1.Enabled = False
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = True
Command6.Enabled = True
Command7.Enabled = True
Command8.Enabled = True
Command9.Enabled = True
Command10.Enabled = True
Command11.Enabled = False
Command12.Enabled = True
Command13.Enabled = False
Command15.Enabled = True
Command16.Enabled = True
Command18.Enabled = True
Command19.Enabled = False
Command21.Enabled = True
Command22.Enabled = False
If (sizeJ = 1) Then '加入梯形图的左边框线
If sizeI > 2 Then
I = sizeI - 1
While Matrix(I, sizeJ) = " "
Matrix(I, sizeJ) = "┃"
I = I - 1
Wend
Else
Matrix(sizeI - 1, sizeJ) = "┃"
End If
End If
X = InputBox("请输入器件名称(限三个字符,如 X01 )", "输入器件名称") '输入器件名称
While (Len(X) <> 3)
MsgBox "输入器件名称不合要求,请重新输入器件名称"
X = InputBox("请输入器件名称(限三个字符,如 X01 )", "输入器件名称")
Wend
Arr(sizeI) = Arr(sizeI) + 6
Matrix(sizeI, sizeJ) = "┣"
Matrix(sizeI, sizeJ + 1) = "┫"
Matrix(sizeI, sizeJ + 2) = " "
Matrix(sizeI, sizeJ + 3) = "┣"
Matrix(sizeI, sizeJ + 4) = "┛"
Matrix(sizeI - 1, sizeJ + 1) = X
Matrix(sizeI - 1, sizeJ + 2) = " "
I = sizeI - 1
While (Matrix(I, sizeJ + 4) = " ")
Matrix(I, sizeJ + 4) = "┃"
I = I - 1
Wend
If Matrix(I, sizeJ + 4) = "━" Then
Matrix(I, sizeJ + 4) = "┳"
ElseIf Matrix(I, sizeJ + 4) = "┻" Then
Matrix(I, sizeJ + 4) = "╋"
ElseIf Matrix(I, sizeJ + 4) = "┛" Then
Matrix(I, sizeJ + 4) = "┫"
ElseIf Matrix(I, sizeJ + 4) = "┗" Then
Matrix(I, sizeJ + 4) = "┣"
End If
sizeJ = sizeJ + 5
Z = M
M = 5
N = k
k = 3
Call Fresh
End Sub
Private Sub Command4_Click()
Command1.Enabled = False
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = True
Command6.Enabled = True
Command7.Enabled = True
Command8.Enabled = True
Command9.Enabled = True
Command10.Enabled = True
Command11.Enabled = False
Command12.Enabled = True
Command13.Enabled = False
Command15.Enabled = True
Command16.Enabled = True
Command18.Enabled = True
Command19.Enabled = False
Command21.Enabled = True
Command22.Enabled = False
If (sizeJ = 1) Then '加入梯形图的左边框线
If sizeI > 2 Then
I = sizeI - 1
While Matrix(I, sizeJ) = " "
Matrix(I, sizeJ) = "┃"
I = I - 1
Wend
Else
Matrix(sizeI - 1, sizeJ) = "┃"
End If
End If
X = InputBox("请输入器件名称(限三个字符,如 X01 )", "输入器件名称") '输入器件名称
While (Len(X) <> 3)
MsgBox "输入器件名称不合要求,请重新输入器件名称"
X = InputBox("请输入器件名称(限三个字符,如 X01 )", "输入器件名称")
Wend
Arr(sizeI) = Arr(sizeI) + 6
Matrix(sizeI, sizeJ) = "┣"
Matrix(sizeI, sizeJ + 1) = "┫"
Matrix(sizeI, sizeJ + 2) = "╱"
Matrix(sizeI, sizeJ + 3) = "┣"
Matrix(sizeI, sizeJ + 4) = "┛"
Matrix(sizeI - 1, sizeJ + 1) = X
Matrix(sizeI - 1, sizeJ + 2) = " "
I = sizeI - 1
While (Matrix(I, sizeJ + 4) = " ")
Matrix(I, sizeJ + 4) = "┃"
I = I - 1
Wend
If Matrix(I, sizeJ + 4) = "━" Then
Matrix(I, sizeJ + 4) = "┳"
ElseIf Matrix(I, sizeJ + 4) = "┻" Then
Matrix(I, sizeJ + 4) = "╋"
ElseIf Matrix(I, sizeJ + 4) = "┛" Then
Matrix(I, sizeJ + 4) = "┫"
ElseIf Matrix(I, sizeJ + 4) = "┗" Then
Matrix(I, sizeJ + 4) = "┣"
End If
sizeJ = sizeJ + 5
Z = M
M = 5
N = k
k = 4
Call Fresh
End Sub
Private Sub Command5_Click()
If Command10.Enabled = False Then
Command10.Enabled = True
End If
If Matrix(sizeI, sizeJ - 1) = "┛" Then
Matrix(sizeI, sizeJ - 1) = "┻"
ElseIf Matrix(sizeI, sizeJ - 1) = "┫" Then
Matrix(sizeI, sizeJ - 1) = "╋"
End If
X = InputBox("请输入器件名称(限三个字符,如 X01 )", "输入器件名称") '输入器件名称
While (Len(X) <> 3)
MsgBox "输入器件名称不合要求,请重新输入器件名称"
X = InputBox("请输入器件名称(限三个字符,如 X01 )", "输入器件名称")
Wend
Arr(sizeI) = Arr(sizeI) + 5
Matrix(sizeI, sizeJ) = "━"
Matrix(sizeI, sizeJ + 1) = "┥"
Matrix(sizeI, sizeJ + 2) = " "
Matrix(sizeI, sizeJ + 3) = "┝"
Matrix(sizeI, sizeJ + 4) = "━"
Matrix(sizeI - 1, sizeJ + 1) = X
Matrix(sizeI - 1, sizeJ + 2) = " "
If k = 18 Then '如果前边一个元件是空位键
Matrix(sizeI, sizeJ - 1) = "┗"
I = sizeI - 1
While (Matrix(I, sizeJ - 1) = " ")
Matrix(I, sizeJ - 1) = "┃"
I = I - 1
Wend
If Matrix(I, sizeJ - 1) = "━" Then
Matrix(I, sizeJ - 1) = "┳"
ElseIf Matrix(I, sizeJ - 1) = "┻" Then
Matrix(I, sizeJ - 1) = "╋"
End If
End If
sizeJ = sizeJ + 5
Z = M
M = 5
N = k
k = 5
Call Fresh
Command9.Enabled = True
Command21.Enabled = True
End Sub
Private Sub Command6_Click()
If Command10.Enabled = False Then
Command10.Enabled = True
End If
If Matrix(sizeI, sizeJ - 1) = "┛" Then
Matrix(sizeI, sizeJ - 1) = "┻"
ElseIf Matrix(sizeI, sizeJ - 1) = "┫" Then
Matrix(sizeI, sizeJ - 1) = "╋"
End If
X = InputBox("请输入器件名称(限三个字符,如 X01 )", "输入器件名称") '输入器件名称
While (Len(X) <> 3)
MsgBox "输入器件名称不合要求,请重新输入器件名称"
X = InputBox("请输入器件名称(限三个字符,如 X01 )", "输入器件名称")
Wend
Arr(sizeI) = Arr(sizeI) + 5
Matrix(sizeI, sizeJ) = "━"
Matrix(sizeI, sizeJ + 1) = "┥"
Matrix(sizeI, sizeJ + 2) = "╱"
Matrix(sizeI, sizeJ + 3) = "┝"
Matrix(sizeI, sizeJ + 4) = "━"
Matrix(sizeI - 1, sizeJ + 1) = X
Matrix(sizeI - 1, sizeJ + 2) = " "
If k = 18 Then '如果前边一个元件是空位键
Matrix(sizeI, sizeJ - 1) = "┗"
I = sizeI - 1
While (Matrix(I, sizeJ - 1) = " ")
Matrix(I, sizeJ - 1) = "┃"
I = I - 1
Wend
If Matrix(I, sizeJ - 1) = "━" Then
Matrix(I, sizeJ - 1) = "┳"
ElseIf Matrix(I, sizeJ - 1) = "┻" Then
Matrix(I, sizeJ - 1) = "╋"
End If
End If
sizeJ = sizeJ + 5
Z = M
M = 5
N = k
k = 6
Call Fresh
Command9.Enabled = True
Command21.Enabled = True
End Sub
Private Sub Command7_Click()
If Command10.Enabled = False Then
Command10.Enabled = True
End If
If Matrix(sizeI, sizeJ - 1) = "┛" Then
Matrix(sizeI, sizeJ - 1) = "┻"
ElseIf Matrix(sizeI, sizeJ - 1) = "┫" Then
Matrix(sizeI, sizeJ - 1) = "╋"
End If
X = InputBox("请输入器件名称(限三个字符,如 X01 )", "输入器件名称") '输入器件名称
While (Len(X) <> 3)
MsgBox "输入器件名称不合要求,请重新输入器件名称"
X = InputBox("请输入器件名称(限三个字符,如 X01 )", "输入器件名称")
Wend
Arr(sizeI) = Arr(sizeI) + 5
Matrix(sizeI, sizeJ) = "━"
Matrix(sizeI, sizeJ + 1) = "┥"
Matrix(sizeI, sizeJ + 2) = " "
Matrix(sizeI, sizeJ + 3) = "┝"
Matrix(sizeI, sizeJ + 4) = "┛"
Matrix(sizeI - 1, sizeJ + 1) = X
Matrix(sizeI - 1, sizeJ + 2) = " "
I = sizeI - 1
While (Matrix(I, sizeJ + 4) = " ")
Matrix(I, sizeJ + 4) = "┃"
I = I - 1
Wend
If Matrix(I, sizeJ + 4) = "━" Then
Matrix(I, sizeJ + 4) = "┳"
ElseIf Matrix(I, sizeJ + 4) = "┻" Then
Matrix(I, sizeJ + 4) = "╋"
ElseIf Matrix(I, sizeJ + 4) = "┛" Then
Matrix(I, sizeJ + 4) = "┫"
ElseIf Matrix(I, sizeJ + 4) = "┗" Then
Matrix(I, sizeJ + 4) = "┣"
End If
If k = 18 Then '如果前边一个元件是空位键
Matrix(sizeI, sizeJ - 1) = "┗"
I = sizeI - 1
While (Matrix(I, sizeJ - 1) = " ")
Matrix(I, sizeJ - 1) = "┃"
I = I - 1
Wend
If Matrix(I, sizeJ - 1) = "━" Then
Matrix(I, sizeJ - 1) = "┳"
ElseIf Matrix(I, sizeJ - 1) = "┻" Then
Matrix(I, sizeJ - 1) = "╋"
End If
End If
sizeJ = sizeJ + 5
Z = M
M = 5
N = k
k = 7
Call Fresh
Command9.Enabled = True
Command11.Enabled = True
Command21.Enabled = True
End Sub
Private Sub Command8_Click()
If Command10.Enabled = False Then
Command10.Enabled = True
End If
If Matrix(sizeI, sizeJ - 1) = "┛" Then
Matrix(sizeI, sizeJ - 1) = "┻"
ElseIf Matrix(sizeI, sizeJ - 1) = "┫" Then
Matrix(sizeI, sizeJ - 1) = "╋"
End If
X = InputBox("请输入器件名称(限三个字符,如 X01 )", "输入器件名称") '输入器件名称
While (Len(X) <> 3)
MsgBox "输入器件名称不合要求,请重新输入器件名称"
X = InputBox("请输入器件名称(限三个字符,如 X01 )", "输入器件名称")
Wend
Arr(sizeI) = Arr(sizeI) + 5
Matrix(sizeI, sizeJ) = "━"
Matrix(sizeI, sizeJ + 1) = "┥"
Matrix(sizeI, sizeJ + 2) = "╱"
Matrix(sizeI, sizeJ + 3) = "┝"
Matrix(sizeI, sizeJ + 4) = "┛"
Matrix(sizeI - 1, sizeJ + 1) = X
Matrix(sizeI - 1, sizeJ + 2) = " "
I = sizeI - 1
While (Matrix(I, sizeJ + 4) = " ")
Matrix(I, sizeJ + 4) = "┃"
I = I - 1
Wend
If Matrix(I, sizeJ + 4) = "━" Then
Matrix(I, sizeJ + 4) = "┳"
ElseIf Matrix(I, sizeJ + 4) = "┻" Then
Matrix(I, sizeJ + 4) = "╋"
ElseIf Matrix(I, sizeJ + 4) = "┛" Then
Matrix(I, sizeJ + 4) = "┫"
ElseIf Matrix(I, sizeJ + 4) = "┗" Then
Matrix(I, sizeJ + 4) = "┣"
End If
If k = 18 Then '如果前边一个元件是空位键
Matrix(sizeI, sizeJ - 1) = "┗"
I = sizeI - 1
While (Matrix(I, sizeJ - 1) = " ")
Matrix(I, sizeJ - 1) = "┃"
I = I - 1
Wend
If Matrix(I, sizeJ - 1) = "━" Then
Matrix(I, sizeJ - 1) = "┳"
ElseIf Matrix(I, sizeJ - 1) = "┻" Then
Matrix(I, sizeJ - 1) = "╋"
End If
End If
sizeJ = sizeJ + 5
Z = M
M = 5
N = k
k = 8
Call Fresh
Command9.Enabled = True
Command11.Enabled = True
Command21.Enabled = True
End Sub
Private Sub Command9_Click()
If Command10.Enabled = False Then
Command10.Enabled = True
End If
Arr(sizeI) = sizeJ
If Matrix(sizeI, sizeJ - 1) = "┛" Then '处理字符前端
Matrix(sizeI, sizeJ - 1) = "┻"
ElseIf Matrix(sizeI, sizeJ - 1) = "┫" Then
Matrix(sizeI, sizeJ - 1) = "╋"
End If
For J = sizeJ To 50
Matrix(sizeI, J) = "━" '自动加横线
Next J
p = sizeJ
sizeJ = 51
X = InputBox("请输入器件名称(限三个字符,如 Y01 )", "输入器件名称") '输入器件名称
While (Len(X) <> 3)
MsgBox "输入器件名称不合要求,请重新输入器件名称"
X = InputBox("请输入器件名称(限三个字符,如 Y01 )", "输入器件名称")
Wend
Matrix(sizeI, sizeJ) = "━"
Matrix(sizeI, sizeJ + 1) = "("
Matrix(sizeI, sizeJ + 2) = " "
Matrix(sizeI, sizeJ + 3) = ")"
Matrix(sizeI, sizeJ + 4) = "━"
Matrix(sizeI, sizeJ + 5) = "┫"
sizeJ = sizeJ + 6
Matrix(sizeI - 1, sizeJ - 4) = X
Matrix(sizeI - 1, sizeJ - 3) = " "
If sizeI > 2 Then
I = sizeI - 1
While (Matrix(I, sizeJ - 1) = " ")
Matrix(I, sizeJ - 1) = "┃"
I = I - 1
Wend
Else
Matrix(sizeI - 1, sizeJ - 1) = "┃"
End If
Z = M
M = 6
N = k
k = 9
Call Fresh
Command1.Enabled = False
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
Command9.Enabled = False
Command10.Enabled = True
Command11.Enabled = True
Command12.Enabled = True
Command13.Enabled = True
Command15.Enabled = False
Command16.Enabled = False
Command18.Enabled = False
Command19.Enabled = False
Command21.Enabled = False
Command22.Enabled = False
End Sub
Private Sub Command10_Click()
If M = 5 Then
Select Case k
Case 1
Matrix(sizeI, sizeJ - 5) = " "
Matrix(sizeI, sizeJ - 4) = " "
Matrix(sizeI, sizeJ - 3) = " "
Matrix(sizeI, sizeJ - 2) = " "
Matrix(sizeI, sizeJ - 1) = " "
Matrix(sizeI - 1, sizeJ - 4) = " "
Matrix(sizeI - 1, sizeJ - 3) = " "
Arr(sizeI) = Arr(sizeI) - 6
Case 2
Matrix(sizeI, sizeJ - 5) = " "
Matrix(sizeI, sizeJ - 4) = " "
Matrix(sizeI, sizeJ - 3) = " "
Matrix(sizeI, sizeJ - 2) = " "
Matrix(sizeI, sizeJ - 1) = " "
Matrix(sizeI - 1, sizeJ - 4) = " "
Matrix(sizeI - 1, sizeJ - 3) = " "
Arr(sizeI) = Arr(sizeI) - 6
Case 3
Matrix(sizeI, sizeJ - 5) = " "
Matrix(sizeI, sizeJ - 4) = " "
Matrix(sizeI, sizeJ - 3) = " "
Matrix(sizeI, sizeJ - 2) = " "
Matrix(sizeI, sizeJ - 1) = " "
Matrix(sizeI - 1, sizeJ - 4) = " "
Matrix(sizeI - 1, sizeJ - 3) = " "
I = sizeI - 1
While (Matrix(I, sizeJ - 1) = "┃")
Matrix(I, sizeJ - 1) = " "
I = I - 1
Wend
If Matrix(I, sizeJ - 1) = "┳" Then
Matrix(I, sizeJ - 1) = "━"
ElseIf Matrix(I, sizeJ - 1) = "╋" Then
Matrix(I, sizeJ - 1) = "┻"
ElseIf Matrix(I, sizeJ - 1) = "┫" Then
Matrix(I, sizeJ - 1) = "┛"
End If
Arr(sizeI) = Arr(sizeI) - 6
Case 4
Matrix(sizeI, sizeJ - 5) = " "
Matrix(sizeI, sizeJ - 4) = " "
Matrix(sizeI, sizeJ - 3) = " "
Matrix(sizeI, sizeJ - 2) = " "
Matrix(sizeI, sizeJ - 1) = " "
Matrix(sizeI - 1, sizeJ - 4) = " "
Matrix(sizeI - 1, sizeJ - 3) = " "
I = sizeI - 1
While (Matrix(I, sizeJ - 1) = "┃")
Matrix(I, sizeJ - 1) = " "
I = I - 1
Wend
If Matrix(I, sizeJ - 1) = "┳" Then
Matrix(I, sizeJ - 1) = "━"
ElseIf Matrix(I, sizeJ - 1) = "╋" Then
Matrix(I, sizeJ - 1) = "┻"
ElseIf Matrix(I, sizeJ - 1) = "┫" Then
Matrix(I, sizeJ - 1) = "┛"
End If
Arr(sizeI) = Arr(sizeI) - 6
Case 5
Matrix(sizeI, sizeJ - 5) = " "
Matrix(sizeI, sizeJ - 4) = " "
Matrix(sizeI, sizeJ - 3) = " "
Matrix(sizeI, sizeJ - 2) = " "
Matrix(sizeI, sizeJ - 1) = " "
Matrix(sizeI - 1, sizeJ - 4) = " "
Matrix(sizeI - 1, sizeJ - 3) = " "
If N = 18 Then '如果前边一个元件是空位键
Matrix(sizeI, sizeJ - 6) = " "
I = sizeI - 1
While (Matrix(I, sizeJ - 6) = "┃")
Matrix(I, sizeJ - 1) = " "
I = I - 1
Wend
If Matrix(I, sizeJ - 6) = "┳" Then
Matrix(I, sizeJ - 6) = "━"
ElseIf Matrix(I, sizeJ - 6) = "╋" Then
Matrix(I, sizeJ - 6) = "┻"
End If
End If
If Matrix(sizeI, sizeJ - 6) = "┻" Then
Matrix(sizeI, sizeJ - 6) = "┛"
ElseIf Matrix(sizeI, sizeJ - 6) = "╋" Then
Matrix(sizeI, sizeJ - 6) = "┫"
End If
Arr(sizeI) = Arr(sizeI) - 5
Case 6
Matrix(sizeI, sizeJ - 5) = " "
Matrix(sizeI, sizeJ - 4) = " "
Matrix(sizeI, sizeJ - 3) = " "
Matrix(sizeI, sizeJ - 2) = " "
Matrix(sizeI, sizeJ - 1) = " "
Matrix(sizeI - 1, sizeJ - 4) = " "
Matrix(sizeI - 1, sizeJ - 3) = " "
If N = 18 Then '如果前边一个元件是空位键
Matrix(sizeI, sizeJ - 6) = " "
I = sizeI - 1
While (Matrix(I, sizeJ - 6) = "┃")
Matrix(I, sizeJ - 1) = " "
I = I - 1
Wend
If Matrix(I, sizeJ - 6) = "┳" Then
Matrix(I, sizeJ - 6) = "━"
ElseIf Matrix(I, sizeJ - 6) = "╋" Then
Matrix(I, sizeJ - 6) = "┻"
End If
End If
If Matrix(sizeI, sizeJ - 6) = "┻" Then
Matrix(sizeI, sizeJ - 6) = "┛"
ElseIf Matrix(sizeI, sizeJ - 6) = "╋" Then
Matrix(sizeI, sizeJ - 6) = "┫"
End If
Arr(sizeI) = Arr(sizeI) - 5
Case 7
Matrix(sizeI, sizeJ - 5) = " "
Matrix(sizeI, sizeJ - 4) = " "
Matrix(sizeI, sizeJ - 3) = " "
Matrix(sizeI, sizeJ - 2) = " "
Matrix(sizeI, sizeJ - 1) = " "
Matrix(sizeI - 1, sizeJ - 4) = " "
Matrix(sizeI - 1, sizeJ - 3) = " "
If N = 18 Then '如果前边一个元件是空位键
Matrix(sizeI, sizeJ - 6) = " "
I = sizeI - 1
While (Matrix(I, sizeJ - 6) = "┃")
Matrix(I, sizeJ - 6) = " "
I = I - 1
Wend
If Matrix(I, sizeJ - 6) = "┳" Then
Matrix(I, sizeJ - 6) = "━"
ElseIf Matrix(I, sizeJ - 6) = "╋" Then
Matrix(I, sizeJ - 6) = "┻"
End If
End If
If Matrix(sizeI, sizeJ - 6) = "┻" Then
Matrix(sizeI, sizeJ - 6) = "┛"
ElseIf Matrix(sizeI, sizeJ - 6) = "╋" Then
Matrix(sizeI, sizeJ - 6) = "┫"
End If
I = sizeI - 1
While (Matrix(I, sizeJ - 1) = "┃")
Matrix(I, sizeJ - 1) = " "
I = I - 1
Wend
If Matrix(I, sizeJ - 1) = "┳" Then
Matrix(I, sizeJ - 1) = "━"
ElseIf Matrix(I, sizeJ - 1) = "╋" Then
Matrix(I, sizeJ - 1) = "┻"
ElseIf Matrix(I, sizeJ - 1) = "┫" Then
Matrix(I, sizeJ - 1) = "┛"
End If
Arr(sizeI) = Arr(sizeI) - 5
Case 8
Matrix(sizeI, sizeJ - 5) = " "
Matrix(sizeI, sizeJ - 4) = " "
Matrix(sizeI, sizeJ - 3) = " "
Matrix(sizeI, sizeJ - 2) = " "
Matrix(sizeI, sizeJ - 1) = " "
Matrix(sizeI - 1, sizeJ - 4) = " "
Matrix(sizeI - 1, sizeJ - 3) = " "
If N = 18 Then '如果前边一个元件是空位键
Matrix(sizeI, sizeJ - 6) = " "
I = sizeI - 1
While (Matrix(I, sizeJ - 6) = "┃")
Matrix(I, sizeJ - 6) = " "
I = I - 1
Wend
If Matrix(I, sizeJ - 6) = "┳" Then
Matrix(I, sizeJ - 6) = "━"
ElseIf Matrix(I, sizeJ - 6) = "╋" Then
Matrix(I, sizeJ - 6) = "┻"
End If
End If
If Matrix(sizeI, sizeJ - 6) = "┻" Then
Matrix(sizeI, sizeJ - 6) = "┛"
ElseIf Matrix(sizeI, sizeJ - 6) = "╋" Then
Matrix(sizeI, sizeJ - 6) = "┫"
End If
I = sizeI - 1
While (Matrix(I, sizeJ - 1) = "┃")
Matrix(I, sizeJ - 1) = " "
I = I - 1
Wend
If Matrix(I, sizeJ - 1) = "┳" Then
Matrix(I, sizeJ - 1) = "━"
ElseIf Matrix(I, sizeJ - 1) = "╋" Then
Matrix(I, sizeJ - 1) = "┻"
ElseIf Matrix(I, sizeJ - 1) = "┫" Then
Matrix(I, sizeJ - 1) = "┛"
End If
Arr(sizeI) = Arr(sizeI) - 5
Case 15 '上一步为五个"━━━━━"时
Matrix(sizeI, sizeJ - 5) = " "
Matrix(sizeI, sizeJ - 4) = " "
Matrix(sizeI, sizeJ - 3) = " "
Matrix(sizeI, sizeJ - 2) = " "
Matrix(sizeI, sizeJ - 1) = " "
Arr(sizeI) = Arr(sizeI) - 5
Case 16 '上一步为五个"━━━━┛"时
Matrix(sizeI, sizeJ - 5) = " "
Matrix(sizeI, sizeJ - 4) = " "
Matrix(sizeI, sizeJ - 3) = " "
Matrix(sizeI, sizeJ - 2) = " "
Matrix(sizeI, sizeJ - 1) = " "
I = sizeI - 1
While (Matrix(I, sizeJ - 1) = "┃")
Matrix(I, sizeJ - 1) = " "
I = I - 1
Wend
If Matrix(I, sizeJ - 1) = "┳" Then
Matrix(I, sizeJ - 1) = "━"
ElseIf Matrix(I, sizeJ - 1) = "╋" Then
Matrix(I, sizeJ - 1) = "┻"
ElseIf Matrix(I, sizeJ - 1) = "┫" Then
Matrix(I, sizeJ - 1) = "┛"
End If
Arr(sizeI) = Arr(sizeI) - 5
Case 17
Matrix(sizeI, sizeJ - 5) = " "
Matrix(sizeI, sizeJ - 4) = " "
Matrix(sizeI, sizeJ - 3) = " "
Matrix(sizeI, sizeJ - 2) = " "
Matrix(sizeI, sizeJ - 1) = " "
Arr(sizeI) = Arr(sizeI) - 6
Case 18
Arr(sizeI) = Arr(sizeI) - 5
End Select
sizeJ = sizeJ - 5
ElseIf M = 6 Then 'M=6时
If k = 9 Then
Arr(sizeI) = p
For J = p To 50
Matrix(sizeI, J) = " " '自动将"━"变为" "
Next J
Matrix(sizeI, sizeJ - 6) = " "
Matrix(sizeI, sizeJ - 5) = " "
Matrix(sizeI, sizeJ - 4) = " "
Matrix(sizeI, sizeJ - 3) = " "
Matrix(sizeI, sizeJ - 2) = " "
Matrix(sizeI, sizeJ - 1) = " "
Matrix(sizeI - 1, sizeJ - 1) = " "
Matrix(sizeI - 1, sizeJ - 4) = " "
Matrix(sizeI - 1, sizeJ - 3) = " "
sizeJ = p
If Matrix(sizeI, sizeJ - 1) = "┻" Then
Matrix(sizeI, sizeJ - 1) = "┛"
ElseIf Matrix(sizeI, sizeJ - 1) = "╋" Then
Matrix(sizeI, sizeJ - 1) = "┫"
End If
ElseIf k = 21 Then
Arr(sizeI) = p
Matrix(sizeI - 2, sizeJ - 6) = "━"
Matrix(sizeI - 1, sizeJ - 6) = " "
Matrix(sizeI, sizeJ - 6) = " "
Matrix(sizeI, sizeJ - 5) = " "
Matrix(sizeI, sizeJ - 4) = " "
Matrix(sizeI, sizeJ - 3) = " "
Matrix(sizeI, sizeJ - 2) = " "
Matrix(sizeI, sizeJ - 1) = " "
Matrix(sizeI - 1, sizeJ - 1) = " "
Matrix(sizeI - 1, sizeJ - 4) = " "
Matrix(sizeI - 1, sizeJ - 3) = " "
sizeJ = p
End If
Else 'M=10(即输入(END)后)
sizeJ = 1 '删除梯形图的左边框线
If sizeI > 2 Then
I = sizeI - 1
While Matrix(I, sizeJ) = "┃"
Matrix(I, sizeJ) = " "
I = I - 1
Wend
Else
Matrix(sizeI - 1, sizeJ) = "┃"
End If
Matrix(sizeI, sizeJ) = " "
Matrix(sizeI, sizeJ + 1) = " "
Matrix(sizeI, sizeJ + 2) = " "
Matrix(sizeI, sizeJ + 3) = " "
Matrix(sizeI, sizeJ + 4) = " "
Matrix(sizeI, sizeJ + 5) = " "
Matrix(sizeI, sizeJ + 6) = " "
Matrix(sizeI, sizeJ + 7) = " "
Matrix(sizeI, sizeJ + 8) = " "
Matrix(sizeI, sizeJ + 9) = " "
Command22.Enabled = True
End If
M = Z
k = N
Call Fresh
If sizeJ = 1 Then
Command1.Enabled = True
Command2.Enabled = True
Command3.Enabled = True
Command4.Enabled = True
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
Command9.Enabled = False
Command10.Enabled = False '规定只允许后退一步
Command11.Enabled = False
Command12.Enabled = True
Command15.Enabled = False
Command16.Enabled = False
Command21.Enabled = True
Command18.Enabled = True
Else
Command1.Enabled = False
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = True
Command6.Enabled = True
Command7.Enabled = True
Command8.Enabled = True
Command9.Enabled = True
Command10.Enabled = False '规定只允许后退一步
Command11.Enabled = True
Command12.Enabled = True
Command15.Enabled = True
Command16.Enabled = True
Command21.Enabled = True
Command18.Enabled = False
End If
End Sub
Private Sub Command11_Click()
sizeI = sizeI + 2
sizeJ = 1
If Matrix(sizeI, 56) = " " Then
Matrix(sizeI - 1, 56) = "┃"
Matrix(sizeI, 56) = "┃"
End If
Command1.Enabled = True
Command2.Enabled = True
Command3.Enabled = True
Command4.Enabled = True
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
Command9.Enabled = False
Command10.Enabled = False
Command11.Enabled = True
Command12.Enabled = True
Command13.Enabled = False
Command15.Enabled = False
Command16.Enabled = False
Command18.Enabled = True
Command19.Enabled = False
Command21.Enabled = True
Command22.Enabled = True
Call Fresh
End Sub
Private Sub Command12_Click()
Picture1.Cls '清除图片
For I = 1 To 260
For J = 0 To 72
Matrix(I, J) = " " '对数组进行初始化(即清零)
Visited(I, J) = 0
BlockVisited(I, J) = 0
Next J
Arr(I) = 0 '对Arr()数组进行初始化
Next I
Call Fresh '刷新图片
sizeI = 2 '初始化
sizeJ = 1
S = ""
M = 5
k = 0
Z = 0
N = 0
p = 0
Command1.Enabled = True
Command2.Enabled = True
Command3.Enabled = True
Command4.Enabled = True
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
Command9.Enabled = False
Command10.Enabled = False
Command11.Enabled = False
Command12.Enabled = False
Command13.Enabled = True
Command15.Enabled = False
Command16.Enabled = False
Command18.Enabled = False
Command19.Enabled = False
Command21.Enabled = False
Command22.Enabled = True
Command13.Visible = True
Command14.Visible = True
Command19.Visible = False
Command20.Visible = False
Text1.Text = ""
End Sub
Private Sub Command13_Click() '实现由梯形图向语句表的转化
Call Procedure(2, 1)
Text1.Text = S
Command13.Visible = False
Command14.Visible = False
Command19.Visible = True
Command12.Enabled = True
Command19.Enabled = True
Command20.Visible = True
End Sub
Private Sub Command14_Click()
frmAbout.Show
Me.Hide
End Sub
Private Sub Command15_Click()
If Command10.Enabled = False Then
Command10.Enabled = True
End If
If Matrix(sizeI, sizeJ - 1) = "┛" Then
Matrix(sizeI, sizeJ - 1) = "┻"
ElseIf Matrix(sizeI, sizeJ - 1) = "┫" Then
Matrix(sizeI, sizeJ - 1) = "╋"
End If
Arr(sizeI) = Arr(sizeI) + 5
Matrix(sizeI, sizeJ) = "━"
Matrix(sizeI, sizeJ + 1) = "━"
Matrix(sizeI, sizeJ + 2) = "━"
Matrix(sizeI, sizeJ + 3) = "━"
Matrix(sizeI, sizeJ + 4) = "━"
If k = 18 Then '如果前边一个元件是空位键
Matrix(sizeI, sizeJ - 1) = "┗"
I = sizeI - 1
While (Matrix(I, sizeJ - 1) = " ")
Matrix(I, sizeJ - 1) = "┃"
I = I - 1
Wend
If Matrix(I, sizeJ - 1) = "━" Then
Matrix(I, sizeJ - 1) = "┳"
ElseIf Matrix(I, sizeJ - 1) = "┻" Then
Matrix(I, sizeJ - 1) = "╋"
End If
End If
sizeJ = sizeJ + 5
Z = M
M = 5
N = k
k = 15
Call Fresh
Command9.Enabled = True
Command21.Enabled = True
End Sub
Private Sub Command16_Click()
If Command10.Enabled = False Then
Command10.Enabled = True
End If
If Matrix(sizeI, sizeJ - 1) = "┛" Then
Matrix(sizeI, sizeJ - 1) = "┻"
ElseIf Matrix(sizeI, sizeJ - 1) = "┫" Then
Matrix(sizeI, sizeJ - 1) = "╋"
End If
Arr(sizeI) = Arr(sizeI) + 5
Matrix(sizeI, sizeJ) = "━"
Matrix(sizeI, sizeJ + 1) = "━"
Matrix(sizeI, sizeJ + 2) = "━"
Matrix(sizeI, sizeJ + 3) = "━"
Matrix(sizeI, sizeJ + 4) = "┛"
I = sizeI - 1
While (Matrix(I, sizeJ + 4) = " ")
Matrix(I, sizeJ + 4) = "┃"
I = I - 1
Wend
If Matrix(I, sizeJ + 4) = "━" Then
Matrix(I, sizeJ + 4) = "┳"
ElseIf Matrix(I, sizeJ + 4) = "┻" Then
Matrix(I, sizeJ + 4) = "╋"
ElseIf Matrix(I, sizeJ + 4) = "┛" Then
Matrix(I, sizeJ + 4) = "┫"
ElseIf Matrix(I, sizeJ + 4) = "┗" Then
Matrix(I, sizeJ + 4) = "┣"
End If
If k = 18 Then '如果前边一个元件是空位键
Matrix(sizeI, sizeJ - 1) = "┗"
I = sizeI - 1
While (Matrix(I, sizeJ - 1) = " ")
Matrix(I, sizeJ - 1) = "┃"
I = I - 1
Wend
If Matrix(I, sizeJ - 1) = "━" Then
Matrix(I, sizeJ - 1) = "┳"
ElseIf Matrix(I, sizeJ - 1) = "┻" Then
Matrix(I, sizeJ - 1) = "╋"
End If
End If
sizeJ = sizeJ + 5
Z = M
M = 5
N = k
k = 16
Call Fresh
Command9.Enabled = True
Command11.Enabled = True
Command21.Enabled = True
End Sub
Private Sub Command17_Click()
Call Fresh
End Sub
Private Sub Command18_Click()
If Command10.Enabled = False Then
Command10.Enabled = True
End If
If (sizeJ = 1) Then '加入梯形图的左边框线
I = sizeI
While Matrix(I, sizeJ) = " "
Matrix(I, sizeJ) = "┃"
I = I - 1
Wend
End If
If (sizeJ = 1) Then
Arr(sizeI) = Arr(sizeI) + 6
Else
Arr(sizeI) = Arr(sizeI) + 5
End If
sizeJ = sizeJ + 5
Z = M
M = 5
N = k
k = 18
Call Fresh
Command1.Enabled = False
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = True
Command6.Enabled = True
Command7.Enabled = True
Command8.Enabled = True
Command9.Enabled = False
Command10.Enabled = True
Command11.Enabled = True
Command12.Enabled = True
Command13.Enabled = False
Command15.Enabled = True
Command16.Enabled = True
Command18.Enabled = True
Command19.Enabled = False
Command21.Enabled = True
Command22.Enabled = False
End Sub
Private Sub Command19_Click() '生成 *.txt 文件
FileNum = FreeFile()
Open "D:\生成的语句表.txt" For Output As #FileNum
Print #FileNum, Text1.Text
Close #FileNum
End Sub
Private Sub Command20_Click()
frmAbout.Show
Me.Hide
End Sub
Private Sub Command21_Click()
If Command10.Enabled = False Then
Command10.Enabled = True
End If
p = sizeJ
sizeJ = 51
Arr(sizeI) = sizeJ
X = InputBox("请输入器件名称(限三个字符,如 Y01 )", "输入器件名称") '输入器件名称
While (Len(X) <> 3)
MsgBox "输入器件名称不合要求,请重新输入器件名称"
X = InputBox("请输入器件名称(限三个字符,如 Y01 )", "输入器件名称")
Wend
Matrix(sizeI - 2, sizeJ) = "┳"
Matrix(sizeI - 1, sizeJ) = "┃"
Matrix(sizeI, sizeJ) = "┗"
Matrix(sizeI, sizeJ + 1) = "("
Matrix(sizeI, sizeJ + 2) = " "
Matrix(sizeI, sizeJ + 3) = ")"
Matrix(sizeI, sizeJ + 4) = "━"
Matrix(sizeI, sizeJ + 5) = "┫"
sizeJ = sizeJ + 6
Matrix(sizeI - 1, sizeJ - 4) = X
Matrix(sizeI - 1, sizeJ - 3) = " "
Matrix(sizeI - 1, sizeJ - 1) = "┃"
Z = M
M = 6
N = k
k = 21
Call Fresh
Command1.Enabled = False
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
Command9.Enabled = False
Command10.Enabled = True
Command11.Enabled = True
Command12.Enabled = True
Command13.Enabled = True
Command15.Enabled = False
Command16.Enabled = False
Command18.Enabled = False
Command19.Enabled = False
Command21.Enabled = False
Command22.Enabled = False
End Sub
Private Sub Command22_Click()
Command1.Enabled = False
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
Command9.Enabled = False
Command10.Enabled = True
Command11.Enabled = False
Command12.Enabled = False
Command13.Enabled = True
Command15.Enabled = False
Command16.Enabled = False
Command18.Enabled = False
Command19.Enabled = False
Command21.Enabled = False
Command22.Enabled = False
If (sizeJ = 1) Then '加入梯形图的左边框线
If sizeI > 2 Then
I = sizeI - 1
While Matrix(I, sizeJ) = " "
Matrix(I, sizeJ) = "┃"
I = I - 1
Wend
Else
Matrix(sizeI - 1, sizeJ) = "┃"
End If
End If
Matrix(sizeI, sizeJ) = "┣"
Matrix(sizeI, sizeJ + 1) = "━"
Matrix(sizeI, sizeJ + 2) = "━"
Matrix(sizeI, sizeJ + 3) = "━"
Matrix(sizeI, sizeJ + 4) = "("
Matrix(sizeI, sizeJ + 5) = "E"
Matrix(sizeI, sizeJ + 6) = "N"
Matrix(sizeI, sizeJ + 7) = "D"
Matrix(sizeI, sizeJ + 8) = ")"
Matrix(sizeI, sizeJ + 9) = " "
Z = M
M = 10
N = k
k = 22
Call Fresh
End Sub
《关于界面代码》
Option Explicit
' 注册表关键字安全选项...
Const READ_CONTROL = &H20000
Const KEY_QUERY_VALUE = &H1
Const KEY_SET_VALUE = &H2
Const KEY_CREATE_SUB_KEY = &H4
Const KEY_ENUMERATE_SUB_KEYS = &H8
Const KEY_NOTIFY = &H10
Const KEY_CREATE_LINK = &H20
Const KEY_ALL_ACCESS = KEY_QUERY_VALUE + KEY_SET_VALUE + _
KEY_CREATE_SUB_KEY + KEY_ENUMERATE_SUB_KEYS + _
KEY_NOTIFY + KEY_CREATE_LINK + READ_CONTROL
' 注册表关键字 ROOT 类型...
Const HKEY_LOCAL_MACHINE = &H80000002
Const ERROR_SUCCESS = 0
Const REG_SZ = 1 ' 独立的空的终结字符串
Const REG_DWORD = 4 ' 32位数字
Const gREGKEYSYSINFOLOC = "SOFTWARE\Microsoft\Shared Tools Location"
Const gREGVALSYSINFOLOC = "MSINFO"
Const gREGKEYSYSINFO = "SOFTWARE\Microsoft\Shared Tools\MSINFO"
Const gREGVALSYSINFO = "PATH"
Private Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, ByRef phkResult As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal lpData As String, ByRef lpcbData As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long
Private Sub cmdSysInfo_Click()
Call StartSysInfo
End Sub
Private Sub cmdOK_Click()
Unload Me
End
End Sub
Public Sub StartSysInfo()
On Error GoTo SysInfoErr
Dim rc As Long
Dim SysInfoPath As String
' 试图从注册表中获得系统信息程序的路径及名称...
If GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFO, gREGVALSYSINFO, SysInfoPath) Then
' 试图仅从注册表中获得系统信息程序的路径...
ElseIf GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFOLOC, gREGVALSYSINFOLOC, SysInfoPath) Then
' 已知32位文件版本的有效位置
If (Dir(SysInfoPath & "\MSINFO32.EXE") <> "") Then
SysInfoPath = SysInfoPath & "\MSINFO32.EXE"
' 错误 - 文件不能被找到...
Else
GoTo SysInfoErr
End If
' 错误 - 注册表相应条目不能被找到...
Else
GoTo SysInfoErr
End If
Call Shell(SysInfoPath, vbNormalFocus)
Exit Sub
SysInfoErr:
MsgBox "此时系统信息不可用", vbOKOnly
End Sub
Public Function GetKeyValue(KeyRoot As Long, KeyName As String, SubKeyRef As String, ByRef KeyVal As String) As Boolean
Dim I As Long ' 循环计数器
Dim rc As Long ' 返回代码
Dim hKey As Long ' 打开的注册表关键字句柄
Dim hDepth As Long '
Dim KeyValType As Long ' 注册表关键字数据类型
Dim tmpVal As String ' 注册表关键字值的临时存储器
Dim KeyValSize As Long ' 注册表关键自变量的尺寸
'------------------------------------------------------------
' 打开 {HKEY_LOCAL_MACHINE...} 下的 RegKey
'------------------------------------------------------------
rc = RegOpenKeyEx(KeyRoot, KeyName, 0, KEY_ALL_ACCESS, hKey) ' 打开注册表关键字
If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError ' 处理错误...
tmpVal = String$(1024, 0) ' 分配变量空间
KeyValSize = 1024 ' 标记变量尺寸
'------------------------------------------------------------
' 检索注册表关键字的值...
'------------------------------------------------------------
rc = RegQueryValueEx(hKey, SubKeyRef, 0, _
KeyValType, tmpVal, KeyValSize) ' 获得/创建关键字值
If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError ' 处理错误
If (Asc(Mid(tmpVal, KeyValSize, 1)) = 0) Then ' Win95 外接程序空终结字符串...
tmpVal = Left(tmpVal, KeyValSize - 1) ' Null 被找到,从字符串中分离出来
Else ' WinNT 没有空终结字符串...
tmpVal = Left(tmpVal, KeyValSize) ' Null 没有被找到, 分离字符串
End If
'------------------------------------------------------------
' 决定转换的关键字的值类型...
'------------------------------------------------------------
Select Case KeyValType ' 搜索数据类型...
Case REG_SZ ' 字符串注册关键字数据类型
KeyVal = tmpVal ' 复制字符串的值
Case REG_DWORD ' 四字节的注册表关键字数据类型
For I = Len(tmpVal) To 1 Step -1 ' 将每位进行转换
KeyVal = KeyVal + Hex(Asc(Mid(tmpVal, I, 1))) ' 生成值字符。 By Char。
Next
KeyVal = Format$("&h" + KeyVal) ' 转换四字节的字符为字符串
End Select
GetKeyValue = True ' 返回成功
rc = RegCloseKey(hKey) ' 关闭注册表关键字
Exit Function ' 退出
GetKeyError: ' 错误发生后将其清除...
KeyVal = "" ' 设置返回值到空字符串
GetKeyValue = False ' 返回失败
rc = RegCloseKey(hKey) ' 关闭注册表关键字
End Function
(2009-04-12 20:44:07, Size: 1.39 MB, Downloads: 24)
(2009-04-12 20:44:07, Size: 1.36 MB, Downloads: 21)
不要安装的,直接点梯形图的编辑和解释.exe,
用户名:admin
密 码:txtbjhjs
untitled.JPG
阶梯图>>>指令>>>可烧写文件(hex bin)
用字符的,功能要升级,改的代码就多了。
我在界面设计上属于新手,请高手指点一下,要实现上述功能,怎么实现。