diff --git a/app/DD-Record-Organizer/DD-Record-Organizer.vbproj b/app/DD-Record-Organizer/DD-Record-Organizer.vbproj index 0502d1a..662dbd1 100644 --- a/app/DD-Record-Organizer/DD-Record-Organizer.vbproj +++ b/app/DD-Record-Organizer/DD-Record-Organizer.vbproj @@ -409,6 +409,12 @@ Form + + frmTreeSearchResult.vb + + + Form + frmViewsUser.vb @@ -851,6 +857,9 @@ frmStructureNodeConfig.vb + + frmTreeSearchResult.vb + frmViewsUser.vb diff --git a/app/DD-Record-Organizer/frmConstructor_Main.vb b/app/DD-Record-Organizer/frmConstructor_Main.vb index 9129a2d..ba056b7 100644 --- a/app/DD-Record-Organizer/frmConstructor_Main.vb +++ b/app/DD-Record-Organizer/frmConstructor_Main.vb @@ -673,20 +673,20 @@ Public Class frmConstructor_Main Return Nothing End Function Dim NodesThatMatch As New List(Of TreeNode) - Private Function SearchTheTreeView(ByVal TV As TreeView, ByVal TextToFind As String) As TreeNode + Private Function SearchTheTreeView(ByVal TV As TreeView, ByVal TextToFind As String) As List(Of TreeNode) ' Empty previous NodesThatMatch.Clear() ' Keep calling RecursiveSearch For Each TN As TreeNode In TV.Nodes - If TN.Text = TextToFind Then + If TN.Text.Contains(TextToFind) Then NodesThatMatch.Add(TN) End If RecursiveSearch(TN, TextToFind) Next If NodesThatMatch.Count > 0 Then - Return NodesThatMatch(0) + Return NodesThatMatch Else Return Nothing End If @@ -6651,16 +6651,30 @@ Public Class frmConstructor_Main End If End Sub - Private Sub tstxtboxSearchNode_KeyUp(sender As Object, e As KeyEventArgs) Handles tstxtboxSearchNode.KeyUp If e.KeyCode = Keys.Return Then - If SearchTheTreeView(TreeViewMain, tstxtboxSearchNode.Text) Is Nothing Then + Dim Result As List(Of TreeNode) = SearchTheTreeView(TreeViewMain, tstxtboxSearchNode.Text) + + + If Result Is Nothing Then MessageBox.Show("No Match Found") Else - TreeViewMain.SelectedNode = SearchTheTreeView(TreeViewMain, tstxtboxSearchNode.Text) + If Result.Count = 1 Then + TreeViewMain.SelectedNode = Result.First() + Else + Dim resultForm As New frmTreeSearchResult() + resultForm.searchResultNodes = Result + resultForm.constructorForm = Me + resultForm.Show() + End If End If End If End Sub + + Public Sub SetSelectedTreeViewNode(node As TreeNode) + TreeViewMain.SelectedNode = node + End Sub + Private Sub tstxtboxSearchNode_Click(sender As Object, e As EventArgs) Handles tstxtboxSearchNode.Click, tstxtboxSearchNode.Enter tstxtboxSearchNode.Text = "" End Sub diff --git a/app/DD-Record-Organizer/frmTreeSearchResult.Designer.vb b/app/DD-Record-Organizer/frmTreeSearchResult.Designer.vb new file mode 100644 index 0000000..c4365ab --- /dev/null +++ b/app/DD-Record-Organizer/frmTreeSearchResult.Designer.vb @@ -0,0 +1,55 @@ + +Partial Class frmTreeSearchResult + Inherits System.Windows.Forms.Form + + 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen. + + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Wird vom Windows Form-Designer benötigt. + Private components As System.ComponentModel.IContainer + + 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich. + 'Das Bearbeiten ist mit dem Windows Form-Designer möglich. + 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. + + Private Sub InitializeComponent() + Me.listBoxResults = New System.Windows.Forms.ListBox() + Me.SuspendLayout() + ' + 'listBoxResults + ' + Me.listBoxResults.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.listBoxResults.FormattingEnabled = True + Me.listBoxResults.ItemHeight = 16 + Me.listBoxResults.Location = New System.Drawing.Point(12, 12) + Me.listBoxResults.Name = "listBoxResults" + Me.listBoxResults.Size = New System.Drawing.Size(534, 228) + Me.listBoxResults.TabIndex = 0 + ' + 'frmTreeSearchResult + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(558, 258) + Me.Controls.Add(Me.listBoxResults) + Me.MaximizeBox = False + Me.MinimizeBox = False + Me.Name = "frmTreeSearchResult" + Me.ShowIcon = False + Me.Text = "Gefundene Knoten" + Me.TopMost = True + Me.ResumeLayout(False) + + End Sub + + Friend WithEvents listBoxResults As ListBox +End Class diff --git a/app/DD-Record-Organizer/frmTreeSearchResult.resx b/app/DD-Record-Organizer/frmTreeSearchResult.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/app/DD-Record-Organizer/frmTreeSearchResult.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/app/DD-Record-Organizer/frmTreeSearchResult.vb b/app/DD-Record-Organizer/frmTreeSearchResult.vb new file mode 100644 index 0000000..7944226 --- /dev/null +++ b/app/DD-Record-Organizer/frmTreeSearchResult.vb @@ -0,0 +1,31 @@ +Public Class frmTreeSearchResult + Public searchResultNodes As List(Of TreeNode) + Public constructorForm As frmConstructor_Main + + Private Sub frmTreeSearchResult_Load(sender As Object, e As EventArgs) Handles MyBase.Load + listBoxResults.Focus() + + searchResultNodes.ForEach(Sub(resultNode) + listBoxResults.Items.Add(resultNode.Text) + End Sub) + End Sub + + Private Sub listBoxResults_KeyUp(sender As Object, e As KeyEventArgs) Handles listBoxResults.KeyUp + If e.KeyCode = Keys.Escape Then + DialogResult = DialogResult.Cancel + Close() + End If + End Sub + + Private Sub SetSelectedNode(nodeName As String) + Dim node = searchResultNodes.Find(Function(n As TreeNode) + Return n.Text = nodeName + End Function) + constructorForm.SetSelectedTreeViewNode(node) + End Sub + + Private Sub listBoxResults_SelectedIndexChanged(sender As Object, e As EventArgs) Handles listBoxResults.SelectedIndexChanged + Dim name As String = listBoxResults.SelectedItem + SetSelectedNode(name) + End Sub +End Class \ No newline at end of file