From c9fc63e237a782b4bd643fd5feada33680021712 Mon Sep 17 00:00:00 2001 From: JenneJ Date: Wed, 20 Apr 2016 15:55:16 +0200 Subject: [PATCH 1/3] Revert "MS19042016" This reverts commit fa5397cd240efd22c865bb0c410ff6794e9f3cce. --- .../ClassControlBuilder.vb | 1 + .../ClassControlCommandsUI.vb | 248 ++++++++---------- app/DD-Record-Organiser/ClassControlLoader.vb | 203 +++++--------- app/DD-Record-Organiser/ClassControlValues.vb | 12 +- .../frmConstructor_Main.Designer.vb | 23 +- .../frmConstructor_Main.vb | 27 +- app/DD-Record-Organiser/frmForm_Input.vb | 17 ++ 7 files changed, 209 insertions(+), 322 deletions(-) diff --git a/app/DD-Record-Organiser/ClassControlBuilder.vb b/app/DD-Record-Organiser/ClassControlBuilder.vb index ff9e613..e41d314 100644 --- a/app/DD-Record-Organiser/ClassControlBuilder.vb +++ b/app/DD-Record-Organiser/ClassControlBuilder.vb @@ -76,6 +76,7 @@ Public Class ClassControlBuilder Public Sub MouseHover(sender As Object, e As EventArgs) Dim onMouseHoverHandler As EventHandler = CType(Me.Events(_onMouseHoverName), EventHandler) + If onMouseHoverHandler IsNot Nothing Then onMouseHoverHandler.Invoke(sender, e) End If diff --git a/app/DD-Record-Organiser/ClassControlCommandsUI.vb b/app/DD-Record-Organiser/ClassControlCommandsUI.vb index 9c5889c..1109b7d 100644 --- a/app/DD-Record-Organiser/ClassControlCommandsUI.vb +++ b/app/DD-Record-Organiser/ClassControlCommandsUI.vb @@ -562,163 +562,135 @@ Public Class ClassControlCommandsUI End Sub Function GetControlValue(ctrl As Control) As String - Dim CONTROL_ID As Integer - Try - Dim type = ctrl.GetType().Name - CONTROL_ID = DirectCast(ctrl.Tag, ClassControlMetadata).Id ' GetControlID_for_RecordID(ctrl.Name, CURRENT_RECORD_ID) - If LogErrorsOnly = False Then ClassLogger.Add(" >> GetControlValue CONTROL_ID: " & CONTROL_ID, False) - Dim CONTROL_VALUE As String = Nothing - If LogErrorsOnly = False Then ClassLogger.Add(" >> type = " & type.ToString, False) - Select Case type - Case "TextBox" - Return DirectCast(ctrl, TextBox).Text - Case "ComboBox" - If LogErrorsOnly = False Then ClassLogger.Add(" >> Return Value: " & DirectCast(ctrl, CustomComboBox).Text, False) - Return DirectCast(ctrl, CustomComboBox).Text - Case "CheckBox" - Return DirectCast(ctrl, CheckBox).Checked.ToString() - Case "RadioButton" - Return DirectCast(ctrl, RadioButton).Checked.ToString() - Case "DateEdit" - Dim Value = DirectCast(ctrl, DevExpress.XtraEditors.DateEdit).EditValue - - If IsDBNull(Value) Then - Return "" - Else - Return DirectCast(ctrl, DevExpress.XtraEditors.DateEdit).DateTime.ToString("yyyy-MM-dd") - End If - Case "PictureBox" - 'Return "PictureBox" 'Es ist egal was für ein String hier zurückgegeben wird, hauptsache nicht Nothing - Case "CheckedListBoxControl" - Dim chklbx As DevExpress.XtraEditors.CheckedListBoxControl - chklbx = DirectCast(ctrl, DevExpress.XtraEditors.CheckedListBoxControl) - - 'TODO: Wenn keine Datasource vorhanden, angecheckte einträge als string speichern - If IsNothing(chklbx.DataSource) Then - Dim result As New List(Of String) - Dim result_string As String - - For Each item As DevExpress.XtraEditors.Controls.CheckedListBoxItem In chklbx.CheckedItems - result.Add(item.Value.ToString.Trim) - Next - - result_string = String.Join(";", result) - - ' Hier wird ein String zurückgegeben, der als VALUE gespeichert werden soll - ' Überspringt den Rest der funktion - Return result_string - End If + Dim type = ctrl.GetType().Name + Dim CONTROL_ID As Integer = DirectCast(ctrl.Tag, ClassControlMetadata).Id ' GetControlID_for_RecordID(ctrl.Name, CURRENT_RECORD_ID) + If LogErrorsOnly = False Then ClassLogger.Add(" >> GetControlValue CONTROL_ID: " & CONTROL_ID, False) + Dim CONTROL_VALUE As String = Nothing + If LogErrorsOnly = False Then ClassLogger.Add(" >> type = " & type.ToString, False) + Select Case type + Case "TextBox" + Return DirectCast(ctrl, TextBox).Text + Case "ComboBox" + If LogErrorsOnly = False Then ClassLogger.Add(" >> Return Value: " & DirectCast(ctrl, CustomComboBox).Text, False) + Return DirectCast(ctrl, CustomComboBox).Text + Case "CheckBox" + Return DirectCast(ctrl, CheckBox).Checked.ToString() + Case "RadioButton" + Return DirectCast(ctrl, RadioButton).Checked.ToString() + Case "DateEdit" + Dim Value = DirectCast(ctrl, DevExpress.XtraEditors.DateEdit).EditValue + + If IsDBNull(Value) Then + Return "" + Else + Return DirectCast(ctrl, DevExpress.XtraEditors.DateEdit).DateTime.ToString("yyyy-MM-dd") + End If + Case "PictureBox" + 'Return "PictureBox" 'Es ist egal was für ein String hier zurückgegeben wird, hauptsache nicht Nothing + Case "CheckedListBoxControl" + Dim chklbx As DevExpress.XtraEditors.CheckedListBoxControl + chklbx = DirectCast(ctrl, DevExpress.XtraEditors.CheckedListBoxControl) + + 'TODO: Wenn keine Datasource vorhanden, angecheckte einträge als string speichern + If IsNothing(chklbx.DataSource) Then + Dim result As New List(Of String) + Dim result_string As String + + For Each item As DevExpress.XtraEditors.Controls.CheckedListBoxItem In chklbx.CheckedItems + result.Add(item.Value.ToString.Trim) + Next - Dim SQL_Datasource = "SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = " & CONTROL_ID - SQL_Datasource = ClassDatabase.Execute_Scalar(SQL_Datasource) - - If SQL_Datasource.ToUpper.Contains("SELECT [RECORD-ID],") Then - 'Alle Recorddatensätze durchlaufen und überprüfen ob nicht angehakt - 'Wenn nicht angehakt dann Record löschen - Dim index As Integer = 0 - For i As Integer = 0 To chklbx.ItemCount - 1 - Dim item = chklbx.GetItem(i) - Dim row As DataRowView = CType(item, DataRowView) - If chklbx.GetItemCheckState(i) = 0 Then - If CInt(row(0)) > 0 Then - 'Überprüfen ob es den Record gibt - Dim SQL = "SELECT COUNT(*) FROM TBPMO_RECORD_CONNECT WHERE RECORD1_ID = " & CURRENT_RECORD_ID & " AND RECORD2_ID = " & CInt(row(0)) - If ClassDatabase.Execute_Scalar(SQL) = 1 Then - SQL = "DELETE FROM TBPMO_RECORD_CONNECT WHERE RECORD1_ID = " & CURRENT_RECORD_ID & " AND RECORD2_ID = " & CInt(row(0)) - If ClassDatabase.Execute_non_Query(SQL) = True Then - If LogErrorsOnly = False Then ClassLogger.Add(" >> TBPMO_RECORD_CONNECT-Entry after 'deselect CheckedListBox' deleted", False) - End If - End If + result_string = String.Join(";", result) + + ' Hier wird ein String zurückgegeben, der als VALUE gespeichert werden soll + ' Überspringt den Rest der funktion + Return result_string + End If + + 'Alle Recorddatensätze durchlaufen und überprüfen ob nicht angehakt + 'Wenn nicht angehakt dann Record löschen + Dim index As Integer = 0 + For i As Integer = 0 To chklbx.ItemCount - 1 + Dim item = chklbx.GetItem(i) + Dim row As DataRowView = CType(item, DataRowView) + If chklbx.GetItemCheckState(i) = 0 Then + If CInt(row(0)) > 0 Then + 'Überprüfen ob es den Record gibt + Dim SQL = "SELECT COUNT(*) FROM TBPMO_RECORD_CONNECT WHERE RECORD1_ID = " & CURRENT_RECORD_ID & " AND RECORD2_ID = " & CInt(row(0)) + If ClassDatabase.Execute_Scalar(SQL) = 1 Then + SQL = "DELETE FROM TBPMO_RECORD_CONNECT WHERE RECORD1_ID = " & CURRENT_RECORD_ID & " AND RECORD2_ID = " & CInt(row(0)) + If ClassDatabase.Execute_non_Query(SQL) = True Then + If LogErrorsOnly = False Then ClassLogger.Add(" >> TBPMO_RECORD_CONNECT-Entry after 'deselect CheckedListBox' deleted", False) End If End If - Next + End If End If - - - 'Für jeden gecheckten Eintrag den Record der Stammentität mit dem selektierten linken - Dim checked_result As New List(Of String) - Dim checked_result_string As String - Dim checked_Count As Integer = 0 - For Each item As Object In DirectCast(ctrl, DevExpress.XtraEditors.CheckedListBoxControl).CheckedItems - checked_Count += 1 - Next + Next - If SQL_Datasource.ToUpper.Contains("SELECT [RECORD-ID],") Then - For Each item As Object In DirectCast(ctrl, DevExpress.XtraEditors.CheckedListBoxControl).CheckedItems - Dim row As DataRowView = CType(item, DataRowView) - Try - If CInt(row(0)) > 0 Then - Dim rid = CInt(row(0)) - Dim checked_value = row(1) - checked_result.Add(checked_value) - checked_result_string = String.Join(";", checked_result) - Dim SQL = "SELECT COUNT(*) FROM TBPMO_RECORD_CONNECT WHERE RECORD1_ID = " & CURRENT_RECORD_ID & " AND RECORD2_ID = " & CInt(row(0)) - If ClassDatabase.Execute_Scalar(SQL) = 0 Then - If CURRENT_RECORD_ID = 0 Then - MsgBox("Attention: no current record Selected!", MsgBoxStyle.Exclamation) - Else - If ConnectRecord(CURRENT_RECORD_ID, CInt(row(0)), "CheckedListBox;" & ctrl.Name) = True Then - If LogErrorsOnly = False Then ClassLogger.Add(" >> Checked ListBox record '" & rid.ToString & "' was linked successfully.", False) - End If - End If + 'Für jeden gecheckten Eintrag den Record der Stammentität mit dem selektierten linken + Dim checked_result As New List(Of String) + Dim checked_result_string As String - End If - End If - Catch ex As Exception - ClassLogger.Add("Error in CheckedListBoxGetControlValue: " & ex.Message, True) - End Try - - Next - Else - For Each item As Object In DirectCast(ctrl, DevExpress.XtraEditors.CheckedListBoxControl).CheckedItems - Dim row As DataRowView = CType(item, DataRowView) + For Each item As Object In DirectCast(ctrl, DevExpress.XtraEditors.CheckedListBoxControl).CheckedItems + Dim row As DataRowView = CType(item, DataRowView) + Try + If CInt(row(0)) > 0 Then + Dim rid = CInt(row(0)) Dim checked_value = row(1) checked_result.Add(checked_value) checked_result_string = String.Join(";", checked_result) - Next - End If + Dim SQL = "SELECT COUNT(*) FROM TBPMO_RECORD_CONNECT WHERE RECORD1_ID = " & CURRENT_RECORD_ID & " AND RECORD2_ID = " & CInt(row(0)) + If ClassDatabase.Execute_Scalar(SQL) = 0 Then + If CURRENT_RECORD_ID = 0 Then + MsgBox("Attention: no current record Selected!", MsgBoxStyle.Exclamation) + Else + If ConnectRecord(CURRENT_RECORD_ID, CInt(row(0)), "CheckedListBox;" & ctrl.Name) = True Then + If LogErrorsOnly = False Then ClassLogger.Add(" >> Checked ListBox record '" & rid.ToString & "' was linked successfully.", False) + End If + End If - - ' Hier wird ein String zurückgegeben, der als VALUE gespeichert werden soll - ' Überspringt den Rest der funktion - If Not IsNothing(checked_result_string) Then - Dim sql = String.Format("select count(*) from TBPMO_CONTROL_VALUE where CONTROL_ID = {0} and RECORD_ID = {1}", CONTROL_ID, CURRENT_RECORD_ID) - If ClassDatabase.Execute_Scalar(sql) = 0 And checked_Count > 0 Then - InsertControlValue(CONTROL_ID, CURRENT_RECORD_ID, "") + End If End If - Return checked_result_string - Else - 'In jedem Fall Nothing zurückgeben - Return Nothing + Catch ex As Exception + ClassLogger.Add("Error in CheckedListBoxGetControlValue: " & ex.Message, True) + End Try + + Next + ' Hier wird ein String zurückgegeben, der als VALUE gespeichert werden soll + ' Überspringt den Rest der funktion + If Not IsNothing(checked_result_string) Then + Dim sql = String.Format("select count(*) from TBPMO_CONTROL_VALUE where CONTROL_ID = {0} and RECORD_ID = {1}", CONTROL_ID, CURRENT_RECORD_ID) + If ClassDatabase.Execute_Scalar(sql) = 0 Then + InsertControlValue(CONTROL_ID, CURRENT_RECORD_ID, "") End If + Return checked_result_string + Else + 'In jedem Fall Nothing zurückgeben + Return Nothing + End If - Case "ListBoxControl" - Dim listbox As DevExpress.XtraEditors.ListBoxControl = DirectCast(ctrl, DevExpress.XtraEditors.ListBoxControl) - Return listbox.SelectedValue - - Case "DataGridView" - Dim list As New List(Of String) - Dim dgv As DataGridView = DirectCast(ctrl, DataGridView) + Case "ListBoxControl" + Dim listbox As DevExpress.XtraEditors.ListBoxControl = DirectCast(ctrl, DevExpress.XtraEditors.ListBoxControl) + Return listbox.SelectedValue - For Each row As DataGridViewRow In dgv.Rows - Dim cell As DataGridViewCell = row.Cells(0) - If Not IsNothing(cell.Value) Then - list.Add(cell.Value) - End If - Next + Case "DataGridView" + Dim list As New List(Of String) + Dim dgv As DataGridView = DirectCast(ctrl, DataGridView) - Return String.Join(";", list) + For Each row As DataGridViewRow In dgv.Rows + Dim cell As DataGridViewCell = row.Cells(0) + If Not IsNothing(cell.Value) Then + list.Add(cell.Value) + End If + Next - Case Else - Return Nothing - End Select - Catch ex As Exception - ClassLogger.Add("Unexpected error in GetControlValue for Control-ID: " & CONTROL_ID & " - error: " & ex.Message) - Return Nothing - End Try + Return String.Join(";", list) + Case Else + Return Nothing + End Select End Function Public Shared Function InsertControlValue(ControlID As Integer, RecordID As Integer, Value As String) diff --git a/app/DD-Record-Organiser/ClassControlLoader.vb b/app/DD-Record-Organiser/ClassControlLoader.vb index c5d8f8a..c30f168 100644 --- a/app/DD-Record-Organiser/ClassControlLoader.vb +++ b/app/DD-Record-Organiser/ClassControlLoader.vb @@ -15,13 +15,9 @@ 'End Function Public Shared Function LoadAutoValue(control As Windows.Forms.Control, RecordId As Integer, ParentRecordId As Integer, entity_ID As Integer) - Dim ControlId As Integer Try - If ControlId = 810 Then - Console.WriteLine("Obacht") - End If Dim AutoValue As String = String.Empty - ControlId = DirectCast(control.Tag, ClassControlMetadata).Id + Dim ControlId As Integer = DirectCast(control.Tag, ClassControlMetadata).Id Dim CONNID = ClassDatabase.Execute_Scalar(String.Format("SELECT CONNECTION_ID_1 FROM TBPMO_CONTROL WHERE GUID = {0}", ControlId)) Dim SQL As String = ClassDatabase.Execute_Scalar(String.Format("SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = {0}", ControlId)) SQL = ClassControlValues.ReplaceSqlCommandPlaceholders(SQL, RecordId, ParentRecordId, entity_ID) @@ -43,7 +39,7 @@ Return AutoValue Catch ex As Exception - ClassLogger.Add("Unexpected Error in LoadAutoValue - Control-ID: " & ControlId.ToString & " - ERROR: " & ex.Message, True) + ClassLogger.Add("Unexpected Error in LoadAutoValue: " & ex.Message, True) Return Nothing End Try @@ -56,9 +52,7 @@ Public Shared Function GetDynamicValue(controlId As Integer, formId As Integer, connID As Object, sqlCommand As String) As DynamicValue Dim returnValue As DynamicValue - If controlId = 810 Then - Console.WriteLine("Obacht") - End If + returnValue.StaticList = CheckForStaticList(controlId) returnValue.DataTable = GetSqlList(controlId, formId, connID, sqlCommand) @@ -85,9 +79,6 @@ Public Shared Function GetSqlList(controlId As Integer, formId As Integer, connection_Id As Object, sqlCommand As String) As DataTable Try - If controlId = 810 Then - Console.WriteLine("Obacht") - End If If sqlCommand Is Nothing Or sqlCommand = String.Empty Then Return Nothing End If @@ -117,132 +108,81 @@ End Function Overloads Shared Sub SetDataSource(control As CustomComboBox, dt As DataTable) - Try - If control.Name = "cmbverantwortlich" Then - Console.WriteLine("Obacht") - End If - Dim Name1 = dt.Columns(0).ColumnName.ToString - Dim Name2 - Try - Name2 = dt.Columns(1).ColumnName.ToString - Catch ex As Exception - Name2 = dt.Columns(0).ColumnName.ToString - End Try - Dim columnCount As Integer = dt.Columns.Count - control.BeginUpdate() - ' 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 - control.SelectedIndex = -1 - ClassControlValues.ClearControlValue(control) - - ' Es ist wichtig, dass DisplayMember und ValueMember VOR der DataSource festgelegt werden, - ' Dadurch ist das Laden der Datasource um einiges SCHNELLER - If columnCount = 1 Then - For Each row As DataRow In dt.Rows - control.Items.Add(row.Item(0).ToString) - Next - 'control.ValueMember = Name1 - 'control.DisplayMember = Name1 - ElseIf columnCount = 2 Then - 'If control.Name = "cmbverantwortlich" Then - ' control.ValueMember = Name1 - ' control.DisplayMember = Name2 - 'Else - For Each row As DataRow In dt.Rows - control.Items.Add(row.Item(1).ToString) - Next - 'End If - - 'If control.Name = "cmbverantwortlich" Then + Dim sw As Stopwatch = Stopwatch.StartNew() + Dim columnCount As Integer = dt.Columns.Count + + control.BeginUpdate() + + ' 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 + control.SelectedIndex = -1 + + ' Es ist wichtig, dass DisplayMember und ValueMember VOR der DataSource festgelegt werden, + ' Dadurch ist das Laden der Datasource um einiges SCHNELLER + If columnCount = 1 Then + control.DisplayMember = dt.Columns(0).ColumnName + control.ValueMember = dt.Columns(0).ColumnName + ElseIf columnCount = 2 Then + control.DisplayMember = dt.Columns(1).ColumnName + control.ValueMember = dt.Columns(0).ColumnName + End If - 'Else - ' control.ValueMember = Name1 - ' control.DisplayMember = Name2 - 'End If - End If - ' Als Erstes setzen wir die DataSource - 'If control.Name = "cmbverantwortlich" Then - ' control.DataSource = dt - 'End If + ' Als letztes setzen wir die DataSource + control.DataSource = dt - 'control.DataSource = dt - control.EndUpdate() - Catch ex As Exception - ClassLogger.Add("unexpected Error in SetDataSource for ControlName: " & control.Name & " - Error: " & ex.Message) - End Try + control.EndUpdate() + sw.Stop() + Console.WriteLine("SetDataSource for {0} took {1}ms", control.Name, sw.ElapsedMilliseconds) End Sub Overloads Shared Sub SetDataSource(control As DevExpress.XtraEditors.CheckedListBoxControl, dt As DataTable) - Try - If control.Name = "cmbverantwortlich" Then - Console.WriteLine("Obacht") - End If - Dim columnCount As Integer = dt.Columns.Count - - ' 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 - control.SelectedIndex = -1 - - - ' Es ist wichtig, dass DisplayMember und ValueMember VOR der DataSource festgelegt werden, - ' Dadurch ist das Laden der Datasource um einiges SCHNELLER - If columnCount = 1 Then - control.DisplayMember = dt.Columns(0).ColumnName - control.ValueMember = dt.Columns(0).ColumnName - ElseIf columnCount = 2 Then - control.DisplayMember = dt.Columns(1).ColumnName - control.ValueMember = dt.Columns(0).ColumnName - End If - ' Als letztes setzen wir die DataSource - control.DataSource = dt - control.EndUpdate() - Catch ex As Exception - ClassLogger.Add("unexpected Error in SetDataSource2 for ControlName: " & control.Name & " - Error: " & ex.Message) - End Try + Dim columnCount As Integer = dt.Columns.Count + + ' 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 + control.SelectedIndex = -1 + + ' Es ist wichtig, dass DisplayMember und ValueMember VOR der DataSource festgelegt werden, + ' Dadurch ist das Laden der Datasource um einiges SCHNELLER + If columnCount = 1 Then + control.DisplayMember = dt.Columns(0).ColumnName + control.ValueMember = dt.Columns(0).ColumnName + ElseIf columnCount = 2 Then + control.DisplayMember = dt.Columns(1).ColumnName + control.ValueMember = dt.Columns(0).ColumnName + End If + ' Als letztes setzen wir die DataSource + control.DataSource = dt End Sub Overloads Shared Sub SetDataSource(control As DevExpress.XtraEditors.ListBoxControl, dt As DataTable) - Try - If control.Name = "cmbverantwortlich" Then - Console.WriteLine("Obacht") - End If - Dim columnCount As Integer = dt.Columns.Count - - ' 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 - control.SelectedIndex = -1 - - ' Es ist wichtig, dass DisplayMember und ValueMember VOR der DataSource festgelegt werden, - ' Dadurch ist das Laden der Datasource um einiges SCHNELLER - If columnCount = 1 Then - control.DisplayMember = dt.Columns(0).ColumnName - 'control.ValueMember = dt.Columns(0).ColumnName - ElseIf columnCount = 2 Then - control.DisplayMember = dt.Columns(1).ColumnName - control.ValueMember = dt.Columns(0).ColumnName - End If + Dim columnCount As Integer = dt.Columns.Count + + ' 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 + control.SelectedIndex = -1 + + ' Es ist wichtig, dass DisplayMember und ValueMember VOR der DataSource festgelegt werden, + ' Dadurch ist das Laden der Datasource um einiges SCHNELLER + If columnCount = 1 Then + control.DisplayMember = dt.Columns(0).ColumnName + control.ValueMember = dt.Columns(0).ColumnName + ElseIf columnCount = 2 Then + control.DisplayMember = dt.Columns(1).ColumnName + control.ValueMember = dt.Columns(0).ColumnName + End If - ' Als letztes setzen wir die DataSource - control.DataSource = dt - Catch ex As Exception - ClassLogger.Add("unexpected Error in SetDataSource3 for ControlName: " & control.Name & " - Error: " & ex.Message) - End Try + ' Als letztes setzen wir die DataSource + control.DataSource = dt End Sub Overloads Shared Sub SetDataSource(control As Windows.Forms.DataGridView, dt As DataTable) - Try - If control.Name = "cmbverantwortlich" Then - Console.WriteLine("Obacht") - End If - control.DataSource = dt - Catch ex As Exception - ClassLogger.Add("unexpected Error in SetDataSource4 for ControlName: " & control.Name & " - Error: " & ex.Message) - End Try + control.DataSource = dt End Sub End Class @@ -357,17 +297,11 @@ Public Class Combobox : Inherits _ListControl Public Shared Sub LoadValue(control As CustomComboBox, recordId As Integer, parentRecordId As Integer, value As String) - If control.Name = "cmbverantwortlich" Then - Console.WriteLine("Obacht") - End If control.Text = value End Sub Public Shared Sub LoadList(control As CustomComboBox, formId As Integer, connID As Object, SQLCommand As String) Try - If control.Name = "cmbverantwortlich" Then - Console.WriteLine("Obacht") - End If Dim dynamic As DynamicValue = GetDynamicValue(DirectCast(control.Tag, ClassControlMetadata).Id, formId, connID, SQLCommand) If dynamic.StaticList IsNot Nothing Then @@ -385,9 +319,6 @@ Private Shared Sub CalculateDropdownWidth(control As CustomComboBox, dt As DataTable) Try - If control.Name = "cmbverantwortlich" Then - Console.WriteLine("Obacht") - End If Const WIDEST_WIDTH As Integer = 300 Dim FinalWidth As Integer = WIDEST_WIDTH Dim index As Integer = 1 @@ -428,8 +359,6 @@ control.SetItemCheckState(pos, CheckState.Checked) End If Next - control.Refresh() - ' control.Invoke(control) End Sub Public Shared Sub LoadList(control As DevExpress.XtraEditors.CheckedListBoxControl, formId As Integer, conn_Id As Object, SQLCommand As String) @@ -461,9 +390,7 @@ If IsNothing(value) Then Exit Sub End If - If control.Name = "cmbverantwortlich" Then - Console.WriteLine("Obacht") - End If + control.SelectedIndex = control.FindStringExact(value) End Sub diff --git a/app/DD-Record-Organiser/ClassControlValues.vb b/app/DD-Record-Organiser/ClassControlValues.vb index bebe3cc..a86a595 100644 --- a/app/DD-Record-Organiser/ClassControlValues.vb +++ b/app/DD-Record-Organiser/ClassControlValues.vb @@ -163,9 +163,7 @@ Public Class ClassControlValues For Each control As Control In controls Dim ControlId As Integer = DirectCast(control.Tag, ClassControlMetadata).Id - If ControlId = 810 Then - Console.WriteLine("Obacht") - End If + ' Wert per LINQ aus DT_ControlValues suchen der zur aktuellen controlId passt Dim values As List(Of Object) = (From row In DT_ControlValues.AsEnumerable() Where row.Item("CONTROL_ID") = ControlId @@ -225,9 +223,7 @@ Public Class ClassControlValues Try ' Für die meisten Controls wird nur das erste Element der Liste benötigt Dim value As String = Nothing - If controlId = 810 Then - Console.WriteLine("Obacht") - End If + If values.Count > 0 Then value = values.Item(0) End If @@ -277,7 +273,7 @@ Public Class ClassControlValues ClassLogger.Add(" >> Sub LoadControlValue - Control-Type nicht berücksichtigt: " & GetType(Control).ToString(), False) End Select Catch ex As Exception - ClassLogger.Add("Unexpected Error in LoadControlValue - ControlID: " & controlId.ToString & " - Error: " & ex.Message, True) + ClassLogger.Add("Unexpected Error in LoadControlValue: " & ex.Message, True) MsgBox("Error in LoadControlValue:" & vbNewLine & ex.Message) End Try @@ -458,7 +454,7 @@ Public Class ClassControlValues Case GetType(CustomComboBox) Dim combo As CustomComboBox = DirectCast(control, CustomComboBox) combo.SelectedIndex = -1 - ' combo.Text = String.Empty + combo.Text = String.Empty Case GetType(CheckBox) DirectCast(control, CheckBox).Checked = False diff --git a/app/DD-Record-Organiser/frmConstructor_Main.Designer.vb b/app/DD-Record-Organiser/frmConstructor_Main.Designer.vb index f643c7e..a76de23 100644 --- a/app/DD-Record-Organiser/frmConstructor_Main.Designer.vb +++ b/app/DD-Record-Organiser/frmConstructor_Main.Designer.vb @@ -22,7 +22,6 @@ Partial Class frmConstructor_Main 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. _ Private Sub InitializeComponent() - Me.components = New System.ComponentModel.Container() Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmConstructor_Main)) Dim GridLevelNode1 As DevExpress.XtraGrid.GridLevelNode = New DevExpress.XtraGrid.GridLevelNode() Dim GridLevelNode2 As DevExpress.XtraGrid.GridLevelNode = New DevExpress.XtraGrid.GridLevelNode() @@ -30,12 +29,12 @@ Partial Class frmConstructor_Main Me.SplitContainerMain = New DevExpress.XtraEditors.SplitContainerControl() Me.SplitContainerTop = New DevExpress.XtraEditors.SplitContainerControl() Me.TreeViewMain = New System.Windows.Forms.TreeView() - Me.CMSEntity = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.CMSEntity = New System.Windows.Forms.ContextMenuStrip() Me.ResetEbenenAuswahlToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.DateiimportEntitätToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.FormDesignerToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.GridControlMain = New DevExpress.XtraGrid.GridControl() - Me.ContextMenuGrid = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.ContextMenuGrid = New System.Windows.Forms.ContextMenuStrip() Me.FunktionenDataGridToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator1 = New System.Windows.Forms.ToolStripSeparator() Me.AnsichtUmschaltenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() @@ -82,7 +81,7 @@ Partial Class frmConstructor_Main Me.Panel1 = New System.Windows.Forms.Panel() Me.GridControlPos = New DevExpress.XtraGrid.GridControl() Me.grvwGridPos = New DevExpress.XtraGrid.Views.Grid.GridView() - Me.BindingNavigatorPOS = New System.Windows.Forms.BindingNavigator(Me.components) + Me.BindingNavigatorPOS = New System.Windows.Forms.BindingNavigator() Me.BindingNavigatorAddNewItem = New System.Windows.Forms.ToolStripButton() Me.BindingNavigatorCountItem = New System.Windows.Forms.ToolStripLabel() Me.BindingNavigatorDeleteItem = New System.Windows.Forms.ToolStripButton() @@ -124,20 +123,20 @@ Partial Class frmConstructor_Main Me.tsslblStatus = New System.Windows.Forms.ToolStripStatusLabel() Me.tsslblRecord = New System.Windows.Forms.ToolStripStatusLabel() Me.tsslblWorkflowstate = New System.Windows.Forms.ToolStripStatusLabel() - Me.BindingSource_Entity = New System.Windows.Forms.BindingSource(Me.components) + Me.BindingSource_Entity = New System.Windows.Forms.BindingSource() Me.DD_ECMAdmin = New DD_Record_Organiser.DD_ECMAdmin() - Me.ImageCollection1 = New DevExpress.Utils.ImageCollection(Me.components) - Me.ttToolTip = New System.Windows.Forms.ToolTip(Me.components) - Me.ContextMenuDetails = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.ImageCollection1 = New DevExpress.Utils.ImageCollection() + Me.ttToolTip = New System.Windows.Forms.ToolTip() + Me.ContextMenuDetails = New System.Windows.Forms.ContextMenuStrip() Me.DD_DMSDataSet = New DD_Record_Organiser.DD_DMSDataSet() - Me.VWPMO_WF_USER_ACTIVEBindingSource = New System.Windows.Forms.BindingSource(Me.components) + Me.VWPMO_WF_USER_ACTIVEBindingSource = New System.Windows.Forms.BindingSource() Me.VWPMO_WF_USER_ACTIVETableAdapter = New DD_Record_Organiser.DD_DMSDataSetTableAdapters.VWPMO_WF_ACTIVETableAdapter() Me.TableAdapterManager = New DD_Record_Organiser.DD_DMSDataSetTableAdapters.TableAdapterManager() Me.TBPMO_FILES_USERTableAdapter = New DD_Record_Organiser.DD_DMSDataSetTableAdapters.TBPMO_FILES_USERTableAdapter() - Me.VWPMO_WF_ACTIVEBindingSource = New System.Windows.Forms.BindingSource(Me.components) + Me.VWPMO_WF_ACTIVEBindingSource = New System.Windows.Forms.BindingSource() 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.TBPMO_FILES_USERBindingSource = New System.Windows.Forms.BindingSource() + Me.ToolTipController = New DevExpress.Utils.ToolTipController() CType(Me.SplitContainerMain, System.ComponentModel.ISupportInitialize).BeginInit() Me.SplitContainerMain.SuspendLayout() CType(Me.SplitContainerTop, System.ComponentModel.ISupportInitialize).BeginInit() diff --git a/app/DD-Record-Organiser/frmConstructor_Main.vb b/app/DD-Record-Organiser/frmConstructor_Main.vb index c517fcd..8fa6778 100644 --- a/app/DD-Record-Organiser/frmConstructor_Main.vb +++ b/app/DD-Record-Organiser/frmConstructor_Main.vb @@ -621,8 +621,6 @@ Public Class frmConstructor_Main Me.Cursor = Cursors.WaitCursor Column_Row_Handler() Me.Cursor = Cursors.Default - Me.Refresh() - ' pnlDetails.Invoke(sender, e) 'If dataloaded = True Then ' If LogErrorsOnly = False Then ClassLogger.Add(" >> grvwSelection_FocusedRowChanged - EditState: " & EDIT_STATE, False) ' Dim selRecID = GetSelected_RecordID() @@ -738,9 +736,6 @@ Public Class frmConstructor_Main End Try End If - If TCDetails.SelectedTabPage Is Nothing Then - Exit Sub - End If If TabPos.PageVisible = True And TCDetails.SelectedTabPage.Text.StartsWith("Posi") Then Clear_GridPos_View() Dim POS_GRID_RECORD = Get_Focused_Row_Cell_Value_pos("Record-ID") @@ -1992,14 +1987,6 @@ Public Class frmConstructor_Main Case GetType(Windows.Forms.TextBox) Dim txt As TextBox = CType(Control, TextBox) txt.ReadOnly = state - Case GetType(DevExpress.XtraEditors.CheckedListBoxControl) - Dim chlb As DevExpress.XtraEditors.CheckedListBoxControl = CType(Control, DevExpress.XtraEditors.CheckedListBoxControl) - If state = True Then - chlb.Enabled = False - Else - chlb.Enabled = True - End If - Case Else Control.Enabled = Not state @@ -3196,27 +3183,15 @@ Public Class frmConstructor_Main elapsed = sw.Elapsed.TotalSeconds If LogErrorsOnly = False Then ClassLogger.Add(" >> GetSearchDocuments took " & Format(elapsed, "0.000000000") & " seconds", False) If windreamSucheErgebnisse.Count > 0 Then - Dim files_deleted As Integer = 0 + For Each dok As WMObject In windreamSucheErgebnisse Dim filename = "W:" & dok.aPath Try File.Delete(filename) - files_deleted = +1 Catch ex As Exception ClassLogger.Add("Unexpected Error in Delete windream-file '" & filename & "- Error: " & ex.Message) End Try - Dim msg = "Es wurden (" & files_deleted.ToString & ") Dateien gelöscht!" - If USER_LANGUAGE <> "de-DE" Then - msg = "(" & files_deleted.ToString & ") files were deleted!" - End If - MsgBox(msg, MsgBoxStyle.Information) Next - Else - Dim msg = "Es wurden keine Dateien für diesen Datensatz gefunden!" - If USER_LANGUAGE <> "de-DE" Then - msg = "No files found for record!" - End If - MsgBox(msg, MsgBoxStyle.Information) End If diff --git a/app/DD-Record-Organiser/frmForm_Input.vb b/app/DD-Record-Organiser/frmForm_Input.vb index 13d7152..9727d9d 100644 --- a/app/DD-Record-Organiser/frmForm_Input.vb +++ b/app/DD-Record-Organiser/frmForm_Input.vb @@ -440,6 +440,23 @@ Public Class frmFormInput System.Windows.Forms.MessageBox.Show(ex.Message) End Try End Sub + + Private Sub BindingNavigatorDeleteItem_Click(sender As Object, e As EventArgs) + Dim result As MsgBoxResult + result = MessageBox.Show("Möchten Sie den Datensatz wirklich löschen?", "Bestätigung erforderlich:", MessageBoxButtons.YesNo, MessageBoxIcon.Question) + If result = MsgBoxResult.Yes Then + Dim sql As String = "DELETE FROM TBPMO_CONTROL_VALUE WHERE RECORD_ID = " & SelectedRecordID + If ClassDatabase.Execute_non_Query(sql) = True Then ' Delete der Controls erfolgreich ausgeführt, jetzt der Record + sql = "DELETE FROM TBPMO_RECORD WHERE GUID = " & SelectedRecordID + If ClassDatabase.Execute_non_Query(sql) = True Then + LoadOverview_Grid() + ToolStrip_Notice("Der Datensatz wurde erfolgreich gelöscht - " & Now) + End If + End If + + End If + End Sub + Private Sub tsbtnrefresh_Click(sender As Object, e As EventArgs) Handles tsbtnrefresh.Click LoadOverview_Grid() End Sub From b13468f42c2e61ac4a618b3b874524d20d3150cb Mon Sep 17 00:00:00 2001 From: JenneJ Date: Wed, 20 Apr 2016 17:14:49 +0200 Subject: [PATCH 2/3] JJ 20.04.2016 --- .../ClassControlBuilder.vb | 10 +++--- .../ClassControlCommandsUI.vb | 2 +- .../ClassCustomComboBox.vb | 31 +++++++++++++------ .../frmConstructor_Main.Designer.vb | 23 +++++++------- .../frmConstructor_Main.vb | 18 ++++++++++- .../frmTool_ControlProperties.vb | 6 ++-- 6 files changed, 60 insertions(+), 30 deletions(-) diff --git a/app/DD-Record-Organiser/ClassControlBuilder.vb b/app/DD-Record-Organiser/ClassControlBuilder.vb index e41d314..665d542 100644 --- a/app/DD-Record-Organiser/ClassControlBuilder.vb +++ b/app/DD-Record-Organiser/ClassControlBuilder.vb @@ -195,7 +195,7 @@ Public Class ClassControlBuilder obj = dependingControl.GetType.ToString Select Case dependingControl.GetType().Name - Case "ComboBox" + Case "CustomComboBox" ControlLoader.Combobox.SetDataSource(DirectCast(dependingControl, CustomComboBox), dt) Case "Label" If dt.Rows.Count = 1 Then @@ -313,7 +313,7 @@ Public Class ClassControlBuilder AddHandler textbox.TextChanged, AddressOf OnTextBoxTextChanged AddHandler textbox.ReadOnlyChanged, AddressOf OnReadOnlyChanged - Case "ComboBox" + Case "CustomComboBox" Dim combo As CustomComboBox = CType(control, CustomComboBox) AddHandler combo.SelectedValueChanged, AddressOf RecordChanged AddHandler combo.SelectedValueChanged, AddressOf OnComboBoxValueChanged @@ -604,7 +604,7 @@ Public Class ClassControlBuilder Select Case CurrentType Case "TextBox" ActiveControl.BackColor = ActiveColor - Case "ComboBox" + Case "CustomComboBox" 'Case "System.Windows.Forms.ComboBox" ActiveControl.BackColor = ActiveColor Case "Label" @@ -636,7 +636,7 @@ Public Class ClassControlBuilder Select Case Type Case "TextBox" inctrl.BackColor = Color.White - Case "ComboBox" + Case "CustomComboBox" 'Case "System.Windows.Forms.ComboBox" inctrl.BackColor = Color.White Case "Label" @@ -665,7 +665,7 @@ Public Class ClassControlBuilder Select Case gbType Case "TextBox" gbctrl.BackColor = Color.White - Case "ComboBox" + Case "CustomComboBox" 'Case "System.Windows.Forms.ComboBox" gbctrl.BackColor = Color.White Case "Label" diff --git a/app/DD-Record-Organiser/ClassControlCommandsUI.vb b/app/DD-Record-Organiser/ClassControlCommandsUI.vb index 1109b7d..6333e84 100644 --- a/app/DD-Record-Organiser/ClassControlCommandsUI.vb +++ b/app/DD-Record-Organiser/ClassControlCommandsUI.vb @@ -571,7 +571,7 @@ Public Class ClassControlCommandsUI Select Case type Case "TextBox" Return DirectCast(ctrl, TextBox).Text - Case "ComboBox" + Case "CustomComboBox" If LogErrorsOnly = False Then ClassLogger.Add(" >> Return Value: " & DirectCast(ctrl, CustomComboBox).Text, False) Return DirectCast(ctrl, CustomComboBox).Text Case "CheckBox" diff --git a/app/DD-Record-Organiser/ClassCustomComboBox.vb b/app/DD-Record-Organiser/ClassCustomComboBox.vb index db30333..38711e3 100644 --- a/app/DD-Record-Organiser/ClassCustomComboBox.vb +++ b/app/DD-Record-Organiser/ClassCustomComboBox.vb @@ -7,23 +7,36 @@ DrawMode = Windows.Forms.DrawMode.OwnerDrawFixed End Sub - Protected Overrides Sub OnEnabledChanged(e As EventArgs) - 'MyBase.OnEnabledChanged(e) + 'Protected Overrides Sub OnEnabledChanged(e As EventArgs) + ' 'MyBase.OnEnabledChanged(e) - If Me.Enabled Then - Me.DropDownStyle = ComboBoxStyle.DropDown - Else - Me.DropDownStyle = ComboBoxStyle.DropDownList - End If - End Sub + ' If Me.Enabled Then + ' Me.DropDownStyle = ComboBoxStyle.DropDown + ' Else + ' Me.DropDownStyle = ComboBoxStyle.DropDownList + ' End If + 'End Sub Protected Overrides Sub OnDrawItem(e As DrawItemEventArgs) Dim g As System.Drawing.Graphics = e.Graphics Dim rect As Rectangle = e.Bounds If e.Index >= 0 Then - Dim label As String = Me.Items(e.Index).ToString() + Dim label As String + + If (Me.Items(e.Index).GetType() = GetType(String)) Then + label = Me.Items(e.Index).ToString() + Else + Dim rowView As DataRowView = Me.Items(e.Index) + Dim rowCount As Integer = rowView.Row.ItemArray.Count + + If rowCount = 1 Then + label = rowView.Item(0) + ElseIf rowCount = 2 Then + label = rowView.Item(1) + End If + End If If e.State = (DrawItemState.Disabled Or DrawItemState.NoAccelerator Or DrawItemState.NoFocusRect Or DrawItemState.ComboBoxEdit) Then ' DISABLED STATE diff --git a/app/DD-Record-Organiser/frmConstructor_Main.Designer.vb b/app/DD-Record-Organiser/frmConstructor_Main.Designer.vb index a76de23..f643c7e 100644 --- a/app/DD-Record-Organiser/frmConstructor_Main.Designer.vb +++ b/app/DD-Record-Organiser/frmConstructor_Main.Designer.vb @@ -22,6 +22,7 @@ Partial Class frmConstructor_Main 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. _ Private Sub InitializeComponent() + Me.components = New System.ComponentModel.Container() Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmConstructor_Main)) Dim GridLevelNode1 As DevExpress.XtraGrid.GridLevelNode = New DevExpress.XtraGrid.GridLevelNode() Dim GridLevelNode2 As DevExpress.XtraGrid.GridLevelNode = New DevExpress.XtraGrid.GridLevelNode() @@ -29,12 +30,12 @@ Partial Class frmConstructor_Main Me.SplitContainerMain = New DevExpress.XtraEditors.SplitContainerControl() Me.SplitContainerTop = New DevExpress.XtraEditors.SplitContainerControl() Me.TreeViewMain = New System.Windows.Forms.TreeView() - Me.CMSEntity = New System.Windows.Forms.ContextMenuStrip() + Me.CMSEntity = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.ResetEbenenAuswahlToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.DateiimportEntitätToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.FormDesignerToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.GridControlMain = New DevExpress.XtraGrid.GridControl() - Me.ContextMenuGrid = New System.Windows.Forms.ContextMenuStrip() + Me.ContextMenuGrid = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.FunktionenDataGridToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator1 = New System.Windows.Forms.ToolStripSeparator() Me.AnsichtUmschaltenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() @@ -81,7 +82,7 @@ Partial Class frmConstructor_Main Me.Panel1 = New System.Windows.Forms.Panel() Me.GridControlPos = New DevExpress.XtraGrid.GridControl() Me.grvwGridPos = New DevExpress.XtraGrid.Views.Grid.GridView() - Me.BindingNavigatorPOS = New System.Windows.Forms.BindingNavigator() + Me.BindingNavigatorPOS = New System.Windows.Forms.BindingNavigator(Me.components) Me.BindingNavigatorAddNewItem = New System.Windows.Forms.ToolStripButton() Me.BindingNavigatorCountItem = New System.Windows.Forms.ToolStripLabel() Me.BindingNavigatorDeleteItem = New System.Windows.Forms.ToolStripButton() @@ -123,20 +124,20 @@ Partial Class frmConstructor_Main Me.tsslblStatus = New System.Windows.Forms.ToolStripStatusLabel() Me.tsslblRecord = New System.Windows.Forms.ToolStripStatusLabel() Me.tsslblWorkflowstate = New System.Windows.Forms.ToolStripStatusLabel() - Me.BindingSource_Entity = New System.Windows.Forms.BindingSource() + Me.BindingSource_Entity = New System.Windows.Forms.BindingSource(Me.components) Me.DD_ECMAdmin = New DD_Record_Organiser.DD_ECMAdmin() - Me.ImageCollection1 = New DevExpress.Utils.ImageCollection() - Me.ttToolTip = New System.Windows.Forms.ToolTip() - Me.ContextMenuDetails = New System.Windows.Forms.ContextMenuStrip() + Me.ImageCollection1 = New DevExpress.Utils.ImageCollection(Me.components) + Me.ttToolTip = New System.Windows.Forms.ToolTip(Me.components) + Me.ContextMenuDetails = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.DD_DMSDataSet = New DD_Record_Organiser.DD_DMSDataSet() - Me.VWPMO_WF_USER_ACTIVEBindingSource = New System.Windows.Forms.BindingSource() + Me.VWPMO_WF_USER_ACTIVEBindingSource = New System.Windows.Forms.BindingSource(Me.components) Me.VWPMO_WF_USER_ACTIVETableAdapter = New DD_Record_Organiser.DD_DMSDataSetTableAdapters.VWPMO_WF_ACTIVETableAdapter() Me.TableAdapterManager = New DD_Record_Organiser.DD_DMSDataSetTableAdapters.TableAdapterManager() Me.TBPMO_FILES_USERTableAdapter = New DD_Record_Organiser.DD_DMSDataSetTableAdapters.TBPMO_FILES_USERTableAdapter() - Me.VWPMO_WF_ACTIVEBindingSource = New System.Windows.Forms.BindingSource() + Me.VWPMO_WF_ACTIVEBindingSource = New System.Windows.Forms.BindingSource(Me.components) Me.VWPMO_WF_ACTIVETableAdapter = New DD_Record_Organiser.DD_DMSDataSetTableAdapters.VWPMO_WF_ACTIVETableAdapter() - Me.TBPMO_FILES_USERBindingSource = New System.Windows.Forms.BindingSource() - Me.ToolTipController = New DevExpress.Utils.ToolTipController() + Me.TBPMO_FILES_USERBindingSource = New System.Windows.Forms.BindingSource(Me.components) + Me.ToolTipController = New DevExpress.Utils.ToolTipController(Me.components) CType(Me.SplitContainerMain, System.ComponentModel.ISupportInitialize).BeginInit() Me.SplitContainerMain.SuspendLayout() CType(Me.SplitContainerTop, System.ComponentModel.ISupportInitialize).BeginInit() diff --git a/app/DD-Record-Organiser/frmConstructor_Main.vb b/app/DD-Record-Organiser/frmConstructor_Main.vb index 8fa6778..d3f5829 100644 --- a/app/DD-Record-Organiser/frmConstructor_Main.vb +++ b/app/DD-Record-Organiser/frmConstructor_Main.vb @@ -736,6 +736,9 @@ Public Class frmConstructor_Main End Try End If + If TCDetails.SelectedTabPage Is Nothing Then + Exit Sub + End If If TabPos.PageVisible = True And TCDetails.SelectedTabPage.Text.StartsWith("Posi") Then Clear_GridPos_View() Dim POS_GRID_RECORD = Get_Focused_Row_Cell_Value_pos("Record-ID") @@ -758,7 +761,7 @@ Public Class frmConstructor_Main End If Get_RecordCounts_Nodes() End If - End If + End If End If @@ -3183,15 +3186,28 @@ Public Class frmConstructor_Main elapsed = sw.Elapsed.TotalSeconds If LogErrorsOnly = False Then ClassLogger.Add(" >> GetSearchDocuments took " & Format(elapsed, "0.000000000") & " seconds", False) If windreamSucheErgebnisse.Count > 0 Then + Dim files_deleted As Integer = 0 For Each dok As WMObject In windreamSucheErgebnisse Dim filename = "W:" & dok.aPath Try File.Delete(filename) + files_deleted = +1 Catch ex As Exception ClassLogger.Add("Unexpected Error in Delete windream-file '" & filename & "- Error: " & ex.Message) End Try + Dim msg = "Es wurden (" & files_deleted.ToString & ") Dateien gelöscht!" + If USER_LANGUAGE <> "de-DE" Then + msg = "(" & files_deleted.ToString & ") files were deleted!" + End If + MsgBox(msg, MsgBoxStyle.Information) Next + Else + Dim msg = "Es wurden keine Dateien für diesen Datensatz gefunden!" + If USER_LANGUAGE <> "de-DE" Then + msg = "No files found for record!" + End If + MsgBox(msg, MsgBoxStyle.Information) End If diff --git a/app/DD-Record-Organiser/frmTool_ControlProperties.vb b/app/DD-Record-Organiser/frmTool_ControlProperties.vb index e52d9a5..e90389a 100644 --- a/app/DD-Record-Organiser/frmTool_ControlProperties.vb +++ b/app/DD-Record-Organiser/frmTool_ControlProperties.vb @@ -50,7 +50,7 @@ Select Case type Case "Label" : props = New LabelProperties() Case "Textbox" : props = New TextBoxProperties() - Case "Combobox" : props = New ComboBoxProperties() + Case "CustomComboBox" : props = New ComboBoxProperties() Case "Checkbox" : props = New CheckBoxProperties() Case "RadioButton" : props = New RadioButtonProperties() Case "Datepicker" : props = New DateTimePickerProperties() @@ -97,7 +97,7 @@ props.Multiline = r.Item("CONTROL_MULTILINE") props.SQLCommand = New SQLValue(NotNull(r.Item("CONTROL_SQLCOMMAND_1"), "")) - Case "Combobox" + Case "CustomComboBox" props.FontColor = IntToColor(r.Item("CTRLSCR_FONT_COLOR")) props.Font = New Font(r.Item("CTRLSCR_FONT_FAMILY").ToString(), CType(r.Item("CTRLSCR_FONT_SIZE"), Single), @@ -303,7 +303,7 @@ ' Else ' props.Format = "String" ' End If - ' Case "Combobox" + ' Case "CustomComboBox" ' props = New ComboBoxProperties() ' props.MasterDataId = row.Item("CTRLSCR_MASTER_DATA_ID") ' props.DefaultValue = ClassConverter.ToStringOrDefault(row.Item("CONTROL_DEF_VALUE")) From 012b5d20db5a7e9bb7eeaaa21e285a22ecd7b84c Mon Sep 17 00:00:00 2001 From: JenneJ Date: Thu, 21 Apr 2016 17:37:34 +0200 Subject: [PATCH 3/3] JJ 21.04.16 --- .../ClassControlBuilder.vb | 31 +++++++++++-------- app/DD-Record-Organiser/ClassControlValues.vb | 13 ++++++-- .../ClassCustomComboBox.vb | 3 +- .../frmConstructor_Main.vb | 5 ++- 4 files changed, 35 insertions(+), 17 deletions(-) diff --git a/app/DD-Record-Organiser/ClassControlBuilder.vb b/app/DD-Record-Organiser/ClassControlBuilder.vb index 665d542..88e7b72 100644 --- a/app/DD-Record-Organiser/ClassControlBuilder.vb +++ b/app/DD-Record-Organiser/ClassControlBuilder.vb @@ -148,16 +148,22 @@ Public Class ClassControlBuilder Dim SQL As String = String.Format("SELECT GUID, SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE SQL_COMMAND_1 LIKE '%@{0}@%'", controlId) Dim value - Select Case control.GetType() - Case GetType(CustomComboBox) - If IsNothing(DirectCast(control, CustomComboBox).ValueMember) Then - value = DirectCast(control, CustomComboBox).Text - Else - value = DirectCast(control, CustomComboBox).SelectedValue - End If - Case Else - Exit Sub - End Select + ' Diese Befehle führen dazu, dass auch der ValueMember als Wert ausgelesen wird + ' Das kann zu unerwarteten Ergebnissen führen, da der Benutzer nur den DisplayMember sieht. + 'Select Case control.GetType() + ' Case GetType(CustomComboBox) + ' If IsNothing(DirectCast(control, CustomComboBox).ValueMember) Then + ' value = DirectCast(control, CustomComboBox).Text + ' Else + ' value = DirectCast(control, CustomComboBox).SelectedValue + ' End If + ' Case Else + ' Exit Sub + 'End Select + ' Die bessere Lösung ist für jetzt, einfach den angezeigten Wert auszulesen: + value = DirectCast(control, CustomComboBox).Text + + If String.IsNullOrEmpty(value) Then Exit Sub @@ -191,9 +197,8 @@ Public Class ClassControlBuilder sqlcommand = sqlcommand.Replace(match.Groups(1).Value, value) If LogErrorsOnly = False Then ClassLogger.Add(" >> " & String.Format("Executing SQL_COMMAND: '{0}' for controlID '{1}'", sqlcommand, dependingControlId)) Dim dt As DataTable = ClassDatabase.Return_Datatable(sqlcommand) - Dim obj - obj = dependingControl.GetType.ToString - Select Case dependingControl.GetType().Name + Dim type = dependingControl.GetType().Name + Select Case type Case "CustomComboBox" ControlLoader.Combobox.SetDataSource(DirectCast(dependingControl, CustomComboBox), dt) diff --git a/app/DD-Record-Organiser/ClassControlValues.vb b/app/DD-Record-Organiser/ClassControlValues.vb index a86a595..63044d8 100644 --- a/app/DD-Record-Organiser/ClassControlValues.vb +++ b/app/DD-Record-Organiser/ClassControlValues.vb @@ -479,7 +479,16 @@ Public Class ClassControlValues Case GetType(DataGridView) Dim dgv As DataGridView = DirectCast(control, DataGridView) - dgv.Rows.Clear() + Dim ds = dgv.DataSource + + If (IsNothing(ds)) Then + dgv.Rows.Clear() + dgv.Refresh() + Else + dgv.DataSource = Nothing + dgv.Refresh() + End If + Console.WriteLine("Clearing DataGridView") End Select End Sub @@ -488,7 +497,7 @@ Public Class ClassControlValues #Region "LoadDefaultValue" Public Shared Sub LoadDefaultValues(FormID As Integer, RecordID As Integer, controls As Control.ControlCollection) '' Zuerst alle Controls leeren - 'ClearControlValues(controls) + ClearControlValues(controls) Dim i = 0 For Each control As Control In controls diff --git a/app/DD-Record-Organiser/ClassCustomComboBox.vb b/app/DD-Record-Organiser/ClassCustomComboBox.vb index 38711e3..54037e0 100644 --- a/app/DD-Record-Organiser/ClassCustomComboBox.vb +++ b/app/DD-Record-Organiser/ClassCustomComboBox.vb @@ -24,13 +24,14 @@ If e.Index >= 0 Then Dim label As String + ' Wenn die Items eine Static List ist, wird der String ausgelesen If (Me.Items(e.Index).GetType() = GetType(String)) Then label = Me.Items(e.Index).ToString() Else + 'Wenn die Items aus einer Datatable kommen, wird der DisplayMember ausgelesen Dim rowView As DataRowView = Me.Items(e.Index) Dim rowCount As Integer = rowView.Row.ItemArray.Count - If rowCount = 1 Then label = rowView.Item(0) ElseIf rowCount = 2 Then diff --git a/app/DD-Record-Organiser/frmConstructor_Main.vb b/app/DD-Record-Organiser/frmConstructor_Main.vb index d3f5829..736898f 100644 --- a/app/DD-Record-Organiser/frmConstructor_Main.vb +++ b/app/DD-Record-Organiser/frmConstructor_Main.vb @@ -720,7 +720,8 @@ Public Class frmConstructor_Main RIGHT_ONLY_READ = False End Try If RIGHT_ONLY_READ = True Then - tsButtonAdd.Enabled = False + ' Hinzufügen sollte auch bei RIGHT_ONLY_READ verfügbar sein + tsButtonAdd.Enabled = True tsButtonEdit.Enabled = False tsButtonSave.Enabled = False tsButtonDelete.Enabled = False @@ -1155,6 +1156,8 @@ Public Class frmConstructor_Main ClassControlValues.LoadDefaultValues(ENTITY_ID, SELECTED_RECORD_ID, pnlDetails.Controls) ' Im gegensatz zu EnableEditMode muss hier nur der save button enabled werden tsButtonSave.Enabled = True + ' Muss aktiviert werden, sonst funktionieren die Combobox Abhängigkeits Events nicht + CURRENT_RECORD_ENABLED = True EDIT_STATE = EditState.Insert RECORD_CHANGED = True tsslblRecord.Text = "Adding record ......"