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

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