diff --git a/app/DD-Record-Organiser/ClassControlBuilder.vb b/app/DD-Record-Organiser/ClassControlBuilder.vb index 1f11a72..0f7ec3b 100644 --- a/app/DD-Record-Organiser/ClassControlBuilder.vb +++ b/app/DD-Record-Organiser/ClassControlBuilder.vb @@ -103,6 +103,20 @@ Public Class ClassControlBuilder End If End Sub + Public Sub RecordChanged(sender As Object, e As DevExpress.Data.SelectionChangedEventArgs) + Dim onRecordChangedHandler As EventHandler = CType(Me.Events(_onRecordChangedName), EventHandler) + Dim ctrl As DevExpress.XtraGrid.Views.Grid.GridView = sender + + Dim controlId As Integer = DirectCast(ctrl.GridControl.Tag, ClassControlMetadata).Id + If Not ControlsChanged.Contains(controlId) Then + ControlsChanged.Add(controlId) + End If + + If (onRecordChangedHandler IsNot Nothing And WatchRecordChanges) Then + onRecordChangedHandler.Invoke(sender, e) + End If + End Sub + Public Sub MouseHover(sender As Object, e As EventArgs) Dim onMouseHoverHandler As EventHandler = CType(Me.Events(_onMouseHoverName), EventHandler) @@ -448,7 +462,7 @@ Public Class ClassControlBuilder 'SQL für enable control Dim SQLenable As String = String.Format("SELECT GUID, SQL_COMMAND_2,CONTROL_TYPE_ID,FORMAT_TYPE FROM TBPMO_CONTROL WHERE SQL_COMMAND_2 LIKE '%@{0}@%'", controlId) - + value = DirectCast(control, DevExpress.XtraEditors.DateEdit).DateTime If String.IsNullOrEmpty(value) Then @@ -586,10 +600,10 @@ Public Class ClassControlBuilder Dim GridView As DevExpress.XtraGrid.Views.Grid.GridView = sender Dim control As Control = DirectCast(GridView.GridControl, Control) Dim controlId As Integer = DirectCast(GridView.GridControl.Tag, ClassControlMetadata).Id - + CONTROL_ID = controlId control.Update() - + 'SQL für abhängige Auswahllisten Dim SQL As String = String.Format("SELECT GUID, SQL_COMMAND_1,CONTROL_TYPE_ID,FORMAT_TYPE FROM TBPMO_CONTROL WHERE SQL_COMMAND_1 LIKE '%@{0}@%'", controlId) 'SQL für enable control @@ -651,7 +665,7 @@ Public Class ClassControlBuilder Catch ex As Exception Exit Sub End Try - + If CURRENT_RECORD_ID = 0 And CtrlCommandUI.IsInsert = True Then Exit Sub End If @@ -782,11 +796,18 @@ Public Class ClassControlBuilder Case "GridControl" Dim gridcontrol As DevExpress.XtraGrid.GridControl = CType(control, DevExpress.XtraGrid.GridControl) Dim gridview As DevExpress.XtraGrid.Views.Grid.GridView = gridcontrol.MainView - AddHandler gridview.CellValueChanged, AddressOf RecordChanged - AddHandler gridview.CellValueChanged, AddressOf OnCheckedChanged + + AddHandler gridview.SelectionChanged, AddressOf RecordChanged + AddHandler gridview.SelectionChanged, AddressOf OnCheckedChanged + AddHandler gridview.CustomDrawColumnHeader, AddressOf OnDrawColumnHeader End Select End Sub + Private Sub OnDrawColumnHeader(sender As Object, e As DevExpress.XtraGrid.Views.Grid.ColumnHeaderCustomDrawEventArgs) + Console.WriteLine() + End Sub + + Private Sub SetDragDropHandler(groupbox As GroupBox) If Not IsNothing(_group_box_drag_drop_handler) Then AddHandler groupbox.DragDrop, Me._group_box_drag_drop_handler @@ -1738,6 +1759,9 @@ Public Class ClassControlBuilder gridview.OptionsView.EnableAppearanceEvenRow = True gridview.Appearance.EvenRow.BackColor = Color.Aqua + gridview.OptionsSelection.MultiSelect = True + gridview.OptionsSelection.MultiSelectMode = DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.CheckBoxRowSelect + If _designMode Then Dim CheckEdit As New DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit() @@ -2171,12 +2195,12 @@ Public Class ClassControlBuilder control.DisplayMember = DT_ListBox.Columns(0).ColumnName End Try End If - + End If End If End If End If - + ' Wenn statische liste vorhanden, werte splitten und einfügen If static_list.Length > 0 Then diff --git a/app/DD-Record-Organiser/ClassControlCommandsUI.vb b/app/DD-Record-Organiser/ClassControlCommandsUI.vb index 14831e4..58ae351 100644 --- a/app/DD-Record-Organiser/ClassControlCommandsUI.vb +++ b/app/DD-Record-Organiser/ClassControlCommandsUI.vb @@ -531,15 +531,14 @@ Public Class ClassControlCommandsUI Continue For End If - If TypeOf ctrl Is DevExpress.XtraEditors.CheckedListBoxControl Then - Dim id As Integer = DirectCast(ctrl.Tag, ClassControlMetadata).Id - UpdateMultipleValues(id, RecordID, CONTROL_VALUE) + If TypeOf ctrl Is Windows.Forms.DataGridView Then + 'Dim id As Integer = DirectCast(ctrl.Tag, ClassControlMetadata).Id + 'UpdateMultipleValues(id, RecordID, CONTROL_VALUE) Continue For End If - If TypeOf ctrl Is Windows.Forms.DataGridView Then - Dim id As Integer = DirectCast(ctrl.Tag, ClassControlMetadata).Id - UpdateMultipleValues(id, RecordID, CONTROL_VALUE) + ' UpdateMultipleValues wird für diese Controls bereits beim CheckedChanged-Event ausgeführt + If TypeOf ctrl Is DevExpress.XtraGrid.GridControl Or TypeOf ctrl Is DevExpress.XtraEditors.CheckedListBoxControl Then Continue For End If @@ -758,46 +757,63 @@ Public Class ClassControlCommandsUI Dim gridview As DevExpress.XtraGrid.Views.Grid.GridView = chk_grid.MainView Dim SQL_COMAMND = ClassDatabase.Execute_Scalar("SELECT UPPER(SQL_COMMAND_1) FROM TBPMO_CONTROL WHERE GUID = " & CONTROL_ID) - ''TODO: Wenn keine Datasource vorhanden, angecheckte einträge als string speichern - If IsNothing(chk_grid.DataSource) Then - Dim result As New List(Of String) - Dim result_string As String + Dim result As New List(Of String) + Dim result_string As String - For i As Integer = 0 To gridview.DataRowCount - Dim res = gridview.GetRowCellValue(i, 0) - If CBool(gridview.GetRowCellValue(i, "CHECKED")) = True Then - Dim value = gridview.GetRowCellValue(i, 1).ToString.Trim - result.Add(value) - End If - Next - ' Hier wird ein String zurückgegeben, der als VALUE gespeichert werden soll - ' Überspringt den Rest der funktion - result_string = String.Join(";", result) - If Not IsNothing(result_string) Then - Return result_string - Else - Return Nothing - End If + For Each index As Integer In gridview.GetSelectedRows() + Dim fieldName As String = gridview.Columns(0).FieldName + Dim value As String = gridview.GetRowCellValue(index, fieldName) + result.Add(value) + Next + + result_string = String.Join(";", result) + + If Not IsNothing(result_string) Then + Return result_string Else - Dim result As New List(Of String) - Dim result_string As String - Dim DT As DataTable = chk_grid.DataSource - For Each row As DataRow In DT.Rows - If CBool(row.Item(0)) = True Then - Dim value = row.Item(1).ToString.Trim - result.Add(value) - End If - Next - ' Hier wird ein String zurückgegeben, der als VALUE gespeichert werden soll - ' Überspringt den Rest der funktion - result_string = String.Join(";", result) - If Not IsNothing(result_string) Then - Return result_string - Else - Return Nothing - End If + Return Nothing End If + ''TODO: Wenn keine Datasource vorhanden, angecheckte einträge als string speichern + 'If IsNothing(chk_grid.DataSource) Then + ' Dim result As New List(Of String) + ' Dim result_string As String + + ' For i As Integer = 0 To gridview.DataRowCount + ' Dim res = gridview.GetRowCellValue(i, 0) + ' If CBool(gridview.GetRowCellValue(i, "CHECKED")) = True Then + ' Dim value = gridview.GetRowCellValue(i, 1).ToString.Trim + ' result.Add(value) + ' End If + ' Next + ' ' Hier wird ein String zurückgegeben, der als VALUE gespeichert werden soll + ' ' Überspringt den Rest der funktion + ' result_string = String.Join(";", result) + ' If Not IsNothing(result_string) Then + ' Return result_string + ' Else + ' Return Nothing + ' End If + 'Else + ' Dim result As New List(Of String) + ' Dim result_string As String + ' Dim DT As DataTable = chk_grid.DataSource + ' For Each row As DataRow In DT.Rows + ' If CBool(row.Item(0)) = True Then + ' Dim value = row.Item(1).ToString.Trim + ' result.Add(value) + ' End If + ' Next + ' ' Hier wird ein String zurückgegeben, der als VALUE gespeichert werden soll + ' ' Überspringt den Rest der funktion + ' result_string = String.Join(";", result) + ' If Not IsNothing(result_string) Then + ' Return result_string + ' Else + ' Return Nothing + ' End If + 'End If + 'If SQL_COMAMND.ToString.StartsWith("SELECT [RECORD_ID]") Or SQL_COMAMND.ToString.StartsWith("SELECT [RECORD-ID]") Then ' 'Alle Recorddatensätze durchlaufen und überprüfen ob nicht angehakt ' 'Wenn nicht angehakt dann Record löschen diff --git a/app/DD-Record-Organiser/ClassControlLoader.vb b/app/DD-Record-Organiser/ClassControlLoader.vb index 6875639..6c318a2 100644 --- a/app/DD-Record-Organiser/ClassControlLoader.vb +++ b/app/DD-Record-Organiser/ClassControlLoader.vb @@ -114,27 +114,12 @@ control.BeginUpdate() - Dim DT_Check As New DataTable - Dim col_chk As New DataColumn(" ", GetType(Boolean)) - Dim col_str As New DataColumn("String_Value", GetType(String)) - col_str.Caption = dt.Columns(0).Caption - col_str.ReadOnly = True - - DT_Check.Columns.Add(col_chk) - DT_Check.Columns.Add(col_str) - - ' Daten füllen - For Each row As DataRow In dt.Rows - DT_Check.Rows.Add(False, row.Item(0)) - Next - ' Damit beim Setzen von DisplayMember und ValueMember kein Fehler auftritt, ' muss die Datasource zunächst geleert werden und der selected index auf -1 gesetzt werden. control.DataSource = Nothing ' Als letztes setzen wir die DataSource - control.DataSource = DT_Check - DirectCast(control.MainView, DevExpress.XtraGrid.Views.Grid.GridView).Columns(0).Width = 10 + control.DataSource = dt control.EndUpdate() sw.Stop() @@ -350,7 +335,7 @@ End If End If - + Catch ex As Exception MsgBox("Unexpected Error in LoadValue3:" & vbNewLine & ex.Message) ClassLogger.Add("Unexpected Error in LoadValue3: " & ex.Message, True) @@ -531,6 +516,19 @@ End Sub + Public Shared Sub LoadValue(control As DevExpress.XtraGrid.GridControl, values As List(Of Object)) + Dim gridview As DevExpress.XtraGrid.Views.Grid.GridView = control.MainView + For i As Integer = 0 To gridview.RowCount - 1 + Dim fieldName As String = gridview.Columns(0).FieldName + Dim rowhandle As Integer = gridview.GetRowHandle(i) + Dim rowvalue As String = gridview.GetRowCellValue(rowhandle, fieldName) + + If values.Contains(rowvalue) Then + gridview.SelectRow(rowhandle) + End If + Next + End Sub + End Class End Namespace diff --git a/app/DD-Record-Organiser/ClassControlValues.vb b/app/DD-Record-Organiser/ClassControlValues.vb index d357b3a..c23cf37 100644 --- a/app/DD-Record-Organiser/ClassControlValues.vb +++ b/app/DD-Record-Organiser/ClassControlValues.vb @@ -291,6 +291,10 @@ Public Class ClassControlValues Dim gridview = DirectCast(control, DataGridView) ControlLoader.DataGridView.LoadValue(gridview, values) + Case GetType(DevExpress.XtraGrid.GridControl) + Dim gridcontrol As DevExpress.XtraGrid.GridControl = DirectCast(control, DevExpress.XtraGrid.GridControl) + ControlLoader.DataGridViewCheckable.LoadValue(gridcontrol, values) + Case Else ClassLogger.Add(" >> Sub LoadControlValue - Control-Type nicht berücksichtigt: " & GetType(Control).ToString(), False) End Select @@ -582,6 +586,20 @@ Public Class ClassControlValues dgv.Refresh() End If + Case GetType(DevExpress.XtraGrid.GridControl) + Dim gc = DirectCast(control, DevExpress.XtraGrid.GridControl) + Dim gridview As DevExpress.XtraGrid.Views.Grid.GridView = gc.MainView + + If gridview.RowCount = 0 Then + Exit Select + End If + + For i As Integer = 0 To gridview.RowCount - 1 + Dim fieldName As String = gridview.Columns(0).FieldName + Dim rowhandle As Integer = gridview.GetRowHandle(i) + Dim rowvalue As String = gridview.GetRowCellValue(rowhandle, fieldName) + gridview.UnselectRow(rowhandle) + Next End Select End Sub #End Region diff --git a/app/DD-Record-Organiser/frmConstructor_Main.Designer.vb b/app/DD-Record-Organiser/frmConstructor_Main.Designer.vb index ae68fb5..24fce40 100644 --- a/app/DD-Record-Organiser/frmConstructor_Main.Designer.vb +++ b/app/DD-Record-Organiser/frmConstructor_Main.Designer.vb @@ -152,6 +152,7 @@ Partial Class frmConstructor_Main Me.VWPMO_WF_ACTIVETableAdapter = New DD_Record_Organiser.DD_DMSDataSetTableAdapters.VWPMO_WF_ACTIVETableAdapter() Me.TBPMO_FILES_USERBindingSource = New System.Windows.Forms.BindingSource(Me.components) Me.ToolTipController = New DevExpress.Utils.ToolTipController(Me.components) + Me.SucheAnzeigenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() CType(Me.SplitContainerMain, System.ComponentModel.ISupportInitialize).BeginInit() Me.SplitContainerMain.SuspendLayout() CType(Me.SplitContainerTop, System.ComponentModel.ISupportInitialize).BeginInit() @@ -266,7 +267,7 @@ Partial Class frmConstructor_Main ' 'ContextMenuGrid ' - Me.ContextMenuGrid.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FunktionenDataGridToolStripMenuItem, Me.ToolStripSeparator1, Me.AnsichtUmschaltenToolStripMenuItem, Me.ButtonSetViewAsDefault, Me.ButtonResetView, Me.ToolStripSeparator2, Me.ButtonResetFilter, Me.ButtonExportToExcel, Me.DatenNeuLadenToolStripMenuItem, Me.ToolStripSeparator6, Me.tsmi_RecordDelete}) + Me.ContextMenuGrid.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FunktionenDataGridToolStripMenuItem, Me.ToolStripSeparator1, Me.AnsichtUmschaltenToolStripMenuItem, Me.ButtonSetViewAsDefault, Me.ButtonResetView, Me.ToolStripSeparator2, Me.SucheAnzeigenToolStripMenuItem, Me.ButtonResetFilter, Me.ButtonExportToExcel, Me.DatenNeuLadenToolStripMenuItem, Me.ToolStripSeparator6, Me.tsmi_RecordDelete}) Me.ContextMenuGrid.Name = "ContextMenuGrid" resources.ApplyResources(Me.ContextMenuGrid, "ContextMenuGrid") ' @@ -363,6 +364,7 @@ Partial Class frmConstructor_Main Me.grvwGrid.OptionsBehavior.Editable = False Me.grvwGrid.OptionsBehavior.ReadOnly = True Me.grvwGrid.OptionsClipboard.CopyColumnHeaders = DevExpress.Utils.DefaultBoolean.[False] + Me.grvwGrid.OptionsFind.AllowFindPanel = False Me.grvwGrid.OptionsSelection.EnableAppearanceFocusedCell = False Me.grvwGrid.OptionsSelection.EnableAppearanceFocusedRow = False Me.grvwGrid.OptionsSelection.EnableAppearanceHideSelection = False @@ -1051,6 +1053,11 @@ Partial Class frmConstructor_Main Me.TBPMO_FILES_USERBindingSource.DataMember = "TBPMO_FILES_USER" Me.TBPMO_FILES_USERBindingSource.DataSource = Me.DD_DMSDataSet ' + 'SucheAnzeigenToolStripMenuItem + ' + Me.SucheAnzeigenToolStripMenuItem.Name = "SucheAnzeigenToolStripMenuItem" + resources.ApplyResources(Me.SucheAnzeigenToolStripMenuItem, "SucheAnzeigenToolStripMenuItem") + ' 'frmConstructor_Main ' resources.ApplyResources(Me, "$this") @@ -1238,4 +1245,5 @@ Partial Class frmConstructor_Main Friend WithEvents tslblFileslocked As System.Windows.Forms.ToolStripLabel Friend WithEvents tsButtonCancel As System.Windows.Forms.ToolStripButton Friend WithEvents tsbtnRedo As System.Windows.Forms.ToolStripButton + Friend WithEvents SucheAnzeigenToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem End Class diff --git a/app/DD-Record-Organiser/frmConstructor_Main.resx b/app/DD-Record-Organiser/frmConstructor_Main.resx index 6877b1a..5076ff7 100644 --- a/app/DD-Record-Organiser/frmConstructor_Main.resx +++ b/app/DD-Record-Organiser/frmConstructor_Main.resx @@ -246,6 +246,12 @@ 229, 6 + + 232, 22 + + + Suche anzeigen (CTRL+F) + 232, 22 @@ -2754,6 +2760,12 @@ DevExpress.Utils.ToolTipController, DevExpress.Utils.v15.2, Version=15.2.9.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + SucheAnzeigenToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + frmConstructor_Main diff --git a/app/DD-Record-Organiser/frmConstructor_Main.vb b/app/DD-Record-Organiser/frmConstructor_Main.vb index a68a657..bf04d13 100644 --- a/app/DD-Record-Organiser/frmConstructor_Main.vb +++ b/app/DD-Record-Organiser/frmConstructor_Main.vb @@ -1101,7 +1101,9 @@ Public Class frmConstructor_Main elapsed = sw.Elapsed.TotalSeconds If LogErrorsOnly = False Then ClassLogger.Add(" >> Load_Tree_View_Data1 took " & Format(elapsed, "0.000000000") & " seconds", False) Get_RecordCounts_Nodes() + Load_Entity_Data(ACT_EBENE) + sw.Stop() sw.Reset() elapsed = elapsed - sw.Elapsed.TotalSeconds @@ -1445,7 +1447,7 @@ Public Class frmConstructor_Main Me.Cursor = Cursors.Default Return False End If - If EditState.Insert = 1 Then + If EDIT_STATE = EditState.Insert Then Select Case ACT_EBENE Case 1 EBENE1_RECID = recid @@ -2165,8 +2167,6 @@ Public Class frmConstructor_Main ENTITY_LOADED = True End If - - sw.Done() If ENTITY_RELOAD_AFT_CONTROL_LOAD = True Then @@ -5242,7 +5242,7 @@ Public Class frmConstructor_Main ''' Public Function TrySave_User() As Boolean Try - EDIT_STATE = EditState.None + 'EDIT_STATE = EditState.None 'Update_Status_Label(False) If RECORD_CHANGED = False Then @@ -5340,4 +5340,8 @@ Public Class frmConstructor_Main Private Sub grvwGrid_CellValueChanged(sender As Object, e As CellValueChangedEventArgs) Handles grvwGrid.CellValueChanged End Sub + + Private Sub SucheAnzeigenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SucheAnzeigenToolStripMenuItem.Click + grvwGrid.ShowFindPanel() + End Sub End Class \ No newline at end of file diff --git a/app/SetupWiX/Product.wxs b/app/SetupWiX/Product.wxs index 77e5421..c3eeef2 100644 --- a/app/SetupWiX/Product.wxs +++ b/app/SetupWiX/Product.wxs @@ -105,27 +105,27 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + @@ -133,26 +133,26 @@ - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + +