批量粘贴与批量撤销功能上线

This commit is contained in:
2025-05-15 11:12:31 +08:00
parent 88c4699a48
commit 841c866cd8
7 changed files with 401 additions and 219 deletions

78
.gitignore vendored
View File

@@ -1,41 +1,47 @@
#
#ignore thumbnails created by windows
Thumbs.db
#Ignore files build by Visual Studio
*.obj
*.exe
*.pdb
*.user
*.aps
*.pch
*.vspscc
*_i.c
*_p.c
*.ncb
*.suo
*.tlb
*.tlh
*.bak
*.cache
*.ilk
*.log
[Bb]in/
[Dd]ebug*/
*.sbr
obj/
[Rr]elease*/
_ReSharper*/
[Tt]est[Rr]esult*
packages
log.txt
/.vs
.vs/ .vs/
node_modules/ # .NET编译生成文件
[Bb]in
[Oo]bj
[Dd]ebug*/
*.pdb
*.user
*.suo
*.cache
*.ilk
*.ncb
*.opensdf
*.sdf
*.vsp
*.vspscc
# 发布输出
publish/
*.pubxml
# NuGet包
packages/
*.nupkg
# Visual Studio临时文件
_ReSharper.*
*.resharper
[Tt]emp/
# MSTest测试结果
TestResults/
*.trx
# Rider IDE
.idea/ .idea/
.DS_Store *.sln.iml
# VS Code
.vscode/
*.code-workspace
# 用户特定文件
*.userprefs
# 构建日志
msbuild.log

View File

@@ -118,6 +118,24 @@ Namespace UTSModule.Station
Public Sub PlanGridSelectChanged(sender As Object, ByVal e As PlanNodeSelectChangedEventArgs) Public Sub PlanGridSelectChanged(sender As Object, ByVal e As PlanNodeSelectChangedEventArgs)
TsBtnBackward.Enabled = _planGrid.CanBackward TsBtnBackward.Enabled = _planGrid.CanBackward
TsBtnForward.Enabled = _planGrid.CanForward TsBtnForward.Enabled = _planGrid.CanForward
'表格移动
If GrdStationPlan Is Nothing OrElse GrdStationPlan.Tree.SelectedNode Is Nothing Then Return
Dim canMove As Boolean = True
Dim startMoveRow As Integer = GrdStationPlan.Selection.FirstRow
Dim moveRows As Integer = GrdStationPlan.Selection.LastRow - GrdStationPlan.Selection.FirstRow + 1
Dim startLever As Integer = GrdStationPlan.Tree.FindNode(startMoveRow).Level
For i As Integer = startMoveRow To startMoveRow + moveRows - 1
If startLever <> GrdStationPlan.Tree.FindNode(startMoveRow).Level Then
canMove = False
Exit For
End If
Next
TsBtnMoveDown.Enabled = canMove
TsBtnMoveLeft.Enabled = canMove
TsBtnMoveRight.Enabled = canMove
TsBtnMoveUp.Enabled = canMove
End Sub End Sub
Public Sub PlanGridCommandChanged(sender As Object, e As EventArgs) Public Sub PlanGridCommandChanged(sender As Object, e As EventArgs)

View File

@@ -1,24 +1,35 @@
Public Class GridNodeTextChangedCommand : Implements ICommand Imports UTS_Core.UTSModule.Station
Private ReadOnly grd As FlexCell.Grid Public Class GridNodeTextChangedCommand : Implements ICommand
Private ReadOnly row As Integer
Private ReadOnly col As Integer
Private ReadOnly beforeText As String
Private ReadOnly afterText As String
Sub New(grd As FlexCell.Grid, row As Integer, col As Integer, beforeText As String, afterText As String) Private ReadOnly grd As StationPlanGrid
Private ReadOnly dic As Dictionary(Of Integer, TextChangedRowNode)
Sub New(grd As StationPlanGrid, dic As Dictionary(Of Integer, TextChangedRowNode))
Me.grd = grd Me.grd = grd
Me.row = row Me.dic = dic
Me.col = col
Me.beforeText = beforeText
Me.afterText = afterText
End Sub End Sub
Public Sub Redo() Implements ICommand.Redo Public Sub Redo() Implements ICommand.Redo
grd.Cell(row, col).Text = afterText For Each row As Integer In dic.Keys
grd.UpdateGrid2(dic(row).AfterRowNode)
Next
End Sub End Sub
Public Sub Undo() Implements ICommand.Undo Public Sub Undo() Implements ICommand.Undo
grd.Cell(row, col).Text = beforeText
For Each row As Integer In dic.Keys
grd.UpdateGrid2(dic(row).BeforeRowNode)
Next
End Sub End Sub
End Class End Class
Public Class TextChangedRowNode
Public Property BeforeRowNode As RowNode
Public Property AfterRowNode As RowNode
End Class

View File

@@ -26,6 +26,18 @@
''' <returns></returns> ''' <returns></returns>
Public Property Node() As RowNode Public Property Node() As RowNode
''' <summary>
''' 修改前的节点
''' </summary>
''' <returns></returns>
Public Property BeforeNode() As RowNode
''' <summary>
''' 修改类型
''' </summary>
''' <returns></returns>
Public Property ChangeType() As RowNodeChangeType Public Property ChangeType() As RowNodeChangeType
End Class End Class

View File

@@ -406,6 +406,12 @@ Namespace UTSModule.Station
Dim cpNode As New RowNode Dim cpNode As New RowNode
With cpNode With cpNode
.RowListIndex = RowListIndex
.Pause = Pause
.ControlType = ControlType
.SaveToDb = SaveToDb
.RowType = RowType .RowType = RowType
.Action = Action .Action = Action
@@ -428,19 +434,44 @@ Namespace UTSModule.Station
.Parameters.Add(param.Clone()) .Parameters.Add(param.Clone())
Next Next
.RowNodes = New RowNodeCollection(cpNode) '.RowNodes = New RowNodeCollection(cpNode)
.Children = New List(Of RowNode)() '.Children = New List(Of RowNode)()
'todo:克隆功能待重写 ''todo:克隆功能待重写
For Each child As RowNode In Children 'For Each child As RowNode In Children
.RowNodes.Add(child.Clone()) ' .RowNodes.Add(child.Clone())
Next 'Next
End With End With
Return cpNode Return cpNode
End Function End Function
Public Sub CopyFrom(node As RowNode)
With node
.RowListIndex = RowListIndex
Pause = .Pause
ControlType = .ControlType
SaveToDb = .SaveToDb
RowType = .RowType
Action = .Action
RecordName = .RecordName
Retry = .Retry
RetryInterval = .RetryInterval
[Label] = String.Copy(.Label)
Description = String.Copy(.Description)
ErrorCode = String.Copy(.ErrorCode)
ErrorMessage = String.Copy(.ErrorMessage)
CommandType = String.Copy(.CommandType)
Command = String.Copy(.Command)
Parameters.Clear()
For Each param As TestCmdParam In .Parameters
Parameters.Add(param.Clone())
Next
End With
End Sub
#End Region #End Region
#Region "节点样式" #Region "节点样式"

View File

@@ -140,15 +140,20 @@ Namespace UTSModule.Station
#Region "表格事件处理" #Region "表格事件处理"
Private _isUpload As Boolean
Private _beforeNode As RowNode
Private Sub Grid_CellChange(sender As Object, e As CellChangeEventArgs) Private Sub Grid_CellChange(sender As Object, e As CellChangeEventArgs)
If ActiveRowNode Is Nothing Then Return If ActiveRowNode Is Nothing Then Return
If _cellChanged = GridCellChangedEnum.None Then _cellChanged = GridCellChangedEnum.RowNodeInfo If _cellChanged = GridCellChangedEnum.None Then _cellChanged = GridCellChangedEnum.RowNodeInfo
If _cellChanged <> GridCellChangedEnum.RowNodeInfo Then Return If _cellChanged <> GridCellChangedEnum.RowNodeInfo Then Return
If Not _isUpload Then _beforeNode = ActiveRowNode.Clone
_isUpload = True
If e.Col = ColNames.ColValue Then If e.Col = ColNames.ColValue Then
Dim value As String = _grd.Cell(e.Row, e.Col).Text Dim value As String = _grd.Cell(e.Row, e.Col).Text
Dim changeType As RowNodeChangedEventArgs.RowNodeChangeType Dim changeType As RowNodeChangedEventArgs.RowNodeChangeType = RowNodeChangedEventArgs.RowNodeChangeType.None
changeType = RowNodeChangedEventArgs.RowNodeChangeType.None
Select Case e.Row Select Case e.Row
Case RowNames.Action Case RowNames.Action
ActiveRowNode.Action = _grd.Cell(e.Row, e.Col).BooleanValue ActiveRowNode.Action = _grd.Cell(e.Row, e.Col).BooleanValue
@@ -157,8 +162,55 @@ Namespace UTSModule.Station
ActiveRowNode.Label = value ActiveRowNode.Label = value
changeType = RowNodeChangedEventArgs.RowNodeChangeType.Label changeType = RowNodeChangedEventArgs.RowNodeChangeType.Label
Case RowNames.CommandType 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
ActiveRowNode.CommandType = value ActiveRowNode.CommandType = value
changeType = RowNodeChangedEventArgs.RowNodeChangeType.CommandType 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
Case RowNames.RowType Case RowNames.RowType
ActiveRowNode.RowType = CType([Enum].Parse(GetType(RowNode.RowTypeEnum), value), RowNode.RowTypeEnum) ActiveRowNode.RowType = CType([Enum].Parse(GetType(RowNode.RowTypeEnum), value), RowNode.RowTypeEnum)
changeType = RowNodeChangedEventArgs.RowNodeChangeType.RowType changeType = RowNodeChangedEventArgs.RowNodeChangeType.RowType
@@ -177,18 +229,7 @@ Namespace UTSModule.Station
Case RowNames.RetryInterval Case RowNames.RetryInterval
ActiveRowNode.RetryInterval = CInt(value) ActiveRowNode.RetryInterval = CInt(value)
changeType = RowNodeChangedEventArgs.RowNodeChangeType.RetryInterval changeType = RowNodeChangedEventArgs.RowNodeChangeType.RetryInterval
Case RowNames.ErrorCode
ActiveRowNode.ErrorCode = value
changeType = RowNodeChangedEventArgs.RowNodeChangeType.ErrorCode
Case RowNames.ErrorMessage
ActiveRowNode.ErrorMessage = value
changeType = RowNodeChangedEventArgs.RowNodeChangeType.ErrorMessage
Case RowNames.CommandType
ActiveRowNode.CommandType = value
changeType = RowNodeChangedEventArgs.RowNodeChangeType.CommandType
Case RowNames.Command
ActiveRowNode.Command = value
changeType = RowNodeChangedEventArgs.RowNodeChangeType.Command
Case >= RowNames.Parameters Case >= RowNames.Parameters
If e.Row - RowNames.Parameters > ActiveRowNode.Parameters.Count - 1 Then Return If e.Row - RowNames.Parameters > ActiveRowNode.Parameters.Count - 1 Then Return
ActiveRowNode.Parameters(e.Row - RowNames.Parameters).Value = value ActiveRowNode.Parameters(e.Row - RowNames.Parameters).Value = value
@@ -197,13 +238,16 @@ Namespace UTSModule.Station
If changeType = RowNodeChangedEventArgs.RowNodeChangeType.None Then Return If changeType = RowNodeChangedEventArgs.RowNodeChangeType.None Then Return
Dim args As New RowNodeChangedEventArgs With { If _beforeNode IsNot Nothing Then
.Node = ActiveRowNode, Dim args As New RowNodeChangedEventArgs With {
.ChangeType = changeType .Node = ActiveRowNode,
} .BeforeNode = _beforeNode,
RaiseEvent RowNodeTextChanged(sender, args) .ChangeType = changeType
}
RaiseEvent RowNodeTextChanged(sender, args)
End If
End If End If
_isUpload = False
_cellChanged = GridCellChangedEnum.None _cellChanged = GridCellChangedEnum.None
End Sub End Sub
@@ -218,6 +262,9 @@ Namespace UTSModule.Station
_grd.Cell(row, ColNames.ColName).Text = node.Parameters(idx).Desc _grd.Cell(row, ColNames.ColName).Text = node.Parameters(idx).Desc
_grd.Cell(row, ColNames.ColValue).Text = node.Parameters(idx).Value _grd.Cell(row, ColNames.ColValue).Text = node.Parameters(idx).Value
Next 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
End Sub End Sub
@@ -227,6 +274,9 @@ Namespace UTSModule.Station
_grd.Cell(RowNames.Command, ColNames.ColValue).Text = node.Command _grd.Cell(RowNames.Command, ColNames.ColValue).Text = node.Command
_grd.Cell(RowNames.Parameters, ColNames.ColName).Text = RowNames.Parameters.ToString() _grd.Cell(RowNames.Parameters, ColNames.ColName).Text = RowNames.Parameters.ToString()
_grd.Cell(RowNames.Parameters, ColNames.ColValue).Text = "" _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
End Sub End Sub
Private Sub ErrCodeChanged(node As RowNode) Private Sub ErrCodeChanged(node As RowNode)
@@ -239,47 +289,62 @@ Namespace UTSModule.Station
''' <param name="sender"></param> ''' <param name="sender"></param>
''' <param name="e"></param> ''' <param name="e"></param>
Private Sub Grid_ComboClick(sender As Object, e As ComboClickEventArgs) Private Sub Grid_ComboClick(sender As Object, e As ComboClickEventArgs)
If ActiveRowNode Is Nothing Then Return 'If ActiveRowNode Is Nothing Then Return
Select Case _grdSingleRowDropRow 'Dim changeType As RowNodeChangedEventArgs.RowNodeChangeType = RowNodeChangedEventArgs.RowNodeChangeType.None
Case RowNames.ControlType 'Dim beforeNode As RowNode = ActiveRowNode.Clone
ActiveRowNode.ControlType = _grd.Cell(RowNames.ControlType, ColNames.ColValue).Text 'Select Case _grdSingleRowDropRow
Case RowNames.CommandType ' Case RowNames.ControlType
'如果命令类型变化则,清空命令 ' ActiveRowNode.ControlType = _grd.Cell(RowNames.ControlType, ColNames.ColValue).Text
Dim cmdType As String = _grd.Cell(RowNames.CommandType, ColNames.ColValue).Text ' changeType = RowNodeChangedEventArgs.RowNodeChangeType.ControlType
If String.Compare(ActiveRowNode.CommandType, cmdType) <> 0 Then ' Case RowNames.CommandType
ActiveRowNode.CommandType = cmdType ' '如果命令类型变化则,清空命令
ActiveRowNode.Command = "" ' Dim cmdType As String = _grd.Cell(RowNames.CommandType, ColNames.ColValue).Text
ActiveRowNode.Parameters.Clear() ' If String.Compare(ActiveRowNode.CommandType, cmdType) <> 0 Then
CommandTypeChanged(ActiveRowNode) ' ActiveRowNode.CommandType = cmdType
End If ' ActiveRowNode.Command = ""
Case RowNames.Command ' ActiveRowNode.Parameters.Clear()
Dim cmdName As String = _grd.Cell(RowNames.Command, ColNames.ColValue).Text ' CommandTypeChanged(ActiveRowNode)
If String.Compare(ActiveRowNode.Command, cmdName) <> 0 Then ' changeType = RowNodeChangedEventArgs.RowNodeChangeType.CommandType
ActiveRowNode.Command = cmdName ' End If
ActiveRowNode.Parameters.Clear() ' 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) ' Dim planCommand As TestCmd = _testCmdManager.GetCommand(ActiveRowNode.CommandType, ActiveRowNode.Command)
If planCommand Is Nothing Then Return ' If planCommand Is Nothing Then Return
For Each cmdParam As TestCmdParam In planCommand.Params ' For Each cmdParam As TestCmdParam In planCommand.Params
ActiveRowNode.Parameters.Add(cmdParam.Clone()) ' ActiveRowNode.Parameters.Add(cmdParam.Clone())
Next ' Next
'更新行节点信息表格内容 ' '更新行节点信息表格内容
CommandChanged(ActiveRowNode) ' CommandChanged(ActiveRowNode)
End If ' changeType = RowNodeChangedEventArgs.RowNodeChangeType.Command
Case RowNames.ErrorCode ' End If
Dim codeMsg As String = _grd.Cell(RowNames.ErrorCode, ColNames.ColValue).Text ' Case RowNames.ErrorCode
Dim errCode As String = ErrCodeManager.CodeMsgToCode(codeMsg) ' Dim codeMsg As String = _grd.Cell(RowNames.ErrorCode, ColNames.ColValue).Text
If String.Compare(ActiveRowNode.ErrorCode, errCode) <> 0 Then ' Dim errCode As String = ErrCodeManager.CodeMsgToCode(codeMsg)
ActiveRowNode.ErrorCode = errCode ' If String.Compare(ActiveRowNode.ErrorCode, errCode) <> 0 Then
ActiveRowNode.ErrorMessage = _errCodeManager(ActiveRowNode.ErrorCode).Msg ' ActiveRowNode.ErrorCode = errCode
_grd.Cell(RowNames.ErrorCode, ColNames.ColValue).Text = errCode ' ActiveRowNode.ErrorMessage = _errCodeManager(ActiveRowNode.ErrorCode).Msg
_grd.Cell(RowNames.ErrorCode, ColNames.ColValue).BackColor = _errCodeManager(ActiveRowNode.ErrorCode).Color ' _grd.Cell(RowNames.ErrorCode, ColNames.ColValue).Text = errCode
_grd.Cell(RowNames.ErrorMessage, ColNames.ColValue).BackColor = _grd.Cell(RowNames.ErrorCode, ColNames.ColValue).BackColor ' _grd.Cell(RowNames.ErrorCode, ColNames.ColValue).BackColor = _errCodeManager(ActiveRowNode.ErrorCode).Color
ErrCodeChanged(ActiveRowNode) ' _grd.Cell(RowNames.ErrorMessage, ColNames.ColValue).BackColor = _grd.Cell(RowNames.ErrorCode, ColNames.ColValue).BackColor
End If ' ErrCodeChanged(ActiveRowNode)
End Select ' 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)
End Sub End Sub
''' <summary> ''' <summary>
@@ -316,9 +381,9 @@ Namespace UTSModule.Station
_grd.ComboBox(0).Items.Add(RowNode.RowTypeEnum.Control) _grd.ComboBox(0).Items.Add(RowNode.RowTypeEnum.Control)
_grd.ComboBox(0).Items.Add(RowNode.RowTypeEnum.Flow) _grd.ComboBox(0).Items.Add(RowNode.RowTypeEnum.Flow)
_grd.ComboBox(0).Items.Add(RowNode.RowTypeEnum.Module) _grd.ComboBox(0).Items.Add(RowNode.RowTypeEnum.Module)
Case RowNames.Parameters'特殊处理Call命令 Case RowNames.Parameters '特殊处理Call命令
_grd.ComboBox(0).Items.Clear() _grd.ComboBox(0).Items.Clear()
_grd.ComboBox(0).Items.Addrange(UTS_Core.UTSModule.Test.UtsTester.CreateTester.GetCustomModuleName()) _grd.ComboBox(0).Items.AddRange(UTS_Core.UTSModule.Test.UtsTester.CreateTester.GetCustomModuleName())
End Select End Select
End Sub End Sub

View File

@@ -64,7 +64,19 @@ Namespace UTSModule.Station
''' <summary>节点执行可撤销事件</summary> ''' <summary>节点执行可撤销事件</summary>
Public Event PlanGridCommandChanged(ByVal sender As Object, ByVal e As EventArgs) Public Event PlanGridCommandChanged(ByVal sender As Object, ByVal e As EventArgs)
''' <summary>粘贴操作计时器</summary>
Private WithEvents _userActionTimer As New Timer()
''' <summary>计时器超时时间</summary>
Private Const UserActionTimeout As Integer = 300 ' ms
Private _dicTextChangedRowNode As New Dictionary(Of Integer, TextChangedRowNode) '记录文本修改的行号和节点对象
''' <summary>
''' 构造函数
''' </summary>
Sub New() Sub New()
NodeStartRow = 1 NodeStartRow = 1
@@ -77,8 +89,58 @@ Namespace UTSModule.Station
_testCmdManager = TestCmdManager.CreateManager() _testCmdManager = TestCmdManager.CreateManager()
_errCodeManager = ErrCodeManager.CreateManager() _errCodeManager = ErrCodeManager.CreateManager()
_userActionTimer.Interval = UserActionTimeout
_userActionTimer.Stop()
End Sub End Sub
''' <summary>
''' 表格内容改变处理事件
''' </summary>
Private Sub OnUserAction(node As RowNode)
If CommandManager.IsRuning Then Return
' 每次用户操作都重置计时器
_userActionTimer.Stop()
_userActionTimer.Start()
'记录当前活动节点
If Not _dicTextChangedRowNode.ContainsKey(node.RowListIndex) Then
_dicTextChangedRowNode.Add(node.RowListIndex, New TextChangedRowNode With {.BeforeRowNode = node.Clone})
End If
End Sub
Private Sub OnUserActionEnd(node As RowNode)
If CommandManager.IsRuning Then Return
'记录当前活动节点
If _dicTextChangedRowNode.ContainsKey(node.RowListIndex) Then
_dicTextChangedRowNode(node.RowListIndex).AfterRowNode = node.Clone
End If
End Sub
''' <summary>
''' 粘贴操作计时器超时处理事件
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub _userActionTimer_Tick(sender As Object, e As EventArgs) Handles _userActionTimer.Tick
_userActionTimer.Stop()
OnUserActionTimeout()
End Sub
Private Sub OnUserActionTimeout()
If CommandManager.IsRuning = False Then
CommandManager.AddUndoCommand(New GridNodeTextChangedCommand(Me, _dicTextChangedRowNode))
RaiseEvent PlanGridCommandChanged(Nothing, Nothing)
End If
_dicTextChangedRowNode = New Dictionary(Of Integer, TextChangedRowNode)
End Sub
''' <summary> ''' <summary>
''' 屏蔽表格引发自定义事件,避免行节点内容修改todo:暂未完成 ''' 屏蔽表格引发自定义事件,避免行节点内容修改todo:暂未完成
''' </summary> ''' </summary>
@@ -474,7 +536,7 @@ Namespace UTSModule.Station
Return Color.DarkSlateGray Return Color.DarkSlateGray
End If End If
Case "ComPort" Case "ComPort"
Return Color.DarkCyan Return Color.Olive
Case "UtsComPort" Case "UtsComPort"
Return Color.SeaGreen Return Color.SeaGreen
Case "Converter" Case "Converter"
@@ -852,21 +914,26 @@ Namespace UTSModule.Station
Private Function ParamsToString(params As List(Of TestCmdParam)) As String Private Function ParamsToString(params As List(Of TestCmdParam)) As String
Return String.Join($" {_paramChar} ", params.Select(Function(p) p.Value)) Return String.Join($" {_paramChar} ", params.Select(Function(p) p.Value))
'Dim result As New StringBuilder
'For i As Integer = 0 To params.Count - 1
' If i = 0 Then
' result.Append(params(i).Value)
' Else
' result.Append($" {_paramChar} {params(i).Value}")
' End If
'Next
'Return result.ToString()
End Function End Function
Public Sub UpdateGrid2(node As RowNode)
Dim row As Integer = node.RowListIndex
Dim rowNode As RowNode = _headNode.RowList(row)
rowNode.CopyFrom(node)
_uploading = True
UpdateGrid(_grd, row, rowNode)
_uploading = False
'触发事件
If SkipEvent Then Return
Dim event2 As New PlanNodeSelectChangedEventArgs With {.Node = node,
.LineNumber = row,
.LineActionEn = node.Action
}
RaiseEvent PlanNodeSelectChanged(_grd, event2)
End Sub
Public Sub UpdateGrid(grd As Grid, row As Integer, node As RowNode) Public Sub UpdateGrid(grd As Grid, row As Integer, node As RowNode)
Dim rowCmdType As String Dim rowCmdType As String
@@ -1012,13 +1079,13 @@ Namespace UTSModule.Station
Private Sub CommandChanged(node As RowNode) Private Sub CommandChanged(node As RowNode)
_grd.Cell(node.RowListIndex, ColNames.Parameters).Text = ParamsToString(node.Parameters)
_grd.Cell(node.RowListIndex, ColNames.Action).Text = IIf(node.Action, "1", "0").ToString _grd.Cell(node.RowListIndex, ColNames.Action).Text = IIf(node.Action, "1", "0").ToString
_grd.Cell(node.RowListIndex, ColNames.Parameters).Text = ParamsToString(node.Parameters)
End Sub End Sub
Private Sub CommandTypeChanged(node As RowNode) Private Sub CommandTypeChanged(node As RowNode)
_grd.Cell(node.RowListIndex, ColNames.Command).Text = " " _grd.Cell(node.RowListIndex, ColNames.Action).Text = IIf(node.Action, "1", "0").ToString
_grd.Cell(node.RowListIndex, ColNames.Command).Text = node.Command
_grd.Cell(node.RowListIndex, ColNames.Parameters).Text = ParamsToString(node.Parameters) _grd.Cell(node.RowListIndex, ColNames.Parameters).Text = ParamsToString(node.Parameters)
End Sub End Sub
@@ -1055,12 +1122,11 @@ Namespace UTSModule.Station
Dim changeType As RowNodeChangedEventArgs.RowNodeChangeType Dim changeType As RowNodeChangedEventArgs.RowNodeChangeType
changeType = RowNodeChangedEventArgs.RowNodeChangeType.None changeType = RowNodeChangedEventArgs.RowNodeChangeType.None
Dim cmd As ICommand Dim beforeNode As RowNode = node.Clone()
OnUserAction(beforeNode)
Select Case e.Col Select Case e.Col
Case ColNames.[Pause] Case ColNames.[Pause]
cmd = New GridNodeTextChangedCommand(_grd, e.Row, e.Col, node.Pause.ToString(), _grd.Cell(e.Row, e.Col).Text)
node.[Pause] = _grd.Cell(e.Row, e.Col).BooleanValue node.[Pause] = _grd.Cell(e.Row, e.Col).BooleanValue
If node.[Pause] Then If node.[Pause] Then
_grd.Cell(e.Row, e.Col).BackColor = Color.Red _grd.Cell(e.Row, e.Col).BackColor = Color.Red
@@ -1068,8 +1134,6 @@ Namespace UTSModule.Station
_grd.Cell(e.Row, e.Col).BackColor = Color.White _grd.Cell(e.Row, e.Col).BackColor = Color.White
End If End If
Case ColNames.Action Case ColNames.Action
cmd = New GridNodeTextChangedCommand(_grd, e.Row, e.Col, node.Action.ToString(), _grd.Cell(e.Row, e.Col).Text)
node.Action = _grd.Cell(e.Row, e.Col).BooleanValue node.Action = _grd.Cell(e.Row, e.Col).BooleanValue
changeType = RowNodeChangedEventArgs.RowNodeChangeType.Action changeType = RowNodeChangedEventArgs.RowNodeChangeType.Action
If node.RowType = RowNode.RowTypeEnum.FixedModule Then If node.RowType = RowNode.RowTypeEnum.FixedModule Then
@@ -1079,8 +1143,6 @@ Namespace UTSModule.Station
NodeActionChanged(node) NodeActionChanged(node)
Case ColNames.Description Case ColNames.Description
cmd = New GridNodeTextChangedCommand(_grd, e.Row, e.Col, node.Description.ToString(), _grd.Cell(e.Row, e.Col).Text)
node.Description = _grd.Cell(e.Row, e.Col).Text node.Description = _grd.Cell(e.Row, e.Col).Text
changeType = RowNodeChangedEventArgs.RowNodeChangeType.Description changeType = RowNodeChangedEventArgs.RowNodeChangeType.Description
Case ColNames.[Label] Case ColNames.[Label]
@@ -1093,7 +1155,6 @@ Namespace UTSModule.Station
_uploading = False _uploading = False
Return Return
Else Else
cmd = New GridNodeTextChangedCommand(_grd, e.Row, e.Col, node.Label.ToString(), _grd.Cell(e.Row, e.Col).Text)
If Not String.IsNullOrEmpty(node.Label) Then RemoveLabelName(node.Label) '移出之前记录标签名称 If Not String.IsNullOrEmpty(node.Label) Then RemoveLabelName(node.Label) '移出之前记录标签名称
node.Label = labelName node.Label = labelName
@@ -1107,8 +1168,6 @@ Namespace UTSModule.Station
changeType = RowNodeChangedEventArgs.RowNodeChangeType.Label changeType = RowNodeChangedEventArgs.RowNodeChangeType.Label
End If End If
Case ColNames.ControlType Case ColNames.ControlType
cmd = New GridNodeTextChangedCommand(_grd, e.Row, e.Col, node.ControlType.ToString(), _grd.Cell(e.Row, e.Col).Text)
node.ControlType = _grd.Cell(e.Row, e.Col).Text node.ControlType = _grd.Cell(e.Row, e.Col).Text
If String.IsNullOrWhiteSpace(node.ControlType) Then If String.IsNullOrWhiteSpace(node.ControlType) Then
node.RowType = RowNode.RowTypeEnum.Flow node.RowType = RowNode.RowTypeEnum.Flow
@@ -1119,11 +1178,11 @@ Namespace UTSModule.Station
Case ColNames.CommandType Case ColNames.CommandType
If String.Compare(node.CommandType, _grd.Cell(e.Row, e.Col).Text) <> 0 Then If String.Compare(node.CommandType, _grd.Cell(e.Row, e.Col).Text) <> 0 Then
cmd = New GridNodeTextChangedCommand(_grd, e.Row, e.Col, node.CommandType.ToString(), _grd.Cell(e.Row, e.Col).Text)
node.CommandType = _grd.Cell(e.Row, e.Col).Text node.CommandType = _grd.Cell(e.Row, e.Col).Text
node.Command = "" node.Command = ""
node.Parameters.Clear() node.Parameters.Clear()
node.Action = Not String.IsNullOrWhiteSpace(node.Command)
CommandTypeChanged(node) CommandTypeChanged(node)
changeType = RowNodeChangedEventArgs.RowNodeChangeType.CommandType changeType = RowNodeChangedEventArgs.RowNodeChangeType.CommandType
@@ -1132,17 +1191,9 @@ Namespace UTSModule.Station
NodeActionChanged(node) NodeActionChanged(node)
Case ColNames.Command Case ColNames.Command
If node.Command <> _grd.Cell(e.Row, e.Col).Text Then If node.Command <> _grd.Cell(e.Row, e.Col).Text Then
cmd = New GridNodeTextChangedCommand(_grd, e.Row, e.Col, node.Command.ToString(), _grd.Cell(e.Row, e.Col).Text)
node.Command = _grd.Cell(e.Row, e.Col).Text node.Command = _grd.Cell(e.Row, e.Col).Text
If String.IsNullOrWhiteSpace(node.Command) Then
node.Action = False
Else
node.Action = True
End If
node.Parameters.Clear() node.Parameters.Clear()
node.Action = Not String.IsNullOrWhiteSpace(node.Command)
'拷贝所有参数到当前节点信息中 '拷贝所有参数到当前节点信息中
Dim planCommand As TestCmd = _testCmdManager.GetCommand(node.CommandType, node.Command) Dim planCommand As TestCmd = _testCmdManager.GetCommand(node.CommandType, node.Command)
@@ -1155,9 +1206,6 @@ Namespace UTSModule.Station
changeType = RowNodeChangedEventArgs.RowNodeChangeType.Command changeType = RowNodeChangedEventArgs.RowNodeChangeType.Command
End If End If
Case ColNames.Parameters Case ColNames.Parameters
Dim pStr As String = ParamsToString(node.Parameters)
cmd = New GridNodeTextChangedCommand(_grd, e.Row, e.Col, pStr, _grd.Cell(e.Row, e.Col).Text)
Dim str() As String = _grd.Cell(e.Row, e.Col).Text.Split(New Char() {_paramChar}) Dim str() As String = _grd.Cell(e.Row, e.Col).Text.Split(New Char() {_paramChar})
For i As Integer = 0 To node.Parameters.Count - 1 For i As Integer = 0 To node.Parameters.Count - 1
@@ -1169,8 +1217,6 @@ Namespace UTSModule.Station
Next Next
changeType = RowNodeChangedEventArgs.RowNodeChangeType.Parameters changeType = RowNodeChangedEventArgs.RowNodeChangeType.Parameters
Case ColNames.SaveToDb Case ColNames.SaveToDb
cmd = New GridNodeTextChangedCommand(_grd, e.Row, e.Col, node.SaveToDb.ToString(), _grd.Cell(e.Row, e.Col).Text)
node.SaveToDb = _grd.Cell(e.Row, e.Col).BooleanValue node.SaveToDb = _grd.Cell(e.Row, e.Col).BooleanValue
changeType = RowNodeChangedEventArgs.RowNodeChangeType.SaveToDb changeType = RowNodeChangedEventArgs.RowNodeChangeType.SaveToDb
If node.RowType = RowNode.RowTypeEnum.FixedModule Then If node.RowType = RowNode.RowTypeEnum.FixedModule Then
@@ -1189,7 +1235,6 @@ Namespace UTSModule.Station
_uploading = False _uploading = False
Return Return
Else Else
cmd = New GridNodeTextChangedCommand(_grd, e.Row, e.Col, node.RecordName.ToString(), recordName)
If IsExistRecordName(node.RecordName) Then RemoveRecordName(node.RecordName) '移出之前记录名称 If IsExistRecordName(node.RecordName) Then RemoveRecordName(node.RecordName) '移出之前记录名称
node.RecordName = recordName node.RecordName = recordName
@@ -1199,31 +1244,21 @@ Namespace UTSModule.Station
changeType = RowNodeChangedEventArgs.RowNodeChangeType.RecordName changeType = RowNodeChangedEventArgs.RowNodeChangeType.RecordName
End If End If
Case ColNames.Retry Case ColNames.Retry
cmd = New GridNodeTextChangedCommand(_grd, e.Row, e.Col, node.Retry.ToString(), _grd.Cell(e.Row, e.Col).Text)
node.Retry = _grd.Cell(e.Row, e.Col).IntegerValue node.Retry = _grd.Cell(e.Row, e.Col).IntegerValue
changeType = RowNodeChangedEventArgs.RowNodeChangeType.Retry changeType = RowNodeChangedEventArgs.RowNodeChangeType.Retry
Case ColNames.RetryInterval Case ColNames.RetryInterval
cmd = New GridNodeTextChangedCommand(_grd, e.Row, e.Col, node.RetryInterval.ToString(), _grd.Cell(e.Row, e.Col).Text)
node.RetryInterval = _grd.Cell(e.Row, e.Col).IntegerValue node.RetryInterval = _grd.Cell(e.Row, e.Col).IntegerValue
changeType = RowNodeChangedEventArgs.RowNodeChangeType.RetryInterval changeType = RowNodeChangedEventArgs.RowNodeChangeType.RetryInterval
Case ColNames.ErrorCode Case ColNames.ErrorCode
cmd = New GridNodeTextChangedCommand(_grd, e.Row, e.Col, node.ErrorCode.ToString(), _grd.Cell(e.Row, e.Col).Text)
node.ErrorCode = _grd.Cell(e.Row, e.Col).Text node.ErrorCode = _grd.Cell(e.Row, e.Col).Text
changeType = RowNodeChangedEventArgs.RowNodeChangeType.ErrorCode changeType = RowNodeChangedEventArgs.RowNodeChangeType.ErrorCode
Case ColNames.ErrorMessage Case ColNames.ErrorMessage
cmd = New GridNodeTextChangedCommand(_grd, e.Row, e.Col, node.ErrorMessage.ToString(), _grd.Cell(e.Row, e.Col).Text)
node.ErrorMessage = _grd.Cell(e.Row, e.Col).Text node.ErrorMessage = _grd.Cell(e.Row, e.Col).Text
changeType = RowNodeChangedEventArgs.RowNodeChangeType.ErrorMessage changeType = RowNodeChangedEventArgs.RowNodeChangeType.ErrorMessage
End Select End Select
If CommandManager.IsRuning = False AndAlso cmd IsNot Nothing Then OnUserActionEnd(node)
CommandManager.RunCommand(cmd)
RaiseEvent PlanGridCommandChanged(Nothing, Nothing)
End If
'触发事件 '触发事件
If SkipEvent Then Return If SkipEvent Then Return
@@ -1236,6 +1271,7 @@ Namespace UTSModule.Station
Dim args As New RowNodeChangedEventArgs With { Dim args As New RowNodeChangedEventArgs With {
.Node = node, .Node = node,
.BeforeNode = beforeNode,
.ChangeType = changeType .ChangeType = changeType
} }
RaiseEvent RowNodeTextChanged(sender, args) RaiseEvent RowNodeTextChanged(sender, args)
@@ -1533,8 +1569,10 @@ Namespace UTSModule.Station
Dim startNode As RowNode = _headNode.RowList(startMoveRow - _drawStartRow + 1) Dim startNode As RowNode = _headNode.RowList(startMoveRow - _drawStartRow + 1)
For i As Integer = 1 To rows For i As Integer = 1 To rows
node = _headNode.RowList(startMoveRow - _drawStartRow + i) node = _headNode.RowList(startMoveRow - _drawStartRow + i)
If node.RowLever > startNode.RowLever Then Continue For If startNode.RowLever <> node.RowLever Then
If node.RowLever < startNode.RowLever Then Exit For MsgBox("请选择同一级别节点再尝试此操作") '非同级别节点不移动
Return
End If
nodes.Add(node) nodes.Add(node)
Next Next
@@ -1599,9 +1637,18 @@ Namespace UTSModule.Station
Dim startNode As RowNode = _headNode.RowList(startMoveRow - _drawStartRow + 1) Dim startNode As RowNode = _headNode.RowList(startMoveRow - _drawStartRow + 1)
Dim prevNode As RowNode = startNode.PrevNode Dim prevNode As RowNode = startNode.PrevNode
If prevNode Is Nothing Then Return If prevNode Is Nothing Then Return
Dim node As RowNode
For i As Integer = 2 To moveRows
node = _headNode.RowList(startMoveRow - _drawStartRow + i)
If startNode.RowLever <> node.RowLever Then
MsgBox("请选择同一级别节点再尝试此操作") '非同级别节点不移动
Return
End If
Next
Dim moveEndRow As Integer = prevNode.RowListIndex Dim moveEndRow As Integer = prevNode.RowListIndex
Dim cmd As New GridNodeMoveUpCommand(Me, startMoveRow, moveRows, moveEndRow) Dim cmd As New GridNodeMoveUpCommand(Me, startMoveRow, moveRows, moveEndRow)
CommandManager.RunCommand(cmd) '添加到撤销堆栈执行 CommandManager.RunCommand(cmd) '添加到撤销堆栈执行
@@ -1612,10 +1659,20 @@ Namespace UTSModule.Station
Public Sub NodeMoveDown(startMoveRow As Integer, moveRows As Integer) Public Sub NodeMoveDown(startMoveRow As Integer, moveRows As Integer)
If _headNode Is Nothing Then Return If _headNode Is Nothing Then Return
Dim startNode As RowNode = _headNode.RowList(startMoveRow - _drawStartRow + 1)
Dim endNode As RowNode = _headNode.RowList(startMoveRow + moveRows - _drawStartRow) Dim endNode As RowNode = _headNode.RowList(startMoveRow + moveRows - _drawStartRow)
Dim nextNode As RowNode = endNode.NextNode Dim nextNode As RowNode = endNode.NextNode
If nextNode Is Nothing Then Return If nextNode Is Nothing Then Return
Dim node As RowNode
For i As Integer = 2 To moveRows
node = _headNode.RowList(startMoveRow - _drawStartRow + i)
If startNode.RowLever <> node.RowLever Then
MsgBox("请选择同一级别节点再尝试此操作") '非同级别节点不移动
Return
End If
Next
Dim moveEndRow As Integer = startMoveRow + nextNode.AllChildCount + 1 Dim moveEndRow As Integer = startMoveRow + nextNode.AllChildCount + 1
Dim cmd As New GridNodeMoveDownCommand(Me, startMoveRow, moveRows, moveEndRow) Dim cmd As New GridNodeMoveDownCommand(Me, startMoveRow, moveRows, moveEndRow)
CommandManager.RunCommand(cmd) '添加到撤销堆栈执行 CommandManager.RunCommand(cmd) '添加到撤销堆栈执行
@@ -1782,8 +1839,10 @@ Namespace UTSModule.Station
Dim moveEndRow As Integer = startNode.ParentNode.RowListIndex + startNode.ParentNode.AllChildCount + 1 Dim moveEndRow As Integer = startNode.ParentNode.RowListIndex + startNode.ParentNode.AllChildCount + 1
For i As Integer = 1 To moveRows For i As Integer = 1 To moveRows
node = _headNode.RowList(startMoveRow - _drawStartRow + i) node = _headNode.RowList(startMoveRow - _drawStartRow + i)
If node.RowLever < startNode.RowLever Then Exit For '高于起始节点级别不移动 If startNode.RowLever <> node.RowLever Then
If node.RowLever > startNode.RowLever Then Continue For MsgBox("请选择同一级别节点再尝试此操作") '非同级别节点不移动
Return
End If
moveEndRow -= (node.AllChildCount + 1) moveEndRow -= (node.AllChildCount + 1)
Next Next
@@ -1840,6 +1899,15 @@ Namespace UTSModule.Station
If startNode.RowLever < 1 Then Return '固定节点不移动 If startNode.RowLever < 1 Then Return '固定节点不移动
If startNode.PrevNode Is Nothing Then Return '没有上一级节点 If startNode.PrevNode Is Nothing Then Return '没有上一级节点
Dim node As RowNode
For i As Integer = 2 To moveRows
node = _headNode.RowList(startMoveRow - _drawStartRow + i)
If startNode.RowLever <> node.RowLever Then
MsgBox("请选择同一级别节点再尝试此操作") '非同级别节点不移动
Return
End If
Next
Dim moveRightNodeIndex As Integer = startNode.PrevNode.Children.Count Dim moveRightNodeIndex As Integer = startNode.PrevNode.Children.Count
Dim moveEndRow As Integer = startNode.PrevNode.RowListIndex + startNode.PrevNode.AllChildCount + 1 Dim moveEndRow As Integer = startNode.PrevNode.RowListIndex + startNode.PrevNode.AllChildCount + 1
@@ -1900,53 +1968,25 @@ Namespace UTSModule.Station
With _grd With _grd
Select Case e.ChangeType Select Case e.ChangeType
Case RowNodeChangedEventArgs.RowNodeChangeType.Action Case RowNodeChangedEventArgs.RowNodeChangeType.Action
cmd = New GridNodeTextChangedCommand(_grd, row, ColNames.Action, .Cell(row, ColNames.Action).Text, node.Action.ToString())
.Cell(row, ColNames.Action).Text = IIf(node.Action, "1", "0").ToString() .Cell(row, ColNames.Action).Text = IIf(node.Action, "1", "0").ToString()
NodeActionChanged(node)
Case RowNodeChangedEventArgs.RowNodeChangeType.RowType Case RowNodeChangedEventArgs.RowNodeChangeType.RowType
'If node.RowType = RowNode.RowTypeEnum.FixedModule Then
' .Cell(row, ColNames.Label).FontSize = 10
' .Cell(row, ColNames.Label).FontBold = True
'ElseIf node.RowType = RowNode.RowTypeEnum.Module Then
' .Cell(row, ColNames.Label).FontSize = 8
' .Cell(row, ColNames.Label).FontBold = True
'ElseIf node.RowType = RowNode.RowTypeEnum.Flow Then
' .Cell(row, ColNames.Label).FontSize = 8
' .Cell(row, ColNames.Label).FontBold = False
'End If
'NodeActionChanged(node)
NodeRowTypeChanged(node) NodeRowTypeChanged(node)
Case RowNodeChangedEventArgs.RowNodeChangeType.Label Case RowNodeChangedEventArgs.RowNodeChangeType.Label
cmd = New GridNodeTextChangedCommand(_grd, row, ColNames.Label, .Cell(row, ColNames.Label).Text, node.Label.ToString())
.Cell(row, ColNames.Label).Text = $"{node.Label}" .Cell(row, ColNames.Label).Text = $"{node.Label}"
Case RowNodeChangedEventArgs.RowNodeChangeType.ControlType Case RowNodeChangedEventArgs.RowNodeChangeType.ControlType
cmd = New GridNodeTextChangedCommand(_grd, row, ColNames.ControlType, .Cell(row, ColNames.ControlType).Text, node.ControlType.ToString())
.Cell(row, ColNames.ControlType).Text = $"{node.ControlType}" .Cell(row, ColNames.ControlType).Text = $"{node.ControlType}"
Case RowNodeChangedEventArgs.RowNodeChangeType.Description Case RowNodeChangedEventArgs.RowNodeChangeType.Description
cmd = New GridNodeTextChangedCommand(_grd, row, ColNames.Description, .Cell(row, ColNames.Description).Text, node.Description.ToString())
.Cell(row, ColNames.Description).Text = $"{node.Description}" .Cell(row, ColNames.Description).Text = $"{node.Description}"
Case RowNodeChangedEventArgs.RowNodeChangeType.SaveToDb Case RowNodeChangedEventArgs.RowNodeChangeType.SaveToDb
cmd = New GridNodeTextChangedCommand(_grd, row, ColNames.SaveToDb, .Cell(row, ColNames.SaveToDb).Text, node.SaveToDb.ToString())
.Cell(row, ColNames.SaveToDb).Text = IIf(node.SaveToDb, "1", "0").ToString() .Cell(row, ColNames.SaveToDb).Text = IIf(node.SaveToDb, "1", "0").ToString()
Case RowNodeChangedEventArgs.RowNodeChangeType.RecordName Case RowNodeChangedEventArgs.RowNodeChangeType.RecordName
cmd = New GridNodeTextChangedCommand(_grd, row, ColNames.RecordName, .Cell(row, ColNames.RecordName).Text, node.RecordName.ToString())
.Cell(row, ColNames.RecordName).Text = $"{node.RecordName}" .Cell(row, ColNames.RecordName).Text = $"{node.RecordName}"
Case RowNodeChangedEventArgs.RowNodeChangeType.Retry Case RowNodeChangedEventArgs.RowNodeChangeType.Retry
cmd = New GridNodeTextChangedCommand(_grd, row, ColNames.Retry, .Cell(row, ColNames.Retry).Text, node.Retry.ToString())
.Cell(row, ColNames.Retry).Text = $"{node.Retry}" .Cell(row, ColNames.Retry).Text = $"{node.Retry}"
Case RowNodeChangedEventArgs.RowNodeChangeType.RetryInterval Case RowNodeChangedEventArgs.RowNodeChangeType.RetryInterval
cmd = New GridNodeTextChangedCommand(_grd, row, ColNames.RetryInterval, .Cell(row, ColNames.RetryInterval).Text, node.RetryInterval.ToString())
.Cell(row, ColNames.RetryInterval).Text = $"{node.RetryInterval}" .Cell(row, ColNames.RetryInterval).Text = $"{node.RetryInterval}"
Case RowNodeChangedEventArgs.RowNodeChangeType.ErrorCode Case RowNodeChangedEventArgs.RowNodeChangeType.ErrorCode
cmd = New GridNodeTextChangedCommand(_grd, row, ColNames.ErrorCode, .Cell(row, ColNames.ErrorCode).Text, node.ErrorCode.ToString())
.Cell(row, ColNames.ErrorCode).Text = $"{node.ErrorCode}" .Cell(row, ColNames.ErrorCode).Text = $"{node.ErrorCode}"
If String.IsNullOrWhiteSpace(node.ErrorCode) = False Then If String.IsNullOrWhiteSpace(node.ErrorCode) = False Then
.Cell(row, ColNames.ErrorCode).BackColor = _errCodeManager(node.ErrorCode).Color .Cell(row, ColNames.ErrorCode).BackColor = _errCodeManager(node.ErrorCode).Color
@@ -1956,35 +1996,34 @@ Namespace UTSModule.Station
.Cell(row, ColNames.ErrorMessage).BackColor = Color.White .Cell(row, ColNames.ErrorMessage).BackColor = Color.White
End If End If
Case RowNodeChangedEventArgs.RowNodeChangeType.ErrorMessage Case RowNodeChangedEventArgs.RowNodeChangeType.ErrorMessage
cmd = New GridNodeTextChangedCommand(_grd, row, ColNames.ErrorMessage, .Cell(row, ColNames.ErrorMessage).Text, node.ErrorMessage.ToString())
.Cell(row, ColNames.ErrorMessage).Text = $"{node.ErrorMessage}" .Cell(row, ColNames.ErrorMessage).Text = $"{node.ErrorMessage}"
Case RowNodeChangedEventArgs.RowNodeChangeType.CommandType Case RowNodeChangedEventArgs.RowNodeChangeType.CommandType
If String.Compare(.Cell(row, ColNames.CommandType).Text, node.CommandType) <> 0 Then If String.Compare(.Cell(row, ColNames.CommandType).Text, node.CommandType) <> 0 Then
cmd = New GridNodeTextChangedCommand(_grd, row, ColNames.CommandType, .Cell(row, ColNames.CommandType).Text, node.CommandType.ToString())
.Cell(row, ColNames.CommandType).Text = $"{node.CommandType}" .Cell(row, ColNames.CommandType).Text = $"{node.CommandType}"
CommandTypeChanged(node) CommandTypeChanged(node)
NodeActionChanged(node)
End If End If
Case RowNodeChangedEventArgs.RowNodeChangeType.Command Case RowNodeChangedEventArgs.RowNodeChangeType.Command
If String.Compare(.Cell(row, ColNames.Command).Text, node.Command) <> 0 Then If String.Compare(.Cell(row, ColNames.Command).Text, node.Command) <> 0 Then
cmd = New GridNodeTextChangedCommand(_grd, row, ColNames.Command, .Cell(row, ColNames.Command).Text, node.Command.ToString())
.Cell(row, ColNames.Command).Text = $"{node.Command}" .Cell(row, ColNames.Command).Text = $"{node.Command}"
CommandChanged(node) CommandChanged(node)
NodeActionChanged(node)
End If End If
Case RowNodeChangedEventArgs.RowNodeChangeType.Parameters Case RowNodeChangedEventArgs.RowNodeChangeType.Parameters
cmd = New GridNodeTextChangedCommand(_grd, row, ColNames.Parameters, .Cell(row, ColNames.Parameters).Text, ParamsToString(node.Parameters))
.Cell(row, ColNames.Parameters).Text = $"{ParamsToString(node.Parameters)}" .Cell(row, ColNames.Parameters).Text = $"{ParamsToString(node.Parameters)}"
End Select End Select
End With End With
OnUserAction(e.BeforeNode)
OnUserActionEnd(e.Node)
'If CommandManager.IsRuning = False Then
If CommandManager.IsRuning = False AndAlso cmd IsNot Nothing Then
CommandManager.RunCommand(cmd)
RaiseEvent PlanGridCommandChanged(Nothing, Nothing)
End If ' Dim dic As New Dictionary(Of Integer, TextChangedRowNode) From {
' {row, New TextChangedRowNode With {.BeforeRowNode = e.BeforeNode.Clone, .AfterRowNode = e.Node.Clone}}
' }
' CommandManager.AddUndoCommand(New GridNodeTextChangedCommand(Me, dic))
' RaiseEvent PlanGridCommandChanged(Nothing, Nothing)
'End If
StationEditStatusMonitor.StationEditStatus = StationEditStatusMonitor.StationEditStatusEnum.Changed StationEditStatusMonitor.StationEditStatus = StationEditStatusMonitor.StationEditStatusEnum.Changed