Imports System.Drawing
Imports System.Windows.Forms
Imports FlexCell
Namespace UTSModule.Project
Public Class FrmStationPlan
Private _isShown As Boolean
Public Property StationPlan() As ProjectStationPlan
Public Property StationPlanCommandHelpers As Dictionary(Of String, StationPlanCommandHelper)
Public Property StationPlanColHelpers() As Dictionary(Of String, PlanColHelper)
Public Sub ShowForm(parentControl As Control)
FormBorderStyle = FormBorderStyle.None
TopLevel = False
Dock = DockStyle.Fill
Parent = parentControl
Enabled = StationPlan IsNot Nothing
Show()
End Sub
Public Sub Station_Changed(station As StationInfo)
StationPlan = station.Packet.StationPlan
Enabled = StationPlan IsNot Nothing
If StationPlan IsNot Nothing Then
GrdTestPlan.AutoRedraw = False
GrdTestPlan.LoadFromStream(StationPlan.StationPlanGrid.ExportToStream())
GrdTestPlan.ComboBox(StationPlanGrid.ColNameEnum.Command).Items.Clear()
GrdTestPlan.ComboBox(StationPlanGrid.ColNameEnum.Command).Items.AddRange(StationPlanCommandHelpers.Keys.ToArray())
GrdTestPlan.AutoRedraw = True
GrdTestPlan.Refresh()
StationPlan.StationPlanGrid.Dispose() '清空资源
StationPlan.StationPlanGrid = GrdTestPlan '保证站包与站流程表指向内容一致
LockedTestPlanGrid(StationPlan.TestPlanLocked)
End If
End Sub
Public Sub LockedTestPlanGrid(testPlanLocked As Boolean)
GrdTestPlan.Range(1, 1, GrdTestPlan.Rows - 1, GrdTestPlan.Cols - 1).Locked = testPlanLocked
If testPlanLocked Then
TsBtnLockedEdit.Text = $"解锁表格"
TsBtnLockedEdit.ForeColor = Color.Red
Else
TsBtnLockedEdit.Text = $"加锁表格"
TsBtnLockedEdit.ForeColor = Color.Green
End If
End Sub
Private Sub TsBtnLockedEdit_Click(sender As Object, e As EventArgs) Handles TsBtnLockedEdit.Click
If StationPlan.TestPlanLocked Then
If StationPlan.ParentPacket.PassWord.Length > 0 Then
Dim pwd As String = InputBox(String.Empty, $"请输入解锁密码")
If String.Compare(pwd, StationPlan.ParentPacket.PassWord) <> 0 Then Return
End If
StationPlan.TestPlanLocked = False
LockedTestPlanGrid(StationPlan.TestPlanLocked)
Else
StationPlan.TestPlanLocked = True
LockedTestPlanGrid(StationPlan.TestPlanLocked)
End If
End Sub
Private Sub InitStationPlanCommandHelper()
Try
StationPlanCommandHelpers = StationPlanCommandHelper.InitCommandHelper(Database.Sqlite.ConnectionParams.Path, Database.Sqlite.ConnectionParams.Password)
Catch ex As Exception
Console.WriteLine($"InitStationPlanCommandHelper Error:{ex.Message}")
End Try
If StationPlanCommandHelpers Is Nothing Then
StationPlanCommandHelpers = New Dictionary(Of String, StationPlanCommandHelper)()
End If
End Sub
Private Sub InitStationPlanColHelper()
Try
StationPlanColHelpers = PlanColHelper.InitPlanColHelper(Database.Sqlite.ConnectionParams.Path, Database.Sqlite.ConnectionParams.Password)
Catch ex As Exception
Console.WriteLine($"InitStationPlanColHelper Error:{ex.Message}")
End Try
If StationPlanColHelpers Is Nothing Then
StationPlanColHelpers = New Dictionary(Of String, PlanColHelper)()
End If
End Sub
Private Sub InitForm()
Dim commands As String() = StationPlanCommandHelpers.Keys.ToArray()
StationPlanGrid.InitGrid(GrdTestPlan, commands)
SingleRowGrid.InitGrid(GrdSingleRowInfo, commands)
End Sub
Private Sub FrmStationPlan_Load(sender As Object, e As EventArgs) Handles Me.Load
_isShown = False
InitStationPlanCommandHelper()
InitStationPlanColHelper()
InitForm()
_isShown = True
End Sub
Private Sub TsBtnReleaseStation_Click(sender As Object, e As EventArgs) Handles TsBtnReleaseStation.Click
End Sub
#Region "TestPlan"
Private Sub TestPlanSelChange(selRow As Integer, selCol As Integer)
Static lastRow As Integer = 0
Static lastCol As Integer = 0
If selRow < 1 OrElse selRow > GrdTestPlan.Rows - 1 Then Return
If selCol < 0 OrElse selCol > GrdTestPlan.Cols - 1 Then Return
_cellChanged = GridCellChangedEnum.TestPlanSelChange
If lastRow <> selRow Then
SyncTestPlanRow(selRow)
ChangeSingleRowGridColName()
UpdateSingleRowTip(TestPlanColToSingleRow(selCol))
lastRow = selRow
End If
If lastCol <> selCol Then
SingleRowSelChange(TestPlanColToSingleRow(selCol))
lastCol = selCol
End If
_cellChanged = GridCellChangedEnum.None
End Sub
'''
''' 流程表格选中行修改时,将流程表格某行的内容,填充到单行信息表中
'''
'''
Private Sub SyncTestPlanRow(selRow As Integer)
Dim col As Integer = SingleRowGrid.ColNameEnum.ColValue
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Step, col).Text = selRow.ToString()
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.[Label], col).Text = GrdTestPlan.Cell(selRow, StationPlanGrid.ColNameEnum.[Label]).Text
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Action, col).Text = GrdTestPlan.Cell(selRow, StationPlanGrid.ColNameEnum.Action).Text
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Command, col).Text = GrdTestPlan.Cell(selRow, StationPlanGrid.ColNameEnum.Command).Text
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Description, col).Text = GrdTestPlan.Cell(selRow, StationPlanGrid.ColNameEnum.Description).Text
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Retry, col).Text = GrdTestPlan.Cell(selRow, StationPlanGrid.ColNameEnum.Retry).Text
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.RetryInterval, col).Text = GrdTestPlan.Cell(selRow, StationPlanGrid.ColNameEnum.RetryInterval).Text
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Record, col).Text = GrdTestPlan.Cell(selRow, StationPlanGrid.ColNameEnum.Record).Text
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.RecordName, col).Text = GrdTestPlan.Cell(selRow, StationPlanGrid.ColNameEnum.RecordName).Text
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.PassGoto, col).Text = GrdTestPlan.Cell(selRow, StationPlanGrid.ColNameEnum.PassGoto).Text
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.FailGoto, col).Text = GrdTestPlan.Cell(selRow, StationPlanGrid.ColNameEnum.FailGoto).Text
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.ErrorCode, col).Text = GrdTestPlan.Cell(selRow, StationPlanGrid.ColNameEnum.ErrorCode).Text
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.ErrorMessage, col).Text = GrdTestPlan.Cell(selRow, StationPlanGrid.ColNameEnum.ErrorMessage).Text
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Help, col).Text = GrdTestPlan.Cell(selRow, StationPlanGrid.ColNameEnum.Help).Text
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Parameter1, col).Text = GrdTestPlan.Cell(selRow, StationPlanGrid.ColNameEnum.Parameter1).Text
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Parameter2, col).Text = GrdTestPlan.Cell(selRow, StationPlanGrid.ColNameEnum.Parameter2).Text
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Parameter3, col).Text = GrdTestPlan.Cell(selRow, StationPlanGrid.ColNameEnum.Parameter3).Text
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Parameter4, col).Text = GrdTestPlan.Cell(selRow, StationPlanGrid.ColNameEnum.Parameter4).Text
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Parameter5, col).Text = GrdTestPlan.Cell(selRow, StationPlanGrid.ColNameEnum.Parameter5).Text
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Parameter6, col).Text = GrdTestPlan.Cell(selRow, StationPlanGrid.ColNameEnum.Parameter6).Text
End Sub
'''
''' 命令变更时,修改单行信息表中列名
'''
Private Sub ChangeSingleRowGridColName()
Static colNameChanged As Boolean = False
Dim col As Integer = SingleRowGrid.ColNameEnum.ColValue
Dim command As String = GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Command, col).Text
Dim nameCol As Integer = SingleRowGrid.ColNameEnum.ColName
If String.IsNullOrEmpty(command) OrElse StationPlanCommandHelpers.ContainsKey(command) = False Then
If colNameChanged Then
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Parameter1, nameCol).Text = SingleRowGrid.RowNameEnum.Parameter1.ToString()
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Parameter2, nameCol).Text = SingleRowGrid.RowNameEnum.Parameter2.ToString()
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Parameter3, nameCol).Text = SingleRowGrid.RowNameEnum.Parameter3.ToString()
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Parameter4, nameCol).Text = SingleRowGrid.RowNameEnum.Parameter4.ToString()
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Parameter5, nameCol).Text = SingleRowGrid.RowNameEnum.Parameter5.ToString()
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Parameter6, nameCol).Text = SingleRowGrid.RowNameEnum.Parameter6.ToString()
colNameChanged = False
End If
Else
Dim commandHelper As StationPlanCommandHelper = StationPlanCommandHelpers.Item(command)
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Parameter1, nameCol).Text = commandHelper.Params(0).Desc
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Parameter2, nameCol).Text = commandHelper.Params(1).Desc
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Parameter3, nameCol).Text = commandHelper.Params(2).Desc
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Parameter4, nameCol).Text = commandHelper.Params(3).Desc
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Parameter5, nameCol).Text = commandHelper.Params(4).Desc
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Parameter6, nameCol).Text = commandHelper.Params(5).Desc
If colNameChanged = False Then colNameChanged = True
End If
End Sub
Private Sub GrdTestPlan_SelChange(sender As Object, e As Grid.SelChangeEventArgs) Handles GrdTestPlan.SelChange
TestPlanSelChange(e.FirstRow, e.FirstCol)
End Sub
'''
''' 测试流程表列号转换成单行信息表的对应行号
'''
'''
'''
Private Function TestPlanColToSingleRow(col As Integer) As Integer
Dim row As Integer
Select Case col
Case StationPlanGrid.ColNameEnum.Step
row = SingleRowGrid.RowNameEnum.Step
Case StationPlanGrid.ColNameEnum.[Label]
row = SingleRowGrid.RowNameEnum.[Label]
Case StationPlanGrid.ColNameEnum.Action
row = SingleRowGrid.RowNameEnum.Action
Case StationPlanGrid.ColNameEnum.Command
row = SingleRowGrid.RowNameEnum.Command
Case StationPlanGrid.ColNameEnum.Description
row = SingleRowGrid.RowNameEnum.Description
Case StationPlanGrid.ColNameEnum.Parameter1
row = SingleRowGrid.RowNameEnum.Parameter1
Case StationPlanGrid.ColNameEnum.Parameter2
row = SingleRowGrid.RowNameEnum.Parameter2
Case StationPlanGrid.ColNameEnum.Parameter3
row = SingleRowGrid.RowNameEnum.Parameter3
Case StationPlanGrid.ColNameEnum.Parameter4
row = SingleRowGrid.RowNameEnum.Parameter4
Case StationPlanGrid.ColNameEnum.Parameter5
row = SingleRowGrid.RowNameEnum.Parameter5
Case StationPlanGrid.ColNameEnum.Parameter6
row = SingleRowGrid.RowNameEnum.Parameter6
Case StationPlanGrid.ColNameEnum.Retry
row = SingleRowGrid.RowNameEnum.Retry
Case StationPlanGrid.ColNameEnum.RetryInterval
row = SingleRowGrid.RowNameEnum.RetryInterval
Case StationPlanGrid.ColNameEnum.Record
row = SingleRowGrid.RowNameEnum.Record
Case StationPlanGrid.ColNameEnum.RecordName
row = SingleRowGrid.RowNameEnum.RecordName
Case StationPlanGrid.ColNameEnum.PassGoto
row = SingleRowGrid.RowNameEnum.PassGoto
Case StationPlanGrid.ColNameEnum.FailGoto
row = SingleRowGrid.RowNameEnum.FailGoto
Case StationPlanGrid.ColNameEnum.ErrorCode
row = SingleRowGrid.RowNameEnum.ErrorCode
Case StationPlanGrid.ColNameEnum.ErrorMessage
row = SingleRowGrid.RowNameEnum.ErrorMessage
Case StationPlanGrid.ColNameEnum.Help
row = SingleRowGrid.RowNameEnum.Help
Case Else
Console.WriteLine($"SyncTestPlanChange Unknown Col:{col}")
End Select
Return row
End Function
'''
''' 测试流程表内容修改时,同步更新单行信息表内容
'''
'''
Private Sub SyncTestPlanChange(e As Grid.CellChangingEventArgs)
Dim row As Integer = TestPlanColToSingleRow(e.Col)
Dim col As Integer = SingleRowGrid.ColNameEnum.ColValue
GrdSingleRowInfo.Cell(row, col).Text = GrdTestPlan.Cell(e.Row, e.Col).Text
End Sub
Private _dropDownRow As Integer
Private _dropDownCol As Integer
'''
''' 测试流程表格命令变更时,应用帮助信息
'''
Private Sub GrdTestPlanCommandChanged()
Dim key As String = GrdTestPlan.Cell(_dropDownRow, _dropDownCol).Text
If StationPlanCommandHelpers.ContainsKey(key) Then
Dim planCommandHelper As StationPlanCommandHelper = StationPlanCommandHelpers.Item(key)
GrdTestPlan.Cell(_dropDownRow, StationPlanGrid.ColNameEnum.Action).Text = "1"
GrdTestPlan.Cell(_dropDownRow, StationPlanGrid.ColNameEnum.Description).Text = planCommandHelper.CommandDesc
GrdTestPlan.Cell(_dropDownRow, StationPlanGrid.ColNameEnum.Parameter1).Text = planCommandHelper.Params(0).Value
GrdTestPlan.Cell(_dropDownRow, StationPlanGrid.ColNameEnum.Parameter2).Text = planCommandHelper.Params(1).Value
GrdTestPlan.Cell(_dropDownRow, StationPlanGrid.ColNameEnum.Parameter3).Text = planCommandHelper.Params(2).Value
GrdTestPlan.Cell(_dropDownRow, StationPlanGrid.ColNameEnum.Parameter4).Text = planCommandHelper.Params(3).Value
GrdTestPlan.Cell(_dropDownRow, StationPlanGrid.ColNameEnum.Parameter5).Text = planCommandHelper.Params(4).Value
GrdTestPlan.Cell(_dropDownRow, StationPlanGrid.ColNameEnum.Parameter6).Text = planCommandHelper.Params(5).Value
GrdTestPlan.Cell(_dropDownRow, StationPlanGrid.ColNameEnum.Retry).Text = planCommandHelper.Retry
GrdTestPlan.Cell(_dropDownRow, StationPlanGrid.ColNameEnum.RetryInterval).Text = planCommandHelper.RetryInterval
GrdTestPlan.Cell(_dropDownRow, StationPlanGrid.ColNameEnum.Record).Text = planCommandHelper.Record
GrdTestPlan.Cell(_dropDownRow, StationPlanGrid.ColNameEnum.RecordName).Text = planCommandHelper.RecordName
GrdTestPlan.Cell(_dropDownRow, StationPlanGrid.ColNameEnum.PassGoto).Text = planCommandHelper.PassGoto
GrdTestPlan.Cell(_dropDownRow, StationPlanGrid.ColNameEnum.FailGoto).Text = planCommandHelper.FailGoto
GrdTestPlan.Cell(_dropDownRow, StationPlanGrid.ColNameEnum.ErrorCode).Text = planCommandHelper.ErrorCode
GrdTestPlan.Cell(_dropDownRow, StationPlanGrid.ColNameEnum.ErrorMessage).Text = planCommandHelper.ErrorMessage
GrdTestPlan.Cell(_dropDownRow, StationPlanGrid.ColNameEnum.Help).Text = planCommandHelper.Help
End If
ChangeSingleRowGridColName() '变更单行信息表列名
End Sub
Private Sub GrdTestPlan_CellChanging(sender As Object, e As Grid.CellChangingEventArgs) Handles GrdTestPlan.CellChanging
If _isShown = False Then Return
If _cellChanged = GridCellChangedEnum.None Then _cellChanged = GridCellChangedEnum.TestPlan
If _cellChanged = GridCellChangedEnum.TestPlan Then
SyncTestPlanChange(e)
_cellChanged = GridCellChangedEnum.None
End If
End Sub
Private Sub GrdTestPlan_ComboClick(sender As Object, e As Grid.ComboClickEventArgs) Handles GrdTestPlan.ComboClick
If _dropDownCol = StationPlanGrid.ColNameEnum.Command Then
GrdTestPlanCommandChanged()
End If
End Sub
Private Sub GrdTestPlan_ComboDropDown(sender As Object, e As Grid.ComboDropDownEventArgs) Handles GrdTestPlan.ComboDropDown
_dropDownRow = e.Row
_dropDownCol = e.Col
End Sub
#End Region
#Region "SingleRow"
Enum GridCellChangedEnum
None
TestPlan
SingleRowInfo
TestPlanSelChange
End Enum
Private _cellChanged As GridCellChangedEnum = GridCellChangedEnum.None
Private _grdSingleRowDropRow As Integer
Private _grdSingleRowDropCol As Integer
Private Function SingleRowToTestPlanCol(row As Integer) As Integer
Dim col As Integer
Select Case row
Case SingleRowGrid.RowNameEnum.[Label]
col = StationPlanGrid.ColNameEnum.[Label]
Case SingleRowGrid.RowNameEnum.Action
col = StationPlanGrid.ColNameEnum.Action
Case SingleRowGrid.RowNameEnum.Command
col = StationPlanGrid.ColNameEnum.Command
Case SingleRowGrid.RowNameEnum.Description
col = StationPlanGrid.ColNameEnum.Description
Case SingleRowGrid.RowNameEnum.Parameter1
col = StationPlanGrid.ColNameEnum.Parameter1
Case SingleRowGrid.RowNameEnum.Parameter2
col = StationPlanGrid.ColNameEnum.Parameter2
Case SingleRowGrid.RowNameEnum.Parameter3
col = StationPlanGrid.ColNameEnum.Parameter3
Case SingleRowGrid.RowNameEnum.Parameter4
col = StationPlanGrid.ColNameEnum.Parameter4
Case SingleRowGrid.RowNameEnum.Parameter5
col = StationPlanGrid.ColNameEnum.Parameter5
Case SingleRowGrid.RowNameEnum.Parameter6
col = StationPlanGrid.ColNameEnum.Parameter6
Case SingleRowGrid.RowNameEnum.Retry
col = StationPlanGrid.ColNameEnum.Retry
Case SingleRowGrid.RowNameEnum.RetryInterval
col = StationPlanGrid.ColNameEnum.RetryInterval
Case SingleRowGrid.RowNameEnum.Record
col = StationPlanGrid.ColNameEnum.Record
Case SingleRowGrid.RowNameEnum.RecordName
col = StationPlanGrid.ColNameEnum.RecordName
Case SingleRowGrid.RowNameEnum.PassGoto
col = StationPlanGrid.ColNameEnum.PassGoto
Case SingleRowGrid.RowNameEnum.FailGoto
col = StationPlanGrid.ColNameEnum.FailGoto
Case SingleRowGrid.RowNameEnum.ErrorCode
col = StationPlanGrid.ColNameEnum.ErrorCode
Case SingleRowGrid.RowNameEnum.ErrorMessage
col = StationPlanGrid.ColNameEnum.ErrorMessage
Case SingleRowGrid.RowNameEnum.Help
col = StationPlanGrid.ColNameEnum.Help
Case Else
Console.WriteLine($"SyncSingleRowChange Unknown Row:{row}")
End Select
Return col
End Function
'''
''' 单行信息表格内容修改时,同步修改测试流程表的内容
'''
'''
Private Sub SyncSingleRowChange(e As Grid.CellChangingEventArgs)
If e.Col <> SingleRowGrid.ColNameEnum.ColValue Then Return
If GrdTestPlan.Selection Is Nothing Then Return
If GrdTestPlan.Selection.FirstRow <= 0 OrElse GrdTestPlan.Selection.LastCol >= GrdTestPlan.Cols Then Return
Dim col As Integer = SingleRowToTestPlanCol(e.Row)
Dim row As Integer = GrdTestPlan.Selection.FirstRow
GrdTestPlan.Cell(row, col).Text = GrdSingleRowInfo.Cell(e.Row, e.Col).Text
End Sub
'''
''' 单行信息表格命令修改后,同步刷新本身信息
'''
Private Sub GrdSingleRowInfoCommandChanged()
Dim key As String = GrdSingleRowInfo.Cell(_grdSingleRowDropRow, _grdSingleRowDropCol).Text
If StationPlanCommandHelpers.ContainsKey(key) Then
Dim planCommandHelper As StationPlanCommandHelper = StationPlanCommandHelpers.Item(key)
Dim col As Integer = SingleRowGrid.ColNameEnum.ColValue
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Action, col).Text = "1"
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Description, col).Text = planCommandHelper.CommandDesc
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Parameter1, col).Text = planCommandHelper.Params(0).Value
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Parameter2, col).Text = planCommandHelper.Params(1).Value
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Parameter3, col).Text = planCommandHelper.Params(2).Value
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Parameter4, col).Text = planCommandHelper.Params(3).Value
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Parameter5, col).Text = planCommandHelper.Params(4).Value
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Parameter6, col).Text = planCommandHelper.Params(5).Value
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Retry, col).Text = planCommandHelper.Retry
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.RetryInterval, col).Text = planCommandHelper.RetryInterval
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Record, col).Text = planCommandHelper.Record
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.RecordName, col).Text = planCommandHelper.RecordName
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.PassGoto, col).Text = planCommandHelper.PassGoto
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.FailGoto, col).Text = planCommandHelper.FailGoto
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.ErrorCode, col).Text = planCommandHelper.ErrorCode
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.ErrorMessage, col).Text = planCommandHelper.ErrorMessage
GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Help, col).Text = planCommandHelper.Help
End If
End Sub
Private Sub GrdSingleRowInfo_CellChanging(sender As Object, e As Grid.CellChangingEventArgs) Handles GrdSingleRowInfo.CellChanging
If _isShown = False Then Return
If _cellChanged = GridCellChangedEnum.None Then _cellChanged = GridCellChangedEnum.SingleRowInfo
If _cellChanged = GridCellChangedEnum.SingleRowInfo Then
SyncSingleRowChange(e)
_cellChanged = GridCellChangedEnum.None
End If
End Sub
Private Sub GrdSingleRowInfo_ComboDropDown(sender As Object, e As Grid.ComboDropDownEventArgs) Handles GrdSingleRowInfo.ComboDropDown
_grdSingleRowDropRow = e.Row
_grdSingleRowDropCol = e.Col
Select Case e.Row
Case SingleRowGrid.RowNameEnum.Command
GrdSingleRowInfo.ComboBox(0).Items.Clear()
GrdSingleRowInfo.ComboBox(0).Items.AddRange(StationPlanCommandHelpers.Keys.ToArray())
End Select
End Sub
Private Sub GrdSingleRowInfo_ComboClick(sender As Object, e As Grid.ComboClickEventArgs) Handles GrdSingleRowInfo.ComboClick
If _grdSingleRowDropRow = SingleRowGrid.RowNameEnum.Command Then
GrdSingleRowInfoCommandChanged()
End If
End Sub
#End Region
#Region "TestPlan 右键菜单"
Private Sub MsiAddPlanRow_Click(sender As Object, e As EventArgs) Handles MsiAddPlanRow.Click, MsiPlanAddRow.Click
If GrdTestPlan.Selection Is Nothing Then
GrdTestPlan.AddItem("")
Else
GrdTestPlan.InsertRow(GrdTestPlan.Selection.FirstRow, 1)
End If
End Sub
Private Sub 删除一行ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 删除一行ToolStripMenuItem.Click
If GrdTestPlan.Selection IsNot Nothing Then
GrdTestPlan.Selection.DeleteByRow()
End If
End Sub
Private Sub 内容自适应ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 内容自适应ToolStripMenuItem.Click
GrdTestPlan.AutoSize = Not GrdTestPlan.AutoSize
If GrdTestPlan.AutoSize Then
GrdTestPlan.AutoSize = False
内容自适应ToolStripMenuItem.Text = $"取消自适应"
Else
GrdTestPlan.AutoSize = True
内容自适应ToolStripMenuItem.Text = $"内容自适应"
End If
End Sub
Private Sub 调整字体ToolStripMenuItem_DropDownItemClicked(sender As Object, e As ToolStripItemClickedEventArgs) Handles 调整字体ToolStripMenuItem.DropDownItemClicked
GrdTestPlan.Selection.FontName = e.ClickedItem.Text
End Sub
Private Sub 调整字色ToolStripMenuItem_DropDownItemClicked(sender As Object, e As ToolStripItemClickedEventArgs) Handles 调整字色ToolStripMenuItem.DropDownItemClicked
GrdTestPlan.Selection.ForeColor = e.ClickedItem.ForeColor
End Sub
Private Sub 调整背景ToolStripMenuItem_DropDownItemClicked(sender As Object, e As ToolStripItemClickedEventArgs) Handles 调整背景ToolStripMenuItem.DropDownItemClicked
GrdTestPlan.Selection.BackColor = e.ClickedItem.BackColor
End Sub
Private Sub 对齐方式ToolStripMenuItem_DropDownItemClicked(sender As Object, e As ToolStripItemClickedEventArgs) Handles 对齐方式ToolStripMenuItem.DropDownItemClicked
Dim alignment As AlignmentEnum = AlignmentEnum.CenterCenter
Select Case e.ClickedItem.Text
Case "上层居左"
alignment = AlignmentEnum.LeftTop
Case "上层居中"
alignment = AlignmentEnum.CenterTop
Case "上层居右"
alignment = AlignmentEnum.RightTop
Case "中层居左"
alignment = AlignmentEnum.LeftCenter
Case "中层居中"
alignment = AlignmentEnum.CenterCenter
Case "中层居右"
alignment = AlignmentEnum.RightCenter
Case "下层居左"
alignment = AlignmentEnum.LeftBottom
Case "下层居中"
alignment = AlignmentEnum.CenterBottom
Case "下层居右"
alignment = AlignmentEnum.RightBottom
Case Else
Console.WriteLine($"对齐方式ToolStripMenuItem_DropDownItemClicked Unknown Text:{e.ClickedItem.Text}")
End Select
GrdTestPlan.Selection.Alignment = alignment
End Sub
Private Sub 修改主题ToolStripMenuItem_DropDownItemClicked(sender As Object, e As ToolStripItemClickedEventArgs) Handles 修改主题ToolStripMenuItem.DropDownItemClicked
Select Case e.ClickedItem.Text
Case "默认主题"
Case Else
Console.WriteLine($"修改主题ToolStripMenuItem_DropDownItemClicked Unknown Text:{e.ClickedItem.Text}")
End Select
End Sub
#End Region
#Region "TestPlan光标追随"
Private _mouseFollow As Boolean = False '是否开启鼠标跟随功能
Private _mouseMoveLastRow As Integer = 0 '鼠标移动上次所在行
Private Sub TsBtnMouseFollow_Click(sender As Object, e As EventArgs) Handles TsBtnMouseFollow.Click
If _mouseFollow Then
_mouseFollow = False
GrdTestPlan.Range(_mouseMoveLastRow, 1, _mouseMoveLastRow, GrdTestPlan.Cols - 1).Borders(EdgeEnum.Outside) = LineStyleEnum.None
TsBtnMouseFollow.Text = $"光标预览"
Else
_mouseFollow = True
TsBtnMouseFollow.Text = $"取消预览"
End If
End Sub
Private Sub TestPlanMouseMoveChangeBorders(mouseRow As Integer)
If _mouseMoveLastRow = mouseRow Then Return
If mouseRow < 1 OrElse mouseRow > GrdTestPlan.Rows - 1 Then Return
GrdTestPlan.Range(_mouseMoveLastRow, 1, _mouseMoveLastRow, GrdTestPlan.Cols - 1).Borders(EdgeEnum.Outside) = LineStyleEnum.None
GrdTestPlan.Range(mouseRow, 1, mouseRow, GrdTestPlan.Cols - 1).Borders(EdgeEnum.Outside) = LineStyleEnum.Thin
_mouseMoveLastRow = mouseRow
End Sub
Private Sub TestPlanMouseMove()
If _mouseFollow = False Then Return
Dim mouseRow As Integer = GrdTestPlan.MouseRow
Dim mouseCol As Integer = GrdTestPlan.MouseCol
TestPlanSelChange(mouseRow, mouseCol)
TestPlanMouseMoveChangeBorders(mouseRow)
End Sub
Private Sub GrdTestPlan_MouseMove(sender As Object, e As MouseEventArgs) Handles GrdTestPlan.MouseMove
TestPlanMouseMove()
End Sub
Private Sub GrdTestPlan_Scroll(sender As Object, e As EventArgs) Handles GrdTestPlan.Scroll
TestPlanMouseMove()
End Sub
#End Region
#Region "SingleRow 提示选择列"
Private _lastSingleRowSelCol As Integer
Private _lastSingleRowSelRow As Integer
Private Sub UpdatePlanColNameTip(colName As String)
If StationPlanColHelpers.ContainsKey(colName) Then
Dim colHelper As PlanColHelper = StationPlanColHelpers.Item(colName)
RtxColTip.SuspendLayout()
RtxColTip.Clear()
RtxColTip.AppendText($"{colHelper.ColName}{vbCrLf}")
RtxColTip.AppendText($"类型:{colHelper.ColType}{vbCrLf}")
RtxColTip.AppendText($"描述:{colHelper.ColDesc}{vbCrLf}")
RtxColTip.ResumeLayout(False)
End If
End Sub
Private Sub UpdateCommandTip(colName As String, command As String, paramIndex As Integer)
If StationPlanCommandHelpers.ContainsKey(command) Then
Dim commandHelper As StationPlanCommandHelper = StationPlanCommandHelpers.Item(command)
RtxColTip.SuspendLayout()
RtxColTip.Clear()
RtxColTip.AppendText($"{colName}{vbCrLf}")
RtxColTip.AppendText($"类型:{commandHelper.Params(paramIndex).Type}{vbCrLf}")
RtxColTip.AppendText($"上限:{commandHelper.Params(paramIndex).UpperLimit}{vbCrLf}")
RtxColTip.AppendText($"下限:{commandHelper.Params(paramIndex).LowerLimit}{vbCrLf}")
RtxColTip.AppendText($"描述:{commandHelper.Params(paramIndex).Desc}{vbCrLf}")
RtxColTip.ResumeLayout(False)
Else
RtxColTip.AppendText($"{colName}{vbCrLf}")
End If
End Sub
'''
''' 单行信息表格更新当前行
'''
'''
Private Sub UpdateSingleRowTip(row As Integer)
Dim colName As String = GrdSingleRowInfo.Cell(row, SingleRowGrid.ColNameEnum.ColName).Text
If row >= SingleRowGrid.RowNameEnum.Parameter1 AndAlso row <= SingleRowGrid.RowNameEnum.Parameter6 Then
Dim command As String = GrdSingleRowInfo.Cell(SingleRowGrid.RowNameEnum.Command, SingleRowGrid.ColNameEnum.ColValue).Text
If String.IsNullOrEmpty(command) Then
UpdatePlanColNameTip(colName)
Else
UpdateCommandTip(colName, command, row - SingleRowGrid.RowNameEnum.Parameter1)
End If
Else
UpdatePlanColNameTip(colName)
End If
End Sub
Private Sub SingleRowSelChange(row As Integer)
If _lastSingleRowSelRow = row Then Return
'新增命令切换处理
GrdSingleRowInfo.Cell(_lastSingleRowSelRow, SingleRowGrid.ColNameEnum.ColName).FontBold = False
GrdSingleRowInfo.Cell(row, SingleRowGrid.ColNameEnum.ColName).FontBold = True
UpdateSingleRowTip(row) '更新列提示
_lastSingleRowSelRow = row
End Sub
Private Sub GrdSingleRowInfo_SelChange(sender As Object, e As Grid.SelChangeEventArgs) Handles GrdSingleRowInfo.SelChange
SingleRowSelChange(e.FirstRow)
End Sub
#End Region
End Class
End Namespace