添加撤销,导航Call命令,节点类型根据子节点数量变化,标签和记录名去重等功能

This commit is contained in:
2025-04-14 20:19:36 +08:00
parent 9da8e6fecd
commit e82bfaaf20
38 changed files with 1484 additions and 1242 deletions

View File

@@ -0,0 +1,36 @@
Imports FlexCell
Public Class GridNavigation : Implements INavigation
Private ReadOnly _grd As Grid
Private ReadOnly _beforeRange As GridSelectRange
Private ReadOnly _afterRange As GridSelectRange
Sub New(grd As FlexCell.Grid, beforeRange As GridSelectRange, afterRange As GridSelectRange)
_grd = grd
Me._beforeRange = beforeRange
Me._afterRange = afterRange
End Sub
Public Sub Backward() Implements INavigation.Backward
_grd.Range(_beforeRange.StartRow, _beforeRange.StartCol, _beforeRange.EndRow, _beforeRange.EndCol).SelectCells()
End Sub
Public Sub Forward() Implements INavigation.Forward
_grd.Range(_afterRange.StartRow, _afterRange.StartCol, _afterRange.EndRow, _afterRange.EndCol).SelectCells()
End Sub
End Class
Public Class GridSelectRange
Public Property StartRow As Integer
Public Property StartCol As Integer
Public Property EndRow As Integer
Public Property EndCol As Integer
End Class

View File

@@ -0,0 +1,82 @@
Public Module GridNavigationManager
Private _forwardStack As New Stack(Of INavigation)()
Private _backwardStack As New Stack(Of INavigation)()
Private _isRunning As Boolean = False
Sub New()
End Sub
''' <summary>
''' 是否正在执行导航操作
''' </summary>
''' <remarks></remarks>
Public ReadOnly Property IsRunning As Boolean
Get
Return _isRunning
End Get
End Property
''' <summary>
''' 是否可以后退
''' </summary>
''' <returns></returns>
Public ReadOnly Property CanForward As Boolean
Get
Return _forwardStack.Count > 0
End Get
End Property
''' <summary>
''' 是否可以前进
''' </summary>
''' <returns></returns>
''' <remarks></remarks>
Public ReadOnly Property CanBackward As Boolean
Get
Return _backwardStack.Count > 0
End Get
End Property
''' <summary>
''' 添加导航
''' <param name="navigation">导航</param>
''' </summary>
Public Sub Append(navigation As INavigation)
_backwardStack.Push(navigation)
_forwardStack.Clear()
End Sub
''' <summary>
'''
''' </summary>
Public Sub RemoveForward()
If CanBackward Then _backwardStack.Pop()
End Sub
Public Sub Clear()
_forwardStack.Clear()
_backwardStack.Clear()
End Sub
Public Sub Forward()
If Not CanForward Then Return
Dim navigation As INavigation = _forwardStack.Pop()
_backwardStack.Push(navigation)
_isRunning = True
navigation.Forward()
_isRunning = False
End Sub
Public Sub Backward()
If Not CanBackward Then Return
Dim navigation As INavigation = _backwardStack.Pop()
_forwardStack.Push(navigation)
_isRunning = True
navigation.Backward()
_isRunning = False
End Sub
End Module

View File

@@ -0,0 +1,12 @@
Public Interface INavigation
''' <summary>
''' 向后导航
''' </summary>
Sub Backward()
''' <summary>
''' 向前导航
''' </summary>
Sub Forward()
End Interface