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.
ITSM/.svn/pristine/3f/3fbaef717d942b9f786b554168d...

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