Files

186 lines
8.0 KiB
VB.net
Raw Permalink Normal View History

2025-12-11 14:22:51 +08:00
Public Class MusicArrangement
Public basicClass As DeviceObjectClasses
Private gMUSICdic As Dictionary(Of String, List(Of String
Private gcMUSICdic As Dictionary(Of String, List(Of String
Public GmusicVal As String = String.Empty
Public G_input As String
Private Sub MusicArrangement_Load(sender As Object, e As EventArgs) Handles MyBase.Load
gcMUSICdic = New Dictionary(Of String, List(Of String)
gMUSICdic = New Dictionary(Of String, List(Of String)
ComboBox1.Items.Clear()
For Each basicClassnode In basicClass.DeviceClass
If basicClassnode.Name.Equals("MUSIC") Then
For Each basicClassnodeMUSIC In basicClassnode.Methods
If basicClassnodeMUSIC.Params.Count >= 3 And basicClassnodeMUSIC.Name.IndexOf("播放") = 0 Then
ComboBox1.Items.Add(basicClassnodeMUSIC.Params(1).DataRange)
Dim li As New List(Of String
li.AddRange(basicClassnodeMUSIC.Params(0).DataRange.Split(","))
gcMUSICdic.Add(basicClassnodeMUSIC.Params(1).DataRange, li)
Dim lic As New List(Of String
Select Case basicClassnodeMUSIC.Params(2).DataType
Case "List"
lic.AddRange(basicClassnodeMUSIC.Params(2).DataRange.Split(","))
Case "Integer"
Dim dowmint As Integer = -1
Dim upint As Integer = -1
Dim intbuf() As String = basicClassnodeMUSIC.Params(2).DataRange.Split(",")
Integer.TryParse(intbuf(0), dowmint)
Integer.TryParse(intbuf(1), upint)
If dowmint = -1 Or upint = -1 Then
lic.Add(1)
Else
For i = dowmint To upint
lic.Add(i)
Next
End If
End Select
gMUSICdic.Add(basicClassnodeMUSIC.Params(1).DataRange, lic)
End If
Next
End If
Next
ComboBox1.SelectedIndex = 0
LoadInputText(G_input)
End Sub
Private Sub LoadInputText(inputstr As String)
If String.IsNullOrEmpty(inputstr) Then Return
Dim buf() As String = inputstr.Split(",")
If buf.Length > 0 Then
For i As Integer = 0 To ComboBox1.Items.Count - 1
If ComboBox1.Items(i).ToString.Contains(buf0) Then
ComboBox1.SelectedIndex = i
Exit For
End If
Next
End If
If buf.Length > 1 Then
For i As Integer = 0 To ComboBox3.Items.Count - 1
If ComboBox3.Items(i).ToString.Contains(buf1) Then
ComboBox3.SelectedIndex = i
Exit For
End If
Next
End If
If buf.Length > 2 Then
For i As Integer = 0 To ComboBox2.Items.Count - 1
If ComboBox2.Items(i).ToString.Contains(buf2) Then
ComboBox2.SelectedIndex = i
Exit For
End If
Next
End If
End Sub
Public Shared Function CheckDataIsOk(datastr As String, gbasicClass As DeviceObjectClasses) As Boolean
If String.IsNullOrEmpty(datastr) Then Return True
Dim buf() As String = datastr.Split(",")
If buf.Length <> 3 Then Return False
Dim intbuf(2) As Integer
If Not Integer.TryParse(buf(0), intbuf(0)) And Integer.TryParse(buf(1), intbuf(1)) And Integer.TryParse(buf(2), intbuf(2)) Then Return False
For Each basicClassnode In gbasicClass.DeviceClass
If basicClassnode.Name.Equals("MUSIC") Then
For Each basicClassnodeMUSIC In basicClassnode.Methods
If basicClassnodeMUSIC.Params.Count >= 3 And basicClassnodeMUSIC.Name.IndexOf("播放") = 0 Then
If basicClassnodeMUSIC.Params(1).DataRange.IndexOf(intbuf(0).ToString) = 0 Then
Dim abuf() As String = basicClassnodeMUSIC.Params(0).DataRange.Split(",")
For Each astr In abuf
If astr.IndexOf(intbuf(1).ToString) = 0 Then
Select Case basicClassnodeMUSIC.Params(2).DataType
Case "List"
Dim aintbuf() As String = basicClassnodeMUSIC.Params(2).DataRange.Split(",")
For Each bbuf In aintbuf
If bbuf.IndexOf(intbuf(0).ToString) = 0 Then Return True
Next
Return False
Case "Integer"
Dim aintbuf() As String = basicClassnodeMUSIC.Params(2).DataRange.Split(",")
Dim aup, adown As Integer
If Not Integer.TryParse(aintbuf(0), adown) And Integer.TryParse(aintbuf(1), aup) Then Return False
If adown <= intbuf2 And intbuf2 <= aup Then
Return True
Else
Return False
End If
End Select
End If
Next
Return False
End If
End If
Next
End If
Next
Return False
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Me.DialogResult = System.Windows.Forms.DialogResult.OK
Me.Close()
Return
End Sub
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
ComboBox3.Items.Clear()
ComboBox3.Items.AddRange(gcMUSICdic.Item(ComboBox1.Text).ToArray)
ComboBox3.SelectedIndex = 0
End Sub
Private Sub ComboBox3_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox3.SelectedIndexChanged
ComboBox2.Items.Clear()
ComboBox2.Items.AddRange(gMUSICdic.Item(ComboBox1.Text).ToArray)
ComboBox2.SelectedIndex = 0
End Sub
Private Sub ComboBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox2.SelectedIndexChanged
Dim strbuf() As String = ComboBox1.Text.Split(" ")
Dim name As String = String.Empty
Dim kval As String = String.Empty
If strbuf.Length > 1 Then
name = $"{name}{ strbuf0.Trim},"
kval = $"{kval}{ strbuf1.Trim},"
Else
name = $"{name}{ strbuf0.Trim},"
kval = $"{kval}{ strbuf0.Trim}"
End If
strbuf = ComboBox3.Text.Split(" ")
If strbuf.Length > 1 Then
name = $"{name}{ strbuf0.Trim},"
kval = $"{kval}{ strbuf1.Trim},"
Else
name = $"{name}{ strbuf0.Trim},"
kval = $"{kval}{ strbuf0.Trim}"
End If
strbuf = ComboBox2.Text.Split(" ")
If strbuf.Length > 1 Then
name = $"{name}{ strbuf0.Trim}"
kval = $"{kval}{ strbuf1.Trim}"
Else
name = $"{name}{ strbuf0.Trim}"
kval = $"{kval}{ strbuf0.Trim}"
End If
TextBox1.Text = $"{kval }{vbCrLf }({name})"
GmusicVal = name
End Sub
End Class