This repository has been archived on 2025-11-27. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
AUTS_OLD/UTS_Core/UTSModule/Station/RowNodeGrid.vb

761 lines
35 KiB
VB.net
Raw Normal View History

2024-03-11 16:32:52 +08:00
Imports System.Drawing
Imports System.Windows.Forms
Imports FlexCell.Grid
Imports FlexCell
Imports UTS_Core.UTSModule.Production
Namespace UTSModule.Station
Public Class RowNodeGrid
''' <summary>
''' 行节点表,当前选择行
''' </summary>
Private _lastSingleRowSelRow As Integer
''' <summary>
''' 行节点表,下拉框选择行
''' </summary>
Private _grdSingleRowDropRow As Integer
''' <summary>
''' 行节点表,下拉框所在列
''' </summary>
Private _grdSingleRowDropCol As Integer
Private _grd As Grid
''' <summary>
''' 详细信息表格内容变更类型
''' </summary>
Private _cellChanged As GridCellChangedEnum = GridCellChangedEnum.None
Public Property RtxColTip As RichTextBox
Private ReadOnly _planColManager As PlanColManager '测试列提示管理器
Private ReadOnly _testCmdManager As TestCmdManager '测试命令管理器
Private ReadOnly _errCodeManager As ErrCodeManager '错误代码管理器
Private Property ActiveRowNode() As RowNode
Public Event RowNodeTextChanged(ByVal sender As Object, ByVal e As RowNodeChangedEventArgs) '自定义事件
2024-03-11 16:32:52 +08:00
Public Sub New()
_errCodeManager = ErrCodeManager.CreateManager()
_testCmdManager = TestCmdManager.CreateManager()
_planColManager = PlanColManager.CreateManager()
End Sub
#Region "FlexCell"
Public Property Grid() As Grid
Get
Return _grd
End Get
Set(value As Grid)
_grd = value
InitializeGrid()
RemoveHandler _grd.CellChange, AddressOf Grid_CellChange
RemoveHandler _grd.ComboClick, AddressOf Grid_ComboClick
RemoveHandler _grd.ComboDropDown, AddressOf Grid_ComboDropDown
RemoveHandler _grd.SelChange, AddressOf Grid_SelChange
AddHandler _grd.CellChange, AddressOf Grid_CellChange
AddHandler _grd.ComboClick, AddressOf Grid_ComboClick
AddHandler _grd.ComboDropDown, AddressOf Grid_ComboDropDown
AddHandler _grd.SelChange, AddressOf Grid_SelChange
End Set
End Property
''' <summary>
''' 初始化测试站表格
''' </summary>
Public Sub InitializeGrid()
With _grd
.AutoRedraw = False
.Rows = RowNames.Max '行数不确定
.Cols = ColNames.Max
.DisplayRowNumber = True '首列显示数字
.ExtendLastCol = True '最后一列自动扩充
.MultiSelect = False '是否允许选择多行
.BorderStyle = BorderStyleEnum.None
.DefaultFont = New Font("微软雅黑", 8)
.Range(0, 0, 0, .Cols - 1).Font = New Font($"幼圆", 8) '首行样式
For col As Integer = 0 To ColNames.Max - 1
.Cell(0, col).Text = [Enum].GetName(GetType(ColNames), col) '设置列名
Next
For i As Integer = 0 To RowNames.Max - 1
.Cell(i, ColNames.ColName).Text = [Enum].GetName(GetType(RowNames), i) '填充行内容
Next
.Column(ColNames.ColName).Locked = True
.Cell(RowNames.RowType, ColNames.ColValue).CellType = CellTypeEnum.ComboBox
.Cell(RowNames.ControlType, ColNames.ColValue).CellType = CellTypeEnum.ComboBox
.Cell(RowNames.ErrorCode, ColNames.ColValue).CellType = CellTypeEnum.ComboBox
.Cell(RowNames.Command, ColNames.ColValue).CellType = CellTypeEnum.ComboBox
.Cell(RowNames.CommandType, ColNames.ColValue).CellType = CellTypeEnum.ComboBox
.Cell(RowNames.ActionEn, ColNames.ColValue).CellType = CellTypeEnum.CheckBox
.Cell(RowNames.Action, ColNames.ColValue).CellType = CellTypeEnum.CheckBox
.Cell(RowNames.SaveToDb, ColNames.ColValue).CellType = CellTypeEnum.CheckBox
.Cell(RowNames.ActionEn, ColNames.ColValue).Locked = True
'CommandType 背景色
.Range(RowNames.CommandType, ColNames.ColValue, RowNames.CommandType, ColNames.ColValue).BackColor = Color.LemonChiffon
'Command 背景色
.Range(RowNames.Command, ColNames.ColValue, RowNames.Command, ColNames.ColValue).BackColor = Color.Beige
.Range(RowNames.Command, ColNames.ColValue, RowNames.Command, ColNames.ColValue).FontSize = 10
.Range(RowNames.Command, ColNames.ColValue, RowNames.Command, ColNames.ColValue).FontBold = True
'Description 背景色
.Range(RowNames.Description, ColNames.ColValue, RowNames.Description, ColNames.ColValue).BackColor = Color.MistyRose
.Range(RowNames.Description, ColNames.ColValue, RowNames.Description, ColNames.ColValue).FontSize = 10
.ComboBox(0).Locked = True
.AutoRedraw = True
.Refresh()
End With
End Sub
#End Region
#Region "表格事件处理"
Private _isUpload As Boolean
Private _beforeNode As RowNode
2024-03-11 16:32:52 +08:00
Private Sub Grid_CellChange(sender As Object, e As CellChangeEventArgs)
If ActiveRowNode Is Nothing Then Return
If _cellChanged = GridCellChangedEnum.None Then _cellChanged = GridCellChangedEnum.RowNodeInfo
If _cellChanged <> GridCellChangedEnum.RowNodeInfo Then Return
If Not _isUpload Then _beforeNode = ActiveRowNode.Clone
_isUpload = True
2024-03-11 16:32:52 +08:00
If e.Col = ColNames.ColValue Then
Dim value As String = _grd.Cell(e.Row, e.Col).Text
Dim changeType As RowNodeChangedEventArgs.RowNodeChangeType = RowNodeChangedEventArgs.RowNodeChangeType.None
2024-03-11 16:32:52 +08:00
Select Case e.Row
Case RowNames.Action
ActiveRowNode.Action = _grd.Cell(e.Row, e.Col).BooleanValue
changeType = RowNodeChangedEventArgs.RowNodeChangeType.Action
Case RowNames.Label
ActiveRowNode.Label = value
changeType = RowNodeChangedEventArgs.RowNodeChangeType.Label
Case RowNames.CommandType
Dim cmdType As String = _grd.Cell(RowNames.CommandType, ColNames.ColValue).Text
If String.Compare(ActiveRowNode.CommandType, cmdType) <> 0 Then
ActiveRowNode.CommandType = cmdType
ActiveRowNode.Command = ""
ActiveRowNode.Parameters.Clear()
ActiveRowNode.Action = Not String.IsNullOrWhiteSpace(ActiveRowNode.Command)
CommandTypeChanged(ActiveRowNode)
End If
2024-03-11 16:32:52 +08:00
ActiveRowNode.CommandType = value
changeType = RowNodeChangedEventArgs.RowNodeChangeType.CommandType
Case RowNames.ControlType
ActiveRowNode.ControlType = _grd.Cell(RowNames.ControlType, ColNames.ColValue).Text
Case RowNames.Command
Dim cmdName As String = _grd.Cell(RowNames.Command, ColNames.ColValue).Text
If String.Compare(ActiveRowNode.Command, cmdName) <> 0 Then
ActiveRowNode.Command = cmdName
ActiveRowNode.Parameters.Clear()
ActiveRowNode.Action = Not String.IsNullOrWhiteSpace(ActiveRowNode.Command)
'拷贝所有参数到当前节点信息中
Dim planCommand As TestCmd = _testCmdManager.GetCommand(ActiveRowNode.CommandType, ActiveRowNode.Command)
If planCommand Is Nothing Then Return
For Each cmdParam As TestCmdParam In planCommand.Params
ActiveRowNode.Parameters.Add(cmdParam.Clone())
Next
'更新行节点信息表格内容
CommandChanged(ActiveRowNode)
End If
ActiveRowNode.Command = value
changeType = RowNodeChangedEventArgs.RowNodeChangeType.Command
Case RowNames.ErrorCode
Dim codeMsg As String = _grd.Cell(RowNames.ErrorCode, ColNames.ColValue).Text
Dim errCode As String = ErrCodeManager.CodeMsgToCode(codeMsg)
If String.Compare(ActiveRowNode.ErrorCode, errCode) <> 0 Then
ActiveRowNode.ErrorCode = errCode
ActiveRowNode.ErrorMessage = _errCodeManager(ActiveRowNode.ErrorCode).Msg
_grd.Cell(RowNames.ErrorCode, ColNames.ColValue).Text = errCode
_grd.Cell(RowNames.ErrorCode, ColNames.ColValue).BackColor = _errCodeManager(ActiveRowNode.ErrorCode).Color
_grd.Cell(RowNames.ErrorMessage, ColNames.ColValue).BackColor = _grd.Cell(RowNames.ErrorCode, ColNames.ColValue).BackColor
ErrCodeChanged(ActiveRowNode)
End If
ActiveRowNode.ErrorCode = value
changeType = RowNodeChangedEventArgs.RowNodeChangeType.ErrorCode
Case RowNames.ErrorMessage
ActiveRowNode.ErrorMessage = value
changeType = RowNodeChangedEventArgs.RowNodeChangeType.ErrorMessage
2024-03-11 16:32:52 +08:00
Case RowNames.RowType
ActiveRowNode.RowType = CType([Enum].Parse(GetType(RowNode.RowTypeEnum), value), RowNode.RowTypeEnum)
changeType = RowNodeChangedEventArgs.RowNodeChangeType.RowType
Case RowNames.Description
ActiveRowNode.Description = value
changeType = RowNodeChangedEventArgs.RowNodeChangeType.Description
Case RowNames.SaveToDb
ActiveRowNode.SaveToDb = _grd.Cell(e.Row, e.Col).BooleanValue
changeType = RowNodeChangedEventArgs.RowNodeChangeType.SaveToDb
Case RowNames.RecordName
ActiveRowNode.RecordName = value
changeType = RowNodeChangedEventArgs.RowNodeChangeType.RecordName
Case RowNames.Retry
ActiveRowNode.Retry = CInt(value)
changeType = RowNodeChangedEventArgs.RowNodeChangeType.Retry
Case RowNames.RetryInterval
ActiveRowNode.RetryInterval = CInt(value)
changeType = RowNodeChangedEventArgs.RowNodeChangeType.RetryInterval
2024-03-11 16:32:52 +08:00
Case >= RowNames.Parameters
If e.Row - RowNames.Parameters > ActiveRowNode.Parameters.Count - 1 Then Return
ActiveRowNode.Parameters(e.Row - RowNames.Parameters).Value = value
changeType = RowNodeChangedEventArgs.RowNodeChangeType.Parameters
End Select
If changeType = RowNodeChangedEventArgs.RowNodeChangeType.None Then Return
If _beforeNode IsNot Nothing Then
Dim args As New RowNodeChangedEventArgs With {
.Node = ActiveRowNode,
.BeforeNode = _beforeNode,
.ChangeType = changeType
}
RaiseEvent RowNodeTextChanged(sender, args)
End If
2024-03-11 16:32:52 +08:00
End If
_isUpload = False
2024-03-11 16:32:52 +08:00
_cellChanged = GridCellChangedEnum.None
End Sub
''' <summary>
''' 单行信息表格命令修改后,同步刷新本身信息
''' </summary>
Private Sub CommandChanged(node As RowNode)
_grd.Rows = RowNames.Parameters + node.Parameters.Count
For idx As Integer = 0 To node.Parameters.Count - 1
Dim row As Integer = RowNames.Parameters + idx
_grd.Cell(row, ColNames.ColName).Text = node.Parameters(idx).Desc
_grd.Cell(row, ColNames.ColValue).Text = node.Parameters(idx).Value
Next
_grd.Range(RowNames.LineNumber, ColNames.ColName, _grd.Rows - 1, ColNames.ColName).BackColor = Color.LightGray
_grd.Range(RowNames.LineNumber, ColNames.ColName, _grd.Rows - 1, ColNames.ColName).Alignment = AlignmentEnum.RightCenter
2024-03-11 16:32:52 +08:00
End Sub
Private Sub CommandTypeChanged(node As RowNode)
_grd.Rows = RowNames.Parameters + 1
_grd.Cell(RowNames.Command, ColNames.ColValue).Text = node.Command
_grd.Cell(RowNames.Parameters, ColNames.ColName).Text = RowNames.Parameters.ToString()
_grd.Cell(RowNames.Parameters, ColNames.ColValue).Text = ""
_grd.Range(RowNames.LineNumber, ColNames.ColName, _grd.Rows - 1, ColNames.ColName).BackColor = Color.LightGray
_grd.Range(RowNames.LineNumber, ColNames.ColName, _grd.Rows - 1, ColNames.ColName).Alignment = AlignmentEnum.RightCenter
2024-03-11 16:32:52 +08:00
End Sub
Private Sub ErrCodeChanged(node As RowNode)
_grd.Cell(RowNames.ErrorMessage, ColNames.ColValue).Text = node.ErrorMessage
End Sub
''' <summary>
''' 下拉框选择对象事件
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub Grid_ComboClick(sender As Object, e As ComboClickEventArgs)
'If ActiveRowNode Is Nothing Then Return
'Dim changeType As RowNodeChangedEventArgs.RowNodeChangeType = RowNodeChangedEventArgs.RowNodeChangeType.None
'Dim beforeNode As RowNode = ActiveRowNode.Clone
'Select Case _grdSingleRowDropRow
' Case RowNames.ControlType
' ActiveRowNode.ControlType = _grd.Cell(RowNames.ControlType, ColNames.ColValue).Text
' changeType = RowNodeChangedEventArgs.RowNodeChangeType.ControlType
' Case RowNames.CommandType
' '如果命令类型变化则,清空命令
' Dim cmdType As String = _grd.Cell(RowNames.CommandType, ColNames.ColValue).Text
' If String.Compare(ActiveRowNode.CommandType, cmdType) <> 0 Then
' ActiveRowNode.CommandType = cmdType
' ActiveRowNode.Command = ""
' ActiveRowNode.Parameters.Clear()
' CommandTypeChanged(ActiveRowNode)
' changeType = RowNodeChangedEventArgs.RowNodeChangeType.CommandType
' End If
' Case RowNames.Command
' Dim cmdName As String = _grd.Cell(RowNames.Command, ColNames.ColValue).Text
' If String.Compare(ActiveRowNode.Command, cmdName) <> 0 Then
' ActiveRowNode.Command = cmdName
' ActiveRowNode.Parameters.Clear()
' '拷贝所有参数到当前节点信息中
' Dim planCommand As TestCmd = _testCmdManager.GetCommand(ActiveRowNode.CommandType, ActiveRowNode.Command)
' If planCommand Is Nothing Then Return
' For Each cmdParam As TestCmdParam In planCommand.Params
' ActiveRowNode.Parameters.Add(cmdParam.Clone())
' Next
' '更新行节点信息表格内容
' CommandChanged(ActiveRowNode)
' changeType = RowNodeChangedEventArgs.RowNodeChangeType.Command
' End If
' Case RowNames.ErrorCode
' Dim codeMsg As String = _grd.Cell(RowNames.ErrorCode, ColNames.ColValue).Text
' Dim errCode As String = ErrCodeManager.CodeMsgToCode(codeMsg)
' If String.Compare(ActiveRowNode.ErrorCode, errCode) <> 0 Then
' ActiveRowNode.ErrorCode = errCode
' ActiveRowNode.ErrorMessage = _errCodeManager(ActiveRowNode.ErrorCode).Msg
' _grd.Cell(RowNames.ErrorCode, ColNames.ColValue).Text = errCode
' _grd.Cell(RowNames.ErrorCode, ColNames.ColValue).BackColor = _errCodeManager(ActiveRowNode.ErrorCode).Color
' _grd.Cell(RowNames.ErrorMessage, ColNames.ColValue).BackColor = _grd.Cell(RowNames.ErrorCode, ColNames.ColValue).BackColor
' ErrCodeChanged(ActiveRowNode)
' changeType = RowNodeChangedEventArgs.RowNodeChangeType.ErrorCode
' End If
'End Select
'If changeType = RowNodeChangedEventArgs.RowNodeChangeType.None Then Return
'Dim args As New RowNodeChangedEventArgs With {
' .Node = ActiveRowNode,
' .BeforeNode = beforeNode,
' .ChangeType = changeType
'}
'RaiseEvent RowNodeTextChanged(sender, args)
2024-03-11 16:32:52 +08:00
End Sub
''' <summary>
''' 表格下拉框出现时触发事件
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub Grid_ComboDropDown(sender As Object, e As ComboDropDownEventArgs)
_grdSingleRowDropRow = e.Row
_grdSingleRowDropCol = e.Col
Select Case e.Row
Case RowNames.ControlType
_grd.ComboBox(0).Items.Clear()
If ActiveRowNode.ParentNode.ControlType = "If" Then
_grd.ComboBox(0).Items.Add("Then")
_grd.ComboBox(0).Items.Add("ElseIf")
_grd.ComboBox(0).Items.Add("Else")
Else
_grd.ComboBox(0).Items.Add("While")
_grd.ComboBox(0).Items.Add("If")
End If
Case RowNames.CommandType
_grd.ComboBox(0).Items.Clear()
_grd.ComboBox(0).Items.AddRange(_testCmdManager.GetCommandTypes())
Case RowNames.Command
_grd.ComboBox(0).Items.Clear()
_grd.ComboBox(0).Items.AddRange(_testCmdManager.GetCommandNames(ActiveRowNode.CommandType))
Case RowNames.ErrorCode
_grd.ComboBox(0).Items.Clear()
_grd.ComboBox(0).Items.AddRange(_errCodeManager.GetAllCodeAndMsg())
Case RowNames.RowType
_grd.ComboBox(0).Items.Clear()
_grd.ComboBox(0).Items.Add(RowNode.RowTypeEnum.Control)
_grd.ComboBox(0).Items.Add(RowNode.RowTypeEnum.Flow)
_grd.ComboBox(0).Items.Add(RowNode.RowTypeEnum.Module)
Case RowNames.Parameters '特殊处理Call命令
_grd.ComboBox(0).Items.Clear()
_grd.ComboBox(0).Items.AddRange(UTS_Core.UTSModule.Test.UtsTester.CreateTester.GetCustomModuleName())
2024-03-11 16:32:52 +08:00
End Select
End Sub
''' <summary>
''' 更新流程列名提示
''' </summary>
''' <param name="colName"></param>
Private Sub UpdatePlanColNameTip(colName As String)
If _planColManager.IndexOf(colName) > 0 Then
Dim planCol As PlanCol = _planColManager(colName)
RtxColTip.SuspendLayout()
RtxColTip.Clear()
RtxColTip.AppendText($"{planCol.ColName}{vbCrLf}")
RtxColTip.AppendText($"类型:{planCol.ColType}{vbCrLf}")
RtxColTip.AppendText($"描述:{planCol.ColDesc}{vbCrLf}")
RtxColTip.ResumeLayout(False)
End If
End Sub
''' <summary>
''' 更新流程命令提示
''' </summary>
''' <param name="colName"></param>
''' <param name="commandType"></param>
''' <param name="commandName"></param>
''' <param name="paramIndex"></param>
Private Sub UpdateCommandTip(colName As String, commandType As String, commandName As String, paramIndex As Integer)
Dim planCommand As TestCmd = _testCmdManager.GetCommand(commandType, commandName)
If planCommand IsNot Nothing Then
RtxColTip.SuspendLayout()
RtxColTip.Clear()
RtxColTip.AppendText($"{colName}{vbCrLf}")
RtxColTip.AppendText($"类型:{planCommand.Params(paramIndex).Type}{vbCrLf}")
RtxColTip.AppendText($"上限:{planCommand.Params(paramIndex).UpperLimit}{vbCrLf}")
RtxColTip.AppendText($"下限:{planCommand.Params(paramIndex).LowerLimit}{vbCrLf}")
RtxColTip.AppendText($"描述:{planCommand.Params(paramIndex).Desc}{vbCrLf}")
RtxColTip.ResumeLayout(False)
Else
RtxColTip.AppendText($"{colName}{vbCrLf}")
End If
End Sub
''' <summary>
''' 单行信息表格更新当前行
''' </summary>
''' <param name="row"></param>
Private Sub UpdateSingleRowTip(row As Integer)
Dim colName As String = _grd.Cell(row, ColNames.ColName).Text
If row >= RowNames.Parameters Then
Dim commandType As String = _grd.Cell(RowNames.CommandType, ColNames.ColValue).Text
Dim command As String = _grd.Cell(RowNames.Command, ColNames.ColValue).Text
If String.IsNullOrEmpty(command) Then
UpdatePlanColNameTip(colName)
Else
UpdateCommandTip(colName, commandType, command, row - RowNames.Parameters)
End If
Else
UpdatePlanColNameTip(colName)
End If
End Sub
Private Sub SingleRowSelChange(row As Integer)
If _lastSingleRowSelRow = row Then Return
If _lastSingleRowSelRow >= _grd.Rows Then Return
'新增命令切换处理
_grd.Cell(_lastSingleRowSelRow, ColNames.ColName).FontBold = False
_grd.Cell(row, ColNames.ColName).FontBold = True
UpdateSingleRowTip(row) '更新列提示
_lastSingleRowSelRow = row
End Sub
Private Sub Grid_SelChange(sender As Object, e As SelChangeEventArgs)
SingleRowSelChange(e.FirstRow)
End Sub
#End Region
#Region "外部事件处理"
''' <summary>
''' 主表格选中单元格时触发事件
''' </summary>
''' <param name="node"></param>
''' <param name="LineNumber"></param>
''' <param name="LineActionEn"></param>
Public Sub AfterSelectUpdateGrid(node As RowNode, LineNumber As Integer, LineActionEn As Boolean)
Dim col As Integer = ColNames.ColValue
Dim textColor As Color
Dim RecordNameEn As Boolean
_grd.AutoRedraw = False
With _grd
.SuspendLayout()
.Column(col).Locked = Not node.CanChangeContent '是否允许编辑
If node.Parameters.Count > 0 Then
.Rows = RowNames.Parameters + node.Parameters.Count
'todo:特殊处理Call命令
If node.Command = "Call" Then
.Cell(RowNames.Parameters, col).CellType = CellTypeEnum.ComboBox
Else
.Cell(RowNames.Parameters, col).CellType = CellTypeEnum.TextBox
End If
For i As Integer = 0 To node.Parameters.Count - 1
.Cell(RowNames.Parameters + i, ColNames.ColName).Text = node.Parameters(i).Desc
.Cell(RowNames.Parameters + i, col).Text = node.Parameters(i).Value
Next
Else
.Rows = RowNames.Parameters + 1
2024-03-11 16:32:52 +08:00
.Cell(RowNames.Parameters, ColNames.ColName).Text = RowNames.Parameters.ToString()
.Cell(RowNames.Parameters, col).CellType = CellTypeEnum.TextBox
.Cell(RowNames.Parameters, col).Text = ""
End If
.Cell(RowNames.LineNumber, col).Text = LineNumber.ToString
.Cell(RowNames.RowType, col).Text = node.RowType.ToString()
.Cell(RowNames.ActionEn, col).Text = LineActionEn.ToString()
.Cell(RowNames.Action, col).Text = IIf(node.Action, "1", "0").ToString()
.Cell(RowNames.ErrorCode, col).Text = node.ErrorCode.ToString()
.Cell(RowNames.ErrorMessage, col).Text = node.ErrorMessage.ToString()
.Cell(RowNames.Command, col).Text = node.Command.ToString()
.Cell(RowNames.CommandType, col).Text = node.CommandType.ToString()
.Cell(RowNames.[Label], col).Text = node.[Label].ToString()
.Cell(RowNames.Description, col).Text = node.Description.ToString()
.Cell(RowNames.SaveToDb, col).Text = node.SaveToDb.ToString()
.Cell(RowNames.RecordName, col).Text = node.RecordName.ToString()
.Cell(RowNames.Retry, col).Text = node.Retry.ToString()
.Cell(RowNames.RetryInterval, col).Text = node.RetryInterval.ToString()
textColor = setRowTextForeColor(.Cell(RowNames.CommandType, col).Text, LineActionEn, node.RowType)
.Cell(RowNames.CommandType, col).ForeColor = textColor
.Cell(RowNames.RecordName, col).ForeColor = textColor
Select Case node.RowType
Case RowNode.RowTypeEnum.FixedModule
.Range(RowNames.RowType, col, RowNames.RowType, ColNames.Max - 1).BackColor = Color.PeachPuff
.Range(RowNames.RowType, col, RowNames.RowType, ColNames.Max - 1).ForeColor = Color.Blue
.Range(RowNames.RowType, col, RowNames.RowType, ColNames.Max - 1).FontBold = True
Case Else
.Range(RowNames.RowType, col, RowNames.RowType, ColNames.Max - 1).BackColor = Color.White
.Range(RowNames.RowType, col, RowNames.RowType, ColNames.Max - 1).ForeColor = textColor
.Range(RowNames.RowType, col, RowNames.RowType, ColNames.Max - 1).FontBold = False
End Select
If String.IsNullOrWhiteSpace(node.ErrorCode) = False Then
.Cell(RowNames.ErrorCode, col).BackColor = _errCodeManager(node.ErrorCode).Color
.Cell(RowNames.ErrorMessage, col).BackColor = .Cell(RowNames.ErrorCode, col).BackColor
Else
.Cell(RowNames.ErrorCode, col).BackColor = Color.White
.Cell(RowNames.ErrorMessage, col).BackColor = Color.White
End If
' .Range(RowNames.Label, ColNames.ColValue, _grd.Rows - 1, ColNames.ColValue).BackColor = Color.White
.Range(RowNames.Label, ColNames.ColValue, _grd.Rows - 1, ColNames.ColValue).ForeColor = textColor
' .Range(RowNames.Label, ColNames.ColValue, _grd.Rows - 1, ColNames.ColValue).FontBold = False
RecordNameEn = LineActionEn And .Cell(RowNames.SaveToDb, col).BooleanValue
textColor = setRowTextForeColor(.Cell(RowNames.CommandType, col).Text, RecordNameEn, node.RowType)
.Cell(RowNames.RecordName, col).ForeColor = textColor
.Cell(RowNames.Command, ColNames.ColValue).ForeColor = Color.Blue
.Range(RowNames.LineNumber, ColNames.ColName, _grd.Rows - 1, ColNames.ColName).BackColor = Color.LightGray
.Range(RowNames.LineNumber, ColNames.ColName, _grd.Rows - 1, ColNames.ColName).Alignment = AlignmentEnum.RightCenter
.ResumeLayout(False)
.PerformLayout()
End With
_grd.AutoRedraw = True
_grd.Refresh()
End Sub
''' <summary>
''' 根据CmdType 和 isAction 返回该行字体颜色
''' </summary>
''' <returns></returns>
Public Function setRowTextForeColor(rowCmdType As String, isAction As Boolean, Optional rowNodeType As Integer = 3) As Color
If isAction = True Then
If rowNodeType = RowNode.RowTypeEnum.Flow Then
Select Case rowCmdType
Case "System"
Return Color.DarkSlateGray
Case "ComPort"
Return Color.DarkCyan
Case "UtsComPort"
Return Color.SeaGreen
Case "Converter"
Return Color.DarkOrange
Case "Process"
Return Color.DarkBlue
Case Else
Return Color.Black
End Select
ElseIf rowNodeType = RowNode.RowTypeEnum.Module Then
Return Color.DeepPink
ElseIf rowNodeType = RowNode.RowTypeEnum.FixedModule Then
Return Color.Blue
End If
Else
Return Color.LightGray
End If
End Function
Public Sub Grid_PlanNodeSelectChanged(sender As Object, ByVal e As PlanNodeSelectChangedEventArgs)
If e.Node Is Nothing Then Return
If _cellChanged = GridCellChangedEnum.None Then _cellChanged = GridCellChangedEnum.SelectChange
If _cellChanged = GridCellChangedEnum.SelectChange Then
ActiveRowNode = e.Node
AfterSelectUpdateGrid(ActiveRowNode, e.LineNumber, e.LineActionEn)
_cellChanged = GridCellChangedEnum.None
End If
End Sub
Public Sub RowNodeTextChangedUpdateGrid(e As RowNodeChangedEventArgs)
Dim col As Integer = ColNames.ColValue
Dim node As RowNode = e.Node
With _grd
Select Case e.ChangeType
Case RowNodeChangedEventArgs.RowNodeChangeType.Action
.Cell(RowNames.Action, col).Text = IIf(node.Action, "1", "0").ToString()
Case RowNodeChangedEventArgs.RowNodeChangeType.SaveToDb
.Cell(RowNames.SaveToDb, col).Text = IIf(node.SaveToDb, "1", "0").ToString
Case RowNodeChangedEventArgs.RowNodeChangeType.RowType
.Cell(RowNames.RowType, col).Text = node.RowType.ToString()
Case RowNodeChangedEventArgs.RowNodeChangeType.Label
.Cell(RowNames.[Label], col).Text = node.[Label].ToString()
Case RowNodeChangedEventArgs.RowNodeChangeType.Description
.Cell(RowNames.Description, col).Text = node.Description.ToString()
Case RowNodeChangedEventArgs.RowNodeChangeType.CommandType
.Cell(RowNames.CommandType, col).Text = node.CommandType.ToString()
CommandTypeChanged(node)
Case RowNodeChangedEventArgs.RowNodeChangeType.Command
.Cell(RowNames.Command, col).Text = node.Command.ToString()
CommandChanged(node)
Case RowNodeChangedEventArgs.RowNodeChangeType.Parameters
If node.Parameters.Count > 0 Then
.Rows = RowNames.Parameters + node.Parameters.Count
For i As Integer = 0 To node.Parameters.Count - 1
.Cell(RowNames.Parameters + i, ColNames.ColName).Text = node.Parameters(i).Desc
.Cell(RowNames.Parameters + i, col).Text = node.Parameters(i).Value
Next
Else
.Rows = RowNames.Parameters + 1
.Cell(RowNames.Parameters, ColNames.ColName).Text = RowNames.Parameters.ToString()
.Cell(RowNames.Parameters, col).Text = ""
End If
Case RowNodeChangedEventArgs.RowNodeChangeType.RecordName
.Cell(RowNames.RecordName, col).Text = node.RecordName.ToString()
Case RowNodeChangedEventArgs.RowNodeChangeType.Retry
.Cell(RowNames.Retry, col).Text = node.Retry.ToString()
Case RowNodeChangedEventArgs.RowNodeChangeType.RetryInterval
.Cell(RowNames.RetryInterval, col).Text = node.RetryInterval.ToString()
Case RowNodeChangedEventArgs.RowNodeChangeType.ErrorCode
.Cell(RowNames.ErrorCode, col).Text = node.ErrorCode
If String.IsNullOrWhiteSpace(node.ErrorCode) = False Then
.Cell(RowNames.ErrorCode, col).BackColor = _errCodeManager(node.ErrorCode).Color
.Cell(RowNames.ErrorMessage, col).BackColor = .Cell(RowNames.ErrorCode, col).BackColor
Else
.Cell(RowNames.ErrorCode, col).BackColor = Color.White
.Cell(RowNames.ErrorMessage, col).BackColor = Color.White
End If
Case RowNodeChangedEventArgs.RowNodeChangeType.ErrorMessage
.Cell(RowNames.ErrorMessage, col).Text = node.ErrorMessage.ToString()
End Select
End With
End Sub
Public Sub Grid_RowNodeTextChanged(sender As Object, e As RowNodeChangedEventArgs)
If _cellChanged = GridCellChangedEnum.None Then _cellChanged = GridCellChangedEnum.TextChange
If _cellChanged <> GridCellChangedEnum.TextChange Then Return
RowNodeTextChangedUpdateGrid(e)
_cellChanged = GridCellChangedEnum.None
End Sub
#End Region
Public Enum ColNames
Sn
ColName
ColValue
Max
End Enum
Public Enum RowNames
ColName
LineNumber
RowType
[Label]
ControlType
Description
ActionEn
Action
SaveToDb
RecordName
Retry
RetryInterval
ErrorCode
ErrorMessage
CommandType
Command
Parameters
Max
End Enum
''' <summary>
''' 详细信息表格内容变更类型枚举值
''' </summary>
Enum GridCellChangedEnum
''' <summary>
''' 未变更
''' </summary>
None
''' <summary>
''' 加载流程时时引起的变更
''' </summary>
TestPlan
''' <summary>
''' 行节点信息修改引起的变更
''' </summary>
RowNodeInfo
''' <summary>
''' 切换选择节点引起的变更
''' </summary>
SelectChange
''' <summary>
''' 关联节点内容变更
''' </summary>
TextChange
End Enum
End Class
End Namespace