You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
266 lines
9.1 KiB
266 lines
9.1 KiB
Imports System.Reflection
|
|
Imports System.Windows.Forms
|
|
Imports System.Drawing
|
|
|
|
Public Class frmTreeselect
|
|
|
|
Dim oetree As New clsOETree
|
|
Dim Paramtype As String
|
|
|
|
Dim ncol As New Collection
|
|
|
|
Dim M_Selectedvalue As String
|
|
Property SelectedValues As String
|
|
Get
|
|
Return M_Selectedvalue
|
|
End Get
|
|
Set(value As String)
|
|
M_Selectedvalue = value
|
|
End Set
|
|
End Property
|
|
|
|
Sub New(ByVal PType As String)
|
|
|
|
' Dieser Aufruf ist für den Designer erforderlich.
|
|
InitializeComponent()
|
|
Me.Paramtype = PType
|
|
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
|
|
|
|
End Sub
|
|
|
|
Private Sub frmTreeselect_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
|
Me.TreeStruktur.BeginUpdate()
|
|
Me.TreeStruktur.Nodes.Clear()
|
|
Select Case Me.Paramtype
|
|
Case "OESelectSingle", "OESelectMulti"
|
|
Dim per As DateTime = "31.12.2099"
|
|
oetree.Load_Treeview(Me.TreeStruktur, per)
|
|
Case Else
|
|
oetree.Load_Treeview(Me.TreeStruktur, Me.Paramtype)
|
|
End Select
|
|
Me.TreeStruktur.SelectedNode = Me.TreeStruktur.Nodes(0)
|
|
Me.TreeStruktur.ExpandAll()
|
|
Me.TreeStruktur.EndUpdate()
|
|
End Sub
|
|
|
|
Private Sub TreeStruktur_DoubleClick(sender As Object, e As EventArgs) Handles TreeStruktur.DoubleClick
|
|
Me.SelectedValues = Me.TreeStruktur.SelectedNode.Tag
|
|
If Paramtype = "OESelectSingle" Then Me.SelectedValues = Me.TreeStruktur.SelectedNode.Tag
|
|
If Paramtype = "OESelectMulti" Then Me.SelectedValues = Me.TreeStruktur.SelectedNode.Tag
|
|
|
|
Me.DialogResult = Windows.Forms.DialogResult.OK
|
|
Me.Close()
|
|
End Sub
|
|
|
|
|
|
|
|
#Region "TreeStruktur"
|
|
|
|
Private _prevNode As TreeNode
|
|
Public SelectedBackColor As Color
|
|
Public SelectedForeColor As Color
|
|
|
|
Protected Sub MultiSelectFileTreeView_AfterSelect(sender As Object, e As System.Windows.Forms.TreeViewEventArgs) Handles TreeStruktur.AfterSelect
|
|
Try
|
|
If Paramtype = "OESelectSingle" Then
|
|
Me.SelectedValues = Me.TreeStruktur.SelectedNode.Tag
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim bBoth As Boolean = ModifierKeys = (Keys.Shift Or Keys.Control)
|
|
'
|
|
Dim bControl As Boolean = (ModifierKeys = Keys.Control)
|
|
Dim bShift As Boolean = (ModifierKeys = Keys.Shift)
|
|
|
|
If Not (bBoth OrElse bControl OrElse bShift) Then
|
|
'just a plain old selection
|
|
ClearChecksRecursive(Me.TreeStruktur.Nodes)
|
|
e.Node.Checked = True
|
|
Me.TreeStruktur.SelectedNode = e.Node
|
|
Return
|
|
End If
|
|
|
|
If bControl Then
|
|
' no clear, just do it
|
|
e.Node.Checked = Not e.Node.Checked
|
|
Me.TreeStruktur.SelectedNode = e.Node
|
|
End If
|
|
If bShift OrElse bBoth Then
|
|
|
|
|
|
If bShift Then
|
|
ClearChecksRecursive(Me.TreeStruktur.Nodes)
|
|
End If
|
|
|
|
Dim TopNode As New TreeNode()
|
|
Dim BottomNode As New TreeNode()
|
|
|
|
If _prevNode.Level <> TreeStruktur.SelectedNode.Level Then
|
|
TopNode = TreeStruktur.SelectedNode.Parent.Nodes(0)
|
|
BottomNode = e.Node
|
|
Else
|
|
TopNode = If((_prevNode.Index < TreeStruktur.SelectedNode.Index), _prevNode, TreeStruktur.SelectedNode)
|
|
BottomNode = If((TreeStruktur.SelectedNode.Index > _prevNode.Index), TreeStruktur.SelectedNode, _prevNode)
|
|
End If
|
|
|
|
Dim x As Integer = TopNode.Index
|
|
While x <= BottomNode.Index
|
|
Dim n As TreeNode = TreeStruktur.SelectedNode.Parent.Nodes(x)
|
|
n.Checked = True
|
|
'If n.Tag.[GetType]() <> GetType(FileInfo) Then
|
|
' n.Collapse()
|
|
'End If
|
|
System.Math.Max(System.Threading.Interlocked.Increment(x), x - 1)
|
|
End While
|
|
Return
|
|
End If
|
|
Catch ex As Exception
|
|
Finally
|
|
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub TreeStruktur_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles TreeStruktur.AfterSelect
|
|
If Me.Paramtype = "OESelectSingle" Then Exit Sub
|
|
Dim bBoth As Boolean = ModifierKeys = (Keys.Shift Or Keys.Control)
|
|
Dim bControl As Boolean = (ModifierKeys = Keys.Control)
|
|
Dim bShift As Boolean = (ModifierKeys = Keys.Shift)
|
|
|
|
If Not (bBoth OrElse bControl OrElse bShift) Then
|
|
'no modifier keys, so clear all nodes and select just this one
|
|
'ClearChecksRecursive(Me.Nodes)
|
|
e.Node.Checked = True
|
|
Me.TreeStruktur.SelectedNode = e.Node
|
|
Else
|
|
Return
|
|
End If
|
|
|
|
|
|
End Sub
|
|
|
|
Protected Sub MultiSelectFileTreeView_BeforeSelect(sender As Object, e As TreeViewCancelEventArgs) Handles TreeStruktur.BeforeSelect
|
|
Try
|
|
_prevNode = Me.TreeStruktur.SelectedNode
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
End Sub
|
|
|
|
Protected Sub MultiSelectFileTreeView_AfterCheck(sender As Object, e As System.Windows.Forms.TreeViewEventArgs) Handles TreeStruktur.AfterCheck
|
|
|
|
SelectedBackColor = SystemColors.Highlight
|
|
SelectedForeColor = SystemColors.HighlightText
|
|
Try
|
|
e.Node.BackColor = If((e.Node.Checked = True), SelectedBackColor, SystemColors.Window)
|
|
e.Node.ForeColor = If((e.Node.Checked = True), SelectedForeColor, Me.ForeColor)
|
|
If e.Node.Checked Then
|
|
Dim nodeType As Type = e.Node.Tag.[GetType]()
|
|
'If nodeType = GetType(DirectoryInfo) OrElse nodeType = GetType(DriveInfo) Then
|
|
' e.Node.Expand()
|
|
'End If
|
|
End If
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
Protected Sub ClearChecksRecursive(nodes As TreeNodeCollection)
|
|
Try
|
|
For Each node As TreeNode In nodes
|
|
node.Checked = False
|
|
ClearChecksRecursive(node.Nodes)
|
|
Next
|
|
Catch ex As Exception
|
|
Finally
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
Private Sub TreeView1_NodeMouseClick(sender As Object, e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles TreeStruktur.NodeMouseClick
|
|
If e.Button = Windows.Forms.MouseButtons.Right Then
|
|
TreeStruktur.SelectedNode = e.Node
|
|
End If
|
|
End Sub
|
|
|
|
#End Region
|
|
|
|
Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click
|
|
If Me.Paramtype = "OESelectSingle" Then
|
|
If Me.SelectedValues <> "" Then
|
|
Me.DialogResult = Windows.Forms.DialogResult.OK
|
|
Me.Close()
|
|
Else
|
|
MsgBox("Es wurde keine Organisationseinheit ausgewählt.!", MsgBoxStyle.Critical)
|
|
End If
|
|
Else
|
|
Me.ncol.Clear()
|
|
Me.SelectedValues = ""
|
|
If Get_Checked_Nodes_Count(Me.TreeStruktur.Nodes) > 0 Then
|
|
Dim i As Integer
|
|
Dim s As String
|
|
For i = 1 To ncol.Count
|
|
s = ncol(i)
|
|
s = Trim(s)
|
|
While Len(s) < 2
|
|
s = "0" + s
|
|
End While
|
|
If Me.SelectedValues <> "" Then
|
|
Me.SelectedValues = Me.SelectedValues + "," + s
|
|
Else
|
|
Me.SelectedValues = s
|
|
End If
|
|
Next
|
|
Me.DialogResult = Windows.Forms.DialogResult.OK
|
|
Me.Close()
|
|
Else
|
|
MsgBox("Es wurden keine Organisationseinheiten ausgewählt.", MsgBoxStyle.Critical)
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Public Function Get_Checked_Nodes(ByVal Nodes As TreeNodeCollection)
|
|
For Each node As TreeNode In Nodes
|
|
If node.Checked = True Then
|
|
ncol.Add(node.Tag)
|
|
If node.Nodes.Count > 0 Then Get_Sub_Nodes(node.Nodes)
|
|
|
|
End If
|
|
Get_Checked_Nodes(node.Nodes)
|
|
Next
|
|
|
|
|
|
End Function
|
|
|
|
Public Function Get_Sub_Nodes(ByVal Nodes As TreeNodeCollection)
|
|
For Each node As TreeNode In Nodes
|
|
ncol.Add(node.Tag)
|
|
If node.Nodes.Count > 0 Then Get_Sub_Nodes(node.Nodes)
|
|
Get_Sub_Nodes(node.Nodes)
|
|
Next
|
|
End Function
|
|
|
|
Public Function Get_Checked_Nodes_Count(ByVal Nodes As TreeNodeCollection) As Integer
|
|
|
|
For Each node As TreeNode In Nodes
|
|
If node.Checked = True Then
|
|
ncol.Add(node.Tag)
|
|
End If
|
|
Get_Checked_Nodes(node.Nodes)
|
|
Next
|
|
Return ncol.Count
|
|
End Function
|
|
|
|
Private Sub TSBtnQuit_Click(sender As Object, e As EventArgs) Handles TSBtnQuit.Click
|
|
Me.DialogResult = Windows.Forms.DialogResult.Abort
|
|
Me.Close()
|
|
|
|
End Sub
|
|
|
|
Private Sub BeendenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles BeendenToolStripMenuItem.Click
|
|
TSBtnQuit_Click(sender, e)
|
|
End Sub
|
|
End Class |