From b5e082cd843cfc1eaa386c3486aae6067638cd58 Mon Sep 17 00:00:00 2001 From: JenneJ Date: Mon, 4 Jan 2016 13:39:10 +0100 Subject: [PATCH 1/4] kein_quick_access_duplikate_jj_04_01_16 --- app/DD-Record-Organiser/frmMain.vb | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/DD-Record-Organiser/frmMain.vb b/app/DD-Record-Organiser/frmMain.vb index acde2a7..3c5b82e 100644 --- a/app/DD-Record-Organiser/frmMain.vb +++ b/app/DD-Record-Organiser/frmMain.vb @@ -95,6 +95,8 @@ Public Class frmMain Dim SQL As String = "SELECT * FROM TBPMO_MENU_FORM" Dim dtRootMenu As DataTable = ClassDatabase.Return_Datatable(SQL) + pageForms.Groups.Clear() + If dtRootMenu.Rows.Count <> 0 Then For Each row As DataRow In dtRootMenu.Rows @@ -144,6 +146,10 @@ Public Class frmMain Dim dt As DataTable = ClassDatabase.Return_Datatable(SQL2) Dim image2 As Bitmap = LoadNoImage() + Do While 0 < groupQuickAccess.ItemLinks.Count + groupQuickAccess.ItemLinks.Remove(groupQuickAccess.ItemLinks(0)) + Loop + If dt.Rows.Count <> 0 Then For Each row As DataRow In dt.Rows @@ -171,6 +177,11 @@ Public Class frmMain End If ' TODO: NUR FÜR WINDREAM CON!!! + + Do While 0 < groupQuickAccessDemo.ItemLinks.Count + groupQuickAccessDemo.ItemLinks.Remove(groupQuickAccessDemo.ItemLinks(0)) + Loop + If dt.Rows.Count <> 0 Then For Each row As DataRow In dt.Rows From 245a276082c6d8c01e16a4a77b42e0967283279d Mon Sep 17 00:00:00 2001 From: JenneJ Date: Mon, 4 Jan 2016 14:48:36 +0100 Subject: [PATCH 2/4] jj_04_01_16 --- app/DD-Record-Organiser/ClassControlLoader.vb | 254 ++++++++++++++++ app/DD-Record-Organiser/ClassControlValues.vb | 280 ++++++++++-------- .../DD-Record-Organiser.vbproj | 1 + .../frmForm_Constructor_Main_2.Designer.vb | 28 +- 4 files changed, 430 insertions(+), 133 deletions(-) create mode 100644 app/DD-Record-Organiser/ClassControlLoader.vb diff --git a/app/DD-Record-Organiser/ClassControlLoader.vb b/app/DD-Record-Organiser/ClassControlLoader.vb new file mode 100644 index 0000000..97c1515 --- /dev/null +++ b/app/DD-Record-Organiser/ClassControlLoader.vb @@ -0,0 +1,254 @@ +Namespace ControlLoader + + Public Class _BaseControl + End Class + + Public Class _ListControl : Inherits _BaseControl + Public Shared Function _GetDynamicValue(controlId As Integer, formId As Integer, recordId As Integer, parentRecordId As Integer) As DynamicValue + Dim returnValue As DynamicValue + + returnValue.StaticList = CheckForStaticList(controlId, recordId) + returnValue.DataTable = CheckForSqlCommand(controlId, formId, recordId, parentRecordId) + + Return returnValue + End Function + + Private Shared Function CheckForStaticList(controlId As Integer, recordId As Integer) As List(Of String) + Try + Dim SQL As String = String.Format("SELECT VALUE FROM VWPMO_VALUES WHERE CONTROL_ID = {0} AND RECORD_ID = {1}", controlId, recordId) + Dim staticList As String = ClassDatabase.Execute_Scalar(SQL) + + If IsNothing(staticList) Then + Return Nothing + Else + Return New List(Of String)(staticList.Split(";")) + End If + Catch ex As Exception + MsgBox("Error in CheckForStaticList: " & vbNewLine & ex.Message) + Return Nothing + End Try + End Function + + Private Shared Function CheckForSqlCommand(controlId As Integer, formId As Integer, recordId As Integer, parentRecordId As Integer) As DataTable + Try + Dim SQL As String = String.Format("SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = {0}", controlId) + Dim SqlCommand As String = ClassDatabase.Execute_Scalar(SQL) + + If SqlCommand Is Nothing Or SqlCommand = String.Empty Then + Return Nothing + End If + + If SqlCommand.Contains("@") Then + SqlCommand = ReplaceSqlCommandPlaceholders(SqlCommand, recordId, parentRecordId) + End If + + Dim CachedDataTable As DataTable = ClassControlValueCache.LoadFromCache(formId, controlId) + Dim FinalDataTable As DataTable + If CachedDataTable Is Nothing Then + FinalDataTable = ClassDatabase.Return_Datatable(SqlCommand) + ClassControlValueCache.SaveToCache(formId, controlId, FinalDataTable) + Else + FinalDataTable = CachedDataTable + End If + + Return FinalDataTable + Catch ex As Exception + MsgBox("Error in CheckForSqlCommand: " & vbNewLine & ex.Message) + Return Nothing + End Try + End Function + + Private Shared Function ReplaceSqlCommandPlaceholders(sqlCommand As String, recordId As Integer, parentRecordId As Integer) + sqlCommand = sqlCommand.Replace("@RECORD_ID", recordId) + sqlCommand = sqlCommand.Replace("@RECORDID", recordId) + sqlCommand = sqlCommand.Replace("@PARENTRECORD_ID", parentRecordId) + sqlCommand = sqlCommand.Replace("@PARENTRECORDID", parentRecordId) + + Return sqlCommand + End Function + End Class + + Public Structure DynamicValue + Public StaticList As List(Of String) + Public DataTable As DataTable + End Structure + + Public Class Label : Inherits _BaseControl + + Public Shared Sub LoadValue(control As Windows.Forms.Label, value As String) + ' TODO: LoadControlAutoValue aufrufen + control.Text = value + End Sub + + End Class + + Public Class Checkbox : Inherits _BaseControl + + Public Shared Sub LoadValue(control As Windows.Forms.CheckBox, value As String) + Dim result As Boolean = False + Boolean.TryParse(value, result) + control.Checked = result + End Sub + + End Class + + Public Class RadioButton : Inherits _BaseControl + + Public Shared Sub LoadValue(control As Windows.Forms.RadioButton, value As String) + Dim result As Boolean = False + Boolean.TryParse(value, result) + control.Checked = result + End Sub + + End Class + + Public Class TextBox : Inherits _BaseControl + + Public Shared Sub LoadValue(control As Windows.Forms.TextBox, value As String) + control.Text = value + End Sub + + End Class + + Public Class DateTimePicker : Inherits _BaseControl + + Public Shared Sub LoadValue(control As DevExpress.XtraEditors.DateEdit, value As String) + If String.IsNullOrWhiteSpace(value) Or value = "00:00:00" Then + control.DateTime = DateTime.MinValue + Else + control.DateTime = DateTime.Parse(value) + End If + End Sub + + End Class + + Public Class Combobox : Inherits _ListControl + + Public Shared Sub LoadValue(control As Windows.Forms.ComboBox, value As String) + control.Text = value + End Sub + + Public Shared Sub LoadList(control As Windows.Forms.ComboBox, formId As Integer, recordId As Integer, parentRecordId As Integer) + Try + Dim dynamic As DynamicValue = _GetDynamicValue(control.Tag, formId, recordId, parentRecordId) + + If dynamic.StaticList IsNot Nothing Then + control.DataSource = dynamic.StaticList + End If + + If dynamic.DataTable IsNot Nothing AndAlso dynamic.DataTable.Rows.Count > 0 Then + Dim dt As DataTable = dynamic.DataTable + + control.DataSource = dt + If dt.Columns.Count = 1 Then + control.DisplayMember = dt.Columns(0).ColumnName + control.ValueMember = dt.Columns(0).ColumnName + ElseIf dt.Columns.Count = 2 Then + control.DisplayMember = dt.Columns(1).ColumnName + control.ValueMember = dt.Columns(0).ColumnName + End If + + CalculateDropdownWidth(control, dt) + End If + Catch ex As Exception + MsgBox("Error in Combobox.LoadList:" & vbNewLine & ex.Message) + End Try + End Sub + + Private Shared Sub CalculateDropdownWidth(control As Windows.Forms.ComboBox, dt As DataTable) + Const WIDEST_WIDTH As Integer = 300 + Dim FinalWidth As Integer = WIDEST_WIDTH + For Each row As DataRow In dt.Rows + 'Die Breite der Dropdown-List anpassen + Using g As Graphics = control.CreateGraphics() + Dim valueWidth As Integer = g.MeasureString(row.Item(1).ToString(), control.Font).Width + If valueWidth + 30 > FinalWidth Then + FinalWidth = valueWidth + 30 + End If + g.Dispose() + End Using + Next + + If FinalWidth > WIDEST_WIDTH Then + control.DropDownWidth = Math.Max(FinalWidth, control.Width) + End If + End Sub + + End Class + + Public Class CheckedListBox : Inherits _ListControl + + Public Shared Sub LoadValue(control As DevExpress.XtraEditors.CheckedListBoxControl, value As String) + + For Each item As String In control.Items + + Dim pos = control.FindStringExact(value) + control.SetItemCheckState(pos, CheckState.Checked) + + Next + + End Sub + + Public Shared Sub LoadList(control As DevExpress.XtraEditors.CheckedListBoxControl, formId As Integer, recordId As Integer, parentRecordId As Integer) + Try + Dim dynamic As DynamicValue = _GetDynamicValue(control.Tag, formId, recordId, parentRecordId) + + If dynamic.StaticList IsNot Nothing Then + control.DataSource = dynamic.StaticList + + 'For Each item As String In dynamic.StaticList + ' Dim pos = control.FindStringExact(item) + ' control.SetItemCheckState(pos, CheckState.Checked) + 'Next + End If + + If dynamic.DataTable IsNot Nothing AndAlso dynamic.DataTable.Rows.Count > 0 Then + Dim dt As DataTable = dynamic.DataTable + + control.DataSource = dt + If dt.Columns.Count = 1 Then + control.DisplayMember = dt.Columns(0).ColumnName + control.ValueMember = dt.Columns(0).ColumnName + ElseIf dt.Columns.Count = 2 Then + control.DisplayMember = dt.Columns(1).ColumnName + control.ValueMember = dt.Columns(0).ColumnName + End If + End If + + Catch ex As Exception + MsgBox("Error in CheckedListBox.LoadList:" & vbNewLine & ex.Message) + End Try + End Sub + + End Class + + Public Class ListBox : Inherits _ListControl + + Public Shared Sub LoadValue(control As DevExpress.XtraEditors.ListBoxControl, value As String) + control.SelectedIndex = control.FindStringExact(value) + End Sub + + Public Shared Sub LoadList(control As DevExpress.XtraEditors.ListBoxControl, formId As Integer, recordId As Integer, parentRecordId As Integer) + Dim dynamic As DynamicValue = _GetDynamicValue(control.Tag, formId, recordId, parentRecordId) + + If dynamic.StaticList IsNot Nothing Then + control.DataSource = dynamic.StaticList + End If + + If dynamic.DataTable IsNot Nothing AndAlso dynamic.DataTable.Rows.Count > 0 Then + Dim dt As DataTable = dynamic.DataTable + + control.DataSource = dt + If dt.Columns.Count = 1 Then + control.DisplayMember = dt.Columns(0).ColumnName + control.ValueMember = dt.Columns(0).ColumnName + ElseIf dt.Columns.Count = 2 Then + control.DisplayMember = dt.Columns(1).ColumnName + control.ValueMember = dt.Columns(0).ColumnName + End If + End If + End Sub + + End Class + +End Namespace diff --git a/app/DD-Record-Organiser/ClassControlValues.vb b/app/DD-Record-Organiser/ClassControlValues.vb index 92daf3f..15c5abc 100644 --- a/app/DD-Record-Organiser/ClassControlValues.vb +++ b/app/DD-Record-Organiser/ClassControlValues.vb @@ -142,103 +142,100 @@ Public Class ClassControlValues #Region "#### ClassControlValues REWRITE ####" Public Shared Sub LoadControlValuesNeu(RecordId As Integer, FormId As Integer, controls As Control.ControlCollection) - - ClearControlValues(controls) Try - ' Dim SQL As String = String.Format("SELECT * FROM VWPMO_VALUES WHERE VALUE <> '' AND RECORD_ID = {0}", RecordId) - ' Dim DT_ControlValues As DataTable = ClassDatabase.Return_Datatable(SQL, "LoadControlValues") + Dim SQL As String = String.Format("SELECT * FROM VWPMO_VALUES WHERE VALUE <> '' AND RECORD_ID = {0}", RecordId) + Dim DT_ControlValues As DataTable = ClassDatabase.Return_Datatable(SQL, "LoadControlValues") If controls.Count = 0 Then ClassLogger.Add("the control-Collection in LoadControlValuesNeu is empty!", True) End If For Each control As Control In controls Dim ControlId As Integer = CInt(control.Tag) - Dim SQL1 As String = String.Format("SELECT VALUE FROM VWPMO_VALUES WHERE CONTROL_ID = {0} AND VALUE <> '' AND RECORD_ID = {1}", ControlId, RecordId) - Dim value = ClassDatabase.Execute_Scalar(SQL1) - - '' Wert per LINQ aus DT_ControlValues suchen der zur aktuellen controlId passt - 'Dim value = (From row In DT_ControlValues.AsEnumerable() - ' Where row.Item("CONTROL_ID") = ControlId - ' Select row.Item("VALUE")).SingleOrDefault() - - If Not IsNothing(value) Then - ' Continue For - If TypeOf control Is GroupBox Then - Dim groupbox As GroupBox = DirectCast(control, GroupBox) - LoadControlValuesNeu(RecordId, FormId, groupbox.Controls) - Else - LoadControlValueNeu(RecordId, ControlId, control, value) - End If - Else - If TypeOf control Is DevExpress.XtraEditors.CheckedListBoxControl Then - If LogErrorsOnly = False Then ClassLogger.Add(">> control DevExpress.XtraEditors.CheckedListBoxControl", False) - Dim chklbx As DevExpress.XtraEditors.CheckedListBoxControl - chklbx = DirectCast(control, DevExpress.XtraEditors.CheckedListBoxControl) - - Dim chklbSql As String = "SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = " & ControlId - ' chklbSql = ClassDatabase.Execute_Scalar(chklbSql) - ' If Not (chklbSql Is Nothing Or chklbSql = String.Empty) Then - ' If chklbSql.ToString.Contains("@") Then - ' chklbSql = chklbSql.ToString.Replace("@RECORDID", CURRENT_RECORD_ID) - ' chklbSql = chklbSql.ToString.Replace("@RECORD_ID", CURRENT_RECORD_ID) - ' chklbSql = chklbSql.ToString.Replace("@PARENTRECORD_ID", CURRENT_PARENTID) - ' If LogErrorsOnly = False Then ClassLogger.Add(">> SQL CheckedListBox: " & chklbSql, False) - ' 'SQL-Command vorhanden also Ausführen des SQL - ' Dim DT_ListBox As DataTable = ClassDatabase.Return_Datatable(chklbSql, "LoadControlValues: CheckedListBox") - ' If DT_ListBox Is Nothing = False Then - ' chklbx.DataSource = DT_ListBox - ' Select Case DT_ListBox.Columns.Count - ' Case 2 - ' chklbx.DisplayMember = DT_ListBox.Columns(1).ColumnName - ' chklbx.ValueMember = DT_ListBox.Columns(0).ColumnName - ' Case 1 - ' chklbx.DisplayMember = DT_ListBox.Columns(0).ColumnName - ' chklbx.ValueMember = DT_ListBox.Columns(0).ColumnName - ' End Select - - ' End If - ' End If - - ' ElseIf (chklbSql = String.Empty) Then - ' ' Wenn keine SQL Command ein leerer String ist, - ' ' lade das Control ohne Datenbank, da es wahrscheinlich eine Static List ist - ' chklbSql = "SELECT VALUE FROM VWPMO_VALUES WHERE CONTROL_ID = " & CONTROL_ID & " AND RECORD_ID = " & RecordID - ' Dim result As String = ClassDatabase.Execute_Scalar(chklbSql) - - ' If Not IsNothing(result) Then - ' If result.ToString <> String.Empty Then - ' Dim entries() As String = result.Split(";") - ' For Each entry As String In entries - ' Dim position = chklbx.FindStringExact(entry) - ' chklbx.SetItemCheckState(position, CheckState.Checked) - ' Next - ' End If - ' End If - - ' Continue For - ' Else - ' If LogErrorsOnly = False Then ClassLogger.Add(">> chklbSql is nothing", False) - ' End If + 'Dim SQL1 As String = String.Format("SELECT VALUE FROM VWPMO_VALUES WHERE CONTROL_ID = {0} AND VALUE <> '' AND RECORD_ID = {1}", ControlId, RecordId) + 'Dim value = ClassDatabase.Execute_Scalar(SQL1) - ' chklbx.UnCheckAll() - ' 'Recorddatensätze durchlaufen und überprüfen ob angehakt?? - ' 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 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 - ' chklbx.SetItemChecked(i, True) - ' End If - ' End If - - ' Next - ElseIf TypeOf control Is Label Then - LoadControlValueNeu(RecordId, ControlId, control, value) - End If + ' Wert per LINQ aus DT_ControlValues suchen der zur aktuellen controlId passt + Dim value = (From row In DT_ControlValues.AsEnumerable() + Where row.Item("CONTROL_ID") = ControlId + Select row.Item("VALUE")).SingleOrDefault() + + If TypeOf control Is GroupBox Then + Dim groupbox As GroupBox = DirectCast(control, GroupBox) + LoadControlValuesNeu(RecordId, FormId, groupbox.Controls) + Else + LoadControlValueNeu(RecordId, ControlId, control, value) End If + 'If Not IsNothing(value) Then + ' ' Continue For + ' If TypeOf control Is GroupBox Then + ' Dim groupbox As GroupBox = DirectCast(control, GroupBox) + ' LoadControlValuesNeu(RecordId, FormId, groupbox.Controls) + ' Else + ' LoadControlValueNeu(RecordId, ControlId, control, value) + ' End If + 'Else + ' If TypeOf control Is DevExpress.XtraEditors.CheckedListBoxControl Then + ' If LogErrorsOnly = False Then ClassLogger.Add(">> control DevExpress.XtraEditors.CheckedListBoxControl", False) + ' Dim chklbx As DevExpress.XtraEditors.CheckedListBoxControl + ' chklbx = DirectCast(control, DevExpress.XtraEditors.CheckedListBoxControl) + ' Dim chklbSql As String = "SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = " & ControlId + ' ' chklbSql = ClassDatabase.Execute_Scalar(chklbSql) + ' ' If Not (chklbSql Is Nothing Or chklbSql = String.Empty) Then + ' ' If chklbSql.ToString.Contains("@") Then + ' ' chklbSql = chklbSql.ToString.Replace("@RECORDID", CURRENT_RECORD_ID) + ' ' chklbSql = chklbSql.ToString.Replace("@RECORD_ID", CURRENT_RECORD_ID) + ' ' chklbSql = chklbSql.ToString.Replace("@PARENTRECORD_ID", CURRENT_PARENTID) + ' ' If LogErrorsOnly = False Then ClassLogger.Add(">> SQL CheckedListBox: " & chklbSql, False) + ' ' 'SQL-Command vorhanden also Ausführen des SQL + ' ' Dim DT_ListBox As DataTable = ClassDatabase.Return_Datatable(chklbSql, "LoadControlValues: CheckedListBox") + ' ' If DT_ListBox Is Nothing = False Then + ' ' chklbx.DataSource = DT_ListBox + ' ' Select Case DT_ListBox.Columns.Count + ' ' Case 2 + ' ' chklbx.DisplayMember = DT_ListBox.Columns(1).ColumnName + ' ' chklbx.ValueMember = DT_ListBox.Columns(0).ColumnName + ' ' Case 1 + ' ' chklbx.DisplayMember = DT_ListBox.Columns(0).ColumnName + ' ' chklbx.ValueMember = DT_ListBox.Columns(0).ColumnName + ' ' End Select + ' ' End If + ' ' End If + ' ' ElseIf (chklbSql = String.Empty) Then + ' ' ' Wenn keine SQL Command ein leerer String ist, + ' ' ' lade das Control ohne Datenbank, da es wahrscheinlich eine Static List ist + ' ' chklbSql = "SELECT VALUE FROM VWPMO_VALUES WHERE CONTROL_ID = " & CONTROL_ID & " AND RECORD_ID = " & RecordID + ' ' Dim result As String = ClassDatabase.Execute_Scalar(chklbSql) + ' ' If Not IsNothing(result) Then + ' ' If result.ToString <> String.Empty Then + ' ' Dim entries() As String = result.Split(";") + ' ' For Each entry As String In entries + ' ' Dim position = chklbx.FindStringExact(entry) + ' ' chklbx.SetItemCheckState(position, CheckState.Checked) + ' ' Next + ' ' End If + ' ' End If + ' ' Continue For + ' ' Else + ' ' If LogErrorsOnly = False Then ClassLogger.Add(">> chklbSql is nothing", False) + ' ' End If + ' ' chklbx.UnCheckAll() + ' ' 'Recorddatensätze durchlaufen und überprüfen ob angehakt?? + ' ' 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 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 + ' ' chklbx.SetItemChecked(i, True) + ' ' End If + ' ' End If + ' ' Next + ' ElseIf TypeOf control Is Label Then + ' LoadControlValueNeu(RecordId, ControlId, control, value) + ' End If + 'End If Next @@ -253,55 +250,100 @@ Public Class ClassControlValues Select Case control.GetType() Case GetType(TextBox) Dim textbox As TextBox = DirectCast(control, TextBox) - textbox.Text = value + ControlLoader.TextBox.LoadValue(textbox, value) + Case GetType(Label) Dim label As Label = DirectCast(control, Label) - Dim autoValue As String = LoadControlAutoValue(controlId, recordId, control) + ControlLoader.Label.LoadValue(label, value) - If IsNothing(autoValue) Then - label.Text = value - Else - label.Text = autoValue - End If Case GetType(ComboBox) Dim combobox As ComboBox = DirectCast(control, ComboBox) - combobox.Text = value + ControlLoader.Combobox.LoadValue(combobox, value) + Case GetType(CheckBox) Dim checkbox As CheckBox = DirectCast(control, CheckBox) - checkbox.Checked = Boolean.Parse(value) + ControlLoader.Checkbox.LoadValue(checkbox, value) + Case GetType(RadioButton) Dim radiobutton As RadioButton = DirectCast(control, RadioButton) - radiobutton.Checked = Boolean.Parse(value) + ControlLoader.RadioButton.LoadValue(radiobutton, value) + Case GetType(DevExpress.XtraEditors.DateEdit) Dim datepicker As DevExpress.XtraEditors.DateEdit = DirectCast(control, DevExpress.XtraEditors.DateEdit) - If value = String.Empty Or value = "00:00:00" Then - datepicker.DateTime = DateTime.MinValue - Else - datepicker.DateTime = DateTime.Parse(value) - End If + ControlLoader.DateTimePicker.LoadValue(datepicker, value) + Case GetType(DevExpress.XtraEditors.ListBoxControl) Dim listbox As DevExpress.XtraEditors.ListBoxControl = DirectCast(control, DevExpress.XtraEditors.ListBoxControl) - listbox.SelectedIndex = listbox.FindStringExact(value) - Case GetType(PictureBox) - LoadImage(recordId, controlId, control) + ControlLoader.ListBox.LoadValue(listbox, value) + Case GetType(DevExpress.XtraEditors.CheckedListBoxControl) - Dim chklbx As DevExpress.XtraEditors.CheckedListBoxControl - chklbx = DirectCast(control, DevExpress.XtraEditors.CheckedListBoxControl) - If Not IsNothing(value) Then - If value.ToString <> String.Empty Then - Dim entries() As String = value.Split(";") - For Each entry As String In entries - Dim position = chklbx.FindStringExact(entry) - chklbx.SetItemCheckState(position, CheckState.Checked) - Next - End If - End If + Dim checkedlistbox As DevExpress.XtraEditors.CheckedListBoxControl = DirectCast(control, DevExpress.XtraEditors.CheckedListBoxControl) + ControlLoader.CheckedListBox.LoadValue(checkedlistbox, value) + + Case GetType(PictureBox) + Dim picturebox = DirectCast(control, PictureBox) + LoadImage(recordId, controlId, picturebox) + Case Else - If LogErrorsOnly = False Then ClassLogger.Add(">> Sub LoadControlValueNeu - Control-Type is not being worked: " & GetType(Control).ToString(), False) + If LogErrorsOnly = False Then ClassLogger.Add(">> Sub LoadControlValue - Control-Type nicht berücksichtigt: " & GetType(Control).ToString(), False) End Select Catch ex As Exception - MsgBox("Error in LoadControlValueNeu:" & vbNewLine & ex.Message) + MsgBox("Error in LoadControlValue:" & vbNewLine & ex.Message) End Try + + 'Try + ' Select Case control.GetType() + ' Case GetType(TextBox) + ' Dim textbox As TextBox = DirectCast(control, TextBox) + ' textbox.Text = value + ' Case GetType(Label) + ' Dim label As Label = DirectCast(control, Label) + ' Dim autoValue As String = LoadControlAutoValue(controlId, recordId, control) + + ' If IsNothing(autoValue) Then + ' label.Text = value + ' Else + ' label.Text = autoValue + ' End If + ' Case GetType(ComboBox) + ' Dim combobox As ComboBox = DirectCast(control, ComboBox) + ' combobox.Text = value + ' Case GetType(CheckBox) + ' Dim checkbox As CheckBox = DirectCast(control, CheckBox) + ' checkbox.Checked = Boolean.Parse(value) + ' Case GetType(RadioButton) + ' Dim radiobutton As RadioButton = DirectCast(control, RadioButton) + ' radiobutton.Checked = Boolean.Parse(value) + ' Case GetType(DevExpress.XtraEditors.DateEdit) + ' Dim datepicker As DevExpress.XtraEditors.DateEdit = DirectCast(control, DevExpress.XtraEditors.DateEdit) + ' If value = String.Empty Or value = "00:00:00" Then + ' datepicker.DateTime = DateTime.MinValue + ' Else + ' datepicker.DateTime = DateTime.Parse(value) + ' End If + ' Case GetType(DevExpress.XtraEditors.ListBoxControl) + ' Dim listbox As DevExpress.XtraEditors.ListBoxControl = DirectCast(control, DevExpress.XtraEditors.ListBoxControl) + ' listbox.SelectedIndex = listbox.FindStringExact(value) + ' Case GetType(PictureBox) + ' LoadImage(recordId, controlId, control) + ' Case GetType(DevExpress.XtraEditors.CheckedListBoxControl) + ' Dim chklbx As DevExpress.XtraEditors.CheckedListBoxControl + ' chklbx = DirectCast(control, DevExpress.XtraEditors.CheckedListBoxControl) + ' If Not IsNothing(value) Then + ' If value.ToString <> String.Empty Then + ' Dim entries() As String = value.Split(";") + ' For Each entry As String In entries + ' Dim position = chklbx.FindStringExact(entry) + ' chklbx.SetItemCheckState(position, CheckState.Checked) + ' Next + ' End If + ' End If + ' Case Else + ' If LogErrorsOnly = False Then ClassLogger.Add(">> Sub LoadControlValueNeu - Control-Type is not being worked: " & GetType(Control).ToString(), False) + ' End Select + 'Catch ex As Exception + ' MsgBox("Error in LoadControlValueNeu:" & vbNewLine & ex.Message) + 'End Try End Sub 'Private Shared Function CheckForStaticList(controlId As Integer, recordId As Integer) diff --git a/app/DD-Record-Organiser/DD-Record-Organiser.vbproj b/app/DD-Record-Organiser/DD-Record-Organiser.vbproj index 8e5bc45..a1216d5 100644 --- a/app/DD-Record-Organiser/DD-Record-Organiser.vbproj +++ b/app/DD-Record-Organiser/DD-Record-Organiser.vbproj @@ -241,6 +241,7 @@ + diff --git a/app/DD-Record-Organiser/frmForm_Constructor_Main_2.Designer.vb b/app/DD-Record-Organiser/frmForm_Constructor_Main_2.Designer.vb index 8d6a5b1..712a1cf 100644 --- a/app/DD-Record-Organiser/frmForm_Constructor_Main_2.Designer.vb +++ b/app/DD-Record-Organiser/frmForm_Constructor_Main_2.Designer.vb @@ -205,7 +205,7 @@ Partial Class frmForm_Constructor_Main_2 Me.GridControlMain.Location = New System.Drawing.Point(0, 0) Me.GridControlMain.MainView = Me.grvwTiles Me.GridControlMain.Name = "GridControlMain" - Me.GridControlMain.Size = New System.Drawing.Size(795, 270) + Me.GridControlMain.Size = New System.Drawing.Size(788, 270) Me.GridControlMain.TabIndex = 0 Me.GridControlMain.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.grvwCarousel, Me.grvwTiles, Me.grvwGrid}) ' @@ -460,7 +460,7 @@ Partial Class frmForm_Constructor_Main_2 Me.SplitContainerBottom.Panel1.Text = "Panel1" Me.SplitContainerBottom.Panel2.Controls.Add(Me.Panel2) Me.SplitContainerBottom.Panel2.Text = "Panel2" - Me.SplitContainerBottom.Size = New System.Drawing.Size(1083, 372) + Me.SplitContainerBottom.Size = New System.Drawing.Size(1083, 365) Me.SplitContainerBottom.SplitterPosition = 576 Me.SplitContainerBottom.TabIndex = 0 Me.SplitContainerBottom.Text = "SplitContainerControl1" @@ -476,7 +476,7 @@ Partial Class frmForm_Constructor_Main_2 Me.TCDetails.Location = New System.Drawing.Point(0, 25) Me.TCDetails.Name = "TCDetails" Me.TCDetails.SelectedTabPage = Me.TabDetails - Me.TCDetails.Size = New System.Drawing.Size(1078, 347) + Me.TCDetails.Size = New System.Drawing.Size(1071, 340) Me.TCDetails.TabIndex = 1 Me.TCDetails.TabPages.AddRange(New DevExpress.XtraTab.XtraTabPage() {Me.TabDetails, Me.TabWindream, Me.TabFollowUp, Me.TabPos}) ' @@ -485,7 +485,7 @@ Partial Class frmForm_Constructor_Main_2 Me.TabDetails.Controls.Add(Me.pnlDetails) Me.TabDetails.Image = Global.DD_Record_Organiser.My.Resources.Resources.grid_Data_16xMD Me.TabDetails.Name = "TabDetails" - Me.TabDetails.Size = New System.Drawing.Size(1072, 316) + Me.TabDetails.Size = New System.Drawing.Size(1069, 312) Me.TabDetails.Text = "Detailansicht" ' 'pnlDetails @@ -494,7 +494,7 @@ Partial Class frmForm_Constructor_Main_2 Me.pnlDetails.Dock = System.Windows.Forms.DockStyle.Fill Me.pnlDetails.Location = New System.Drawing.Point(0, 0) Me.pnlDetails.Name = "pnlDetails" - Me.pnlDetails.Size = New System.Drawing.Size(1072, 316) + Me.pnlDetails.Size = New System.Drawing.Size(1069, 312) Me.pnlDetails.TabIndex = 0 ' 'TabWindream @@ -503,7 +503,7 @@ Partial Class frmForm_Constructor_Main_2 Me.TabWindream.Controls.Add(Me.ToolStripDokumente) Me.TabWindream.Image = Global.DD_Record_Organiser.My.Resources.Resources.Files_7954 Me.TabWindream.Name = "TabWindream" - Me.TabWindream.Size = New System.Drawing.Size(1072, 316) + Me.TabWindream.Size = New System.Drawing.Size(1069, 312) Me.TabWindream.Text = "windream-Dateien" ' 'AxObjectListControl @@ -514,7 +514,7 @@ Partial Class frmForm_Constructor_Main_2 Me.AxObjectListControl.Location = New System.Drawing.Point(0, 25) Me.AxObjectListControl.Name = "AxObjectListControl" Me.AxObjectListControl.OcxState = CType(resources.GetObject("AxObjectListControl.OcxState"), System.Windows.Forms.AxHost.State) - Me.AxObjectListControl.Size = New System.Drawing.Size(1072, 291) + Me.AxObjectListControl.Size = New System.Drawing.Size(1069, 287) Me.AxObjectListControl.TabIndex = 6 Me.AxObjectListControl.TabStop = False ' @@ -524,7 +524,7 @@ Partial Class frmForm_Constructor_Main_2 Me.ToolStripDokumente.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.tslblWindreamView, Me.ToolStripDropDownButton2}) Me.ToolStripDokumente.Location = New System.Drawing.Point(0, 0) Me.ToolStripDokumente.Name = "ToolStripDokumente" - Me.ToolStripDokumente.Size = New System.Drawing.Size(1072, 25) + Me.ToolStripDokumente.Size = New System.Drawing.Size(1069, 25) Me.ToolStripDokumente.TabIndex = 2 Me.ToolStripDokumente.Text = "ToolStrip2" ' @@ -558,7 +558,7 @@ Partial Class frmForm_Constructor_Main_2 Me.TabFollowUp.Controls.Add(Me.Label5) Me.TabFollowUp.Image = Global.DD_Record_Organiser.My.Resources.Resources.Task_16xMD Me.TabFollowUp.Name = "TabFollowUp" - Me.TabFollowUp.Size = New System.Drawing.Size(1072, 316) + Me.TabFollowUp.Size = New System.Drawing.Size(1069, 312) Me.TabFollowUp.Text = "Wiedervorlage" ' 'ListViewFollowUps @@ -737,7 +737,7 @@ Partial Class frmForm_Constructor_Main_2 Me.TabPos.Image = CType(resources.GetObject("TabPos.Image"), System.Drawing.Image) Me.TabPos.Name = "TabPos" Me.TabPos.PageVisible = False - Me.TabPos.Size = New System.Drawing.Size(1072, 316) + Me.TabPos.Size = New System.Drawing.Size(1069, 312) Me.TabPos.Text = "Positionen" ' 'Panel1 @@ -746,7 +746,7 @@ Partial Class frmForm_Constructor_Main_2 Me.Panel1.Dock = System.Windows.Forms.DockStyle.Fill Me.Panel1.Location = New System.Drawing.Point(0, 25) Me.Panel1.Name = "Panel1" - Me.Panel1.Size = New System.Drawing.Size(1072, 291) + Me.Panel1.Size = New System.Drawing.Size(1069, 287) Me.Panel1.TabIndex = 2 ' 'GridControlPos @@ -755,7 +755,7 @@ Partial Class frmForm_Constructor_Main_2 Me.GridControlPos.Location = New System.Drawing.Point(0, 0) Me.GridControlPos.MainView = Me.grvwGridPos Me.GridControlPos.Name = "GridControlPos" - Me.GridControlPos.Size = New System.Drawing.Size(1072, 291) + Me.GridControlPos.Size = New System.Drawing.Size(1069, 287) Me.GridControlPos.TabIndex = 0 Me.GridControlPos.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.grvwGridPos}) ' @@ -782,7 +782,7 @@ Partial Class frmForm_Constructor_Main_2 Me.BindingNavigatorPOS.MovePreviousItem = Me.BindingNavigatorMovePreviousItem Me.BindingNavigatorPOS.Name = "BindingNavigatorPOS" Me.BindingNavigatorPOS.PositionItem = Me.BindingNavigatorPositionItem - Me.BindingNavigatorPOS.Size = New System.Drawing.Size(1072, 25) + Me.BindingNavigatorPOS.Size = New System.Drawing.Size(1069, 25) Me.BindingNavigatorPOS.TabIndex = 1 Me.BindingNavigatorPOS.Text = "BindingNavigator1" ' @@ -877,7 +877,7 @@ Partial Class frmForm_Constructor_Main_2 Me.ToolStripEdit.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.tsButtonAdd, Me.tsButtonSave, Me.tsButtonDelete, Me.tsButtonEditMode, Me.ToolStripDropDownButton1, Me.tsButtonShowTaskOverview, Me.tsButtonShowWorkflowTasks}) Me.ToolStripEdit.Location = New System.Drawing.Point(0, 0) Me.ToolStripEdit.Name = "ToolStripEdit" - Me.ToolStripEdit.Size = New System.Drawing.Size(1078, 25) + Me.ToolStripEdit.Size = New System.Drawing.Size(1071, 25) Me.ToolStripEdit.TabIndex = 0 Me.ToolStripEdit.Text = "ToolStrip1" ' From 37f75d3656c7a76066ef910f6e18ca1a9072d5ba Mon Sep 17 00:00:00 2001 From: JenneJ Date: Tue, 5 Jan 2016 15:49:45 +0100 Subject: [PATCH 3/4] jj_05_01_16 --- .../ClassControlBuilder.vb | 1 + .../ClassControlCommandsUI.vb | 73 +- app/DD-Record-Organiser/ClassControlLoader.vb | 71 +- app/DD-Record-Organiser/ClassControlValues.vb | 818 +++++------------- app/DD-Record-Organiser/ClassInit.vb | 2 + .../frmForm_Constructor.vb | 12 +- .../frmForm_Constructor_Main.vb | 6 +- .../frmForm_Constructor_Main_2.Designer.vb | 19 +- .../frmForm_Constructor_Main_2.resx | 28 +- .../frmForm_Constructor_Main_2.vb | 121 ++- app/DD-Record-Organiser/frmForm_Input.vb | 2 +- 11 files changed, 403 insertions(+), 750 deletions(-) diff --git a/app/DD-Record-Organiser/ClassControlBuilder.vb b/app/DD-Record-Organiser/ClassControlBuilder.vb index 8c2eab6..25a8524 100644 --- a/app/DD-Record-Organiser/ClassControlBuilder.vb +++ b/app/DD-Record-Organiser/ClassControlBuilder.vb @@ -103,6 +103,7 @@ Public Class ClassControlBuilder Case "ComboBox" Dim combo As ComboBox = CType(control, ComboBox) AddHandler combo.SelectedValueChanged, AddressOf RecordChanged + AddHandler combo.TextChanged, AddressOf RecordChanged AddHandler combo.GotFocus, AddressOf OnComboBoxFocus AddHandler combo.LostFocus, AddressOf OnComboBoxLostFocus Case "RadioButton" diff --git a/app/DD-Record-Organiser/ClassControlCommandsUI.vb b/app/DD-Record-Organiser/ClassControlCommandsUI.vb index 2739025..3c71f27 100644 --- a/app/DD-Record-Organiser/ClassControlCommandsUI.vb +++ b/app/DD-Record-Organiser/ClassControlCommandsUI.vb @@ -466,7 +466,7 @@ Public Class ClassControlCommandsUI For Each ctrl As Control In controls Dim CONTROL_ID As Integer = ctrl.Tag 'GetControlID_for_RecordID(ctrl.Name, RecordID) If LogErrorsOnly = False Then ClassLogger.Add(">> CONTROL_ID: " & CONTROL_ID, False) - Dim CONTROL_VALUE As String = Nothing + Dim CONTROL_VALUE As String = GetControlValue(ctrl) If TypeOf ctrl Is PictureBox Then Dim id As Integer = ctrl.Tag 'GetControlID_for_Name(ctrl.Name, FormID) @@ -474,36 +474,19 @@ Public Class ClassControlCommandsUI Continue For End If - ' Neues Control - If CONTROL_ID = -1 Then - CONTROL_VALUE = GetControlValue(ctrl) + If TypeOf ctrl Is GroupBox Then + Dim ctrls As Control.ControlCollection = DirectCast(ctrl, GroupBox).Controls + UpdateAllControls(FormID, RecordID, ctrls) + Continue For + End If - ' Kein Bekanntes Control oder Groupbox - If IsNothing(CONTROL_VALUE) Then - If TypeOf ctrl Is GroupBox Then - Dim ctrls As Control.ControlCollection = DirectCast(ctrl, GroupBox).Controls + Dim ValueExists = ClassDatabase.Execute_Scalar(String.Format("SELECT RECORD_ID FROM VWPMO_VALUES WHERE RECORD_ID = {0} AND CONTROL_ID = {1}", RecordID, CONTROL_ID)) - UpdateAllControls(FormID, RecordID, ctrls) - End If - Else - Dim ctrlid As Integer = GetControlID_for_Name(ctrl.Name, FormID) - If LogErrorsOnly = False Then ClassLogger.Add(">> InsertControlValue: " & CONTROL_ID & "|" & RecordID & "|" & CONTROL_VALUE, False) - InsertControlValue(ctrlid, RecordID, CONTROL_VALUE) - End If - Else ' Control Updaten - If ctrl.Tag = 556 Then - Console.WriteLine("CheckedLB") - End If - CONTROL_VALUE = GetControlValue(ctrl) - ' Kein Bekanntes Control oder Groupbox - If IsNothing(CONTROL_VALUE) Then - If TypeOf ctrl Is GroupBox Then - Dim ctrls As Control.ControlCollection = DirectCast(ctrl, GroupBox).Controls - UpdateAllControls(FormID, RecordID, ctrls) - End If - Else - UpdateControlValue(CONTROL_ID, RecordID, CONTROL_VALUE) - End If + If ValueExists Then ' Control Updaten + UpdateControlValue(CONTROL_ID, RecordID, CONTROL_VALUE) + Else ' Neues Control + If LogErrorsOnly = False Then ClassLogger.Add(">> InsertControlValue: " & CONTROL_ID & "|" & RecordID & "|" & CONTROL_VALUE, False) + InsertControlValue(CONTROL_ID, RecordID, CONTROL_VALUE) End If Next Catch ex As Exception @@ -640,8 +623,20 @@ Public Class ClassControlCommandsUI ClassLogger.Add("Unerwarteter Fehler in Insert ConvertValue to Format'" & FORMAT_TYPE & "': " & ex.Message, True) End Try - Dim SQL = "INSERT INTO TBPMO_CONTROL_VALUE (CONTROL_ID, RECORD_ID, VALUE, ADDED_WHO) VALUES (" & ControlID & ", " & RecordID & ", '" & Value & "', '" & AddedWho & "')" - Return ClassDatabase.Execute_non_Query(SQL, True) + Using conn As New SqlClient.SqlConnection(MyConnectionString) + Dim cmd As New SqlClient.SqlCommand("INSERT INTO TBPMO_CONTROL_VALUE (CONTROL_ID, RECORD_ID, VALUE, ADDED_WHO) VALUES (@CONTROL_ID, @RECORD_ID, @VALUE, @ADDED_WHO)", conn) + cmd.Parameters.Add("@VALUE", SqlDbType.NVarChar).Value = Value + cmd.Parameters.Add("@ADDED_WHO", SqlDbType.VarChar).Value = AddedWho + cmd.Parameters.Add("@CONTROL_ID", SqlDbType.Int).Value = ControlID + cmd.Parameters.Add("@RECORD_ID", SqlDbType.Int).Value = RecordID + + conn.Open() + cmd.ExecuteNonQuery() + Return True + End Using + + 'Dim SQL = "INSERT INTO TBPMO_CONTROL_VALUE (CONTROL_ID, RECORD_ID, VALUE, ADDED_WHO) VALUES (" & ControlID & ", " & RecordID & ", '" & Value & "', '" & AddedWho & "')" + 'Return ClassDatabase.Execute_non_Query(SQL, True) Catch ex As Exception ClassLogger.Add("Unerwarteter Fehler in InsertControlValue: " & ex.Message, True) Return False @@ -666,8 +661,20 @@ Public Class ClassControlCommandsUI ClassLogger.Add("Unerwarteter Fehler in Update ConvertValue to Format'" & FORMAT_TYPE & "': " & ex.Message, True) End Try - Dim SQL As String = "UPDATE TBPMO_CONTROL_VALUE SET VALUE = '" & Value & "', CHANGED_WHO = '" & CHANGED_WHO & "' WHERE CONTROL_ID = " & ControlID & " AND RECORD_ID = " & RecordID - Return ClassDatabase.Execute_non_Query(SQL, True) + Using conn As New SqlClient.SqlConnection(MyConnectionString) + Dim cmd As New SqlClient.SqlCommand("UPDATE TBPMO_CONTROL_VALUE SET VALUE = @VALUE, CHANGED_WHO = @CHANGED_WHO WHERE CONTROL_ID = @CONTROL_ID AND RECORD_ID = @RECORD_ID", conn) + cmd.Parameters.Add("@VALUE", SqlDbType.NVarChar).Value = Value + cmd.Parameters.Add("@CHANGED_WHO", SqlDbType.VarChar).Value = CHANGED_WHO + cmd.Parameters.Add("@CONTROL_ID", SqlDbType.Int).Value = ControlID + cmd.Parameters.Add("@RECORD_ID", SqlDbType.Int).Value = RecordID + + conn.Open() + cmd.ExecuteNonQuery() + Return True + End Using + + 'Dim SQL As String = "UPDATE TBPMO_CONTROL_VALUE SET VALUE = '" & Value & "', CHANGED_WHO = '" & CHANGED_WHO & "' WHERE CONTROL_ID = " & ControlID & " AND RECORD_ID = " & RecordID + 'Return ClassDatabase.Execute_non_Query(Sql, True) Catch ex As Exception ClassLogger.Add("Unerwarteter Fehler in UpdateControlValue: " & ex.Message, True) diff --git a/app/DD-Record-Organiser/ClassControlLoader.vb b/app/DD-Record-Organiser/ClassControlLoader.vb index 97c1515..e7cc5d9 100644 --- a/app/DD-Record-Organiser/ClassControlLoader.vb +++ b/app/DD-Record-Organiser/ClassControlLoader.vb @@ -1,6 +1,38 @@ Namespace ControlLoader Public Class _BaseControl + + Public Shared Function ReplaceSqlCommandPlaceholders(sqlCommand As String, recordId As Integer, parentRecordId As Integer) + sqlCommand = sqlCommand.Replace("@RECORD_ID", recordId) + sqlCommand = sqlCommand.Replace("@RECORDID", recordId) + sqlCommand = sqlCommand.Replace("@PARENTRECORD_ID", parentRecordId) + sqlCommand = sqlCommand.Replace("@PARENTRECORDID", parentRecordId) + + Return sqlCommand + End Function + + Public Shared Function LoadAutoValue(control As Windows.Forms.Label, RecordId As Integer, ParentRecordId As Integer) + Dim AutoValue As String = String.Empty + Dim ControlId As Integer = control.Tag + Dim SQL As String = ClassDatabase.Execute_Scalar(String.Format("SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = {0}", ControlId)) + SQL = ReplaceSqlCommandPlaceholders(SQL, RecordId, ParentRecordId) + + If SQL = "" Or IsDBNull(SQL) Then + Return control.Text + End If + + AutoValue = ClassDatabase.Execute_Scalar(SQL) + + If String.IsNullOrEmpty(AutoValue) Or IsDBNull(AutoValue) Then + SQL = String.Format("SELECT CONTROL_TEXT FROM TBPMO_CONTROL_SCREEN WHERE CONTROL_ID = {0}", ControlId) + Dim value = ClassDatabase.Execute_Scalar(SQL) + Return value + Else + Return AutoValue + End If + + End Function + End Class Public Class _ListControl : Inherits _BaseControl @@ -58,14 +90,7 @@ End Try End Function - Private Shared Function ReplaceSqlCommandPlaceholders(sqlCommand As String, recordId As Integer, parentRecordId As Integer) - sqlCommand = sqlCommand.Replace("@RECORD_ID", recordId) - sqlCommand = sqlCommand.Replace("@RECORDID", recordId) - sqlCommand = sqlCommand.Replace("@PARENTRECORD_ID", parentRecordId) - sqlCommand = sqlCommand.Replace("@PARENTRECORDID", parentRecordId) - - Return sqlCommand - End Function + End Class Public Structure DynamicValue @@ -75,9 +100,14 @@ Public Class Label : Inherits _BaseControl - Public Shared Sub LoadValue(control As Windows.Forms.Label, value As String) - ' TODO: LoadControlAutoValue aufrufen - control.Text = value + Public Shared Sub LoadValue(control As Windows.Forms.Label, recordId As Integer, parentRecordId As Integer, value As String) + Dim autoValue = LoadAutoValue(control, recordId, parentRecordId) + + If IsNothing(autoValue) Then + control.Text = value + Else + control.Text = autoValue + End If End Sub End Class @@ -179,14 +209,18 @@ Public Class CheckedListBox : Inherits _ListControl Public Shared Sub LoadValue(control As DevExpress.XtraEditors.CheckedListBoxControl, value As String) + If IsNothing(value) Then + Exit Sub + End If - For Each item As String In control.Items - - Dim pos = control.FindStringExact(value) - control.SetItemCheckState(pos, CheckState.Checked) + Dim values() As String = value.Split(";") + For Each v As String In values + Dim pos = control.FindStringExact(v) + If pos >= 0 Then + control.SetItemCheckState(pos, CheckState.Checked) + End If Next - End Sub Public Shared Sub LoadList(control As DevExpress.XtraEditors.CheckedListBoxControl, formId As Integer, recordId As Integer, parentRecordId As Integer) @@ -195,11 +229,6 @@ If dynamic.StaticList IsNot Nothing Then control.DataSource = dynamic.StaticList - - 'For Each item As String In dynamic.StaticList - ' Dim pos = control.FindStringExact(item) - ' control.SetItemCheckState(pos, CheckState.Checked) - 'Next End If If dynamic.DataTable IsNot Nothing AndAlso dynamic.DataTable.Rows.Count > 0 Then diff --git a/app/DD-Record-Organiser/ClassControlValues.vb b/app/DD-Record-Organiser/ClassControlValues.vb index 15c5abc..1d6272b 100644 --- a/app/DD-Record-Organiser/ClassControlValues.vb +++ b/app/DD-Record-Organiser/ClassControlValues.vb @@ -1,157 +1,152 @@ Imports DevExpress.XtraEditors.Controls Public Class ClassControlValues - Private Shared Function LoadControlAutoValue(ControlID As Integer, RecordID As Integer, control As Control) As String - - If TypeOf control Is Label Then - 'If ControlID = 320 Then - ' MsgBox("") - 'End If - ' Dim SQL As String = "SELECT CONTROL_TYPE_ID FROM TBPMO_CONTROL WHERE GUID = " & ControlID - ' Dim type As Integer = ClassDatabase.Execute_Scalar(SQL) - Dim SQL - ' Wenn kein/leerer Wert gefunden, suche nach einem SQL Command für Automatischen Wert - 'If type = 1 Then - Dim autoValue - SQL = "SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = " & ControlID - Dim result = ClassDatabase.Execute_Scalar(SQL) - result = result.Replace("@FORM_ID", CURRENT_FORM_ID) - result = result.Replace("@RECORD_ID", CURRENT_RECORD_ID) - result = result.Replace("@RECORDID", CURRENT_RECORD_ID) - result = result.Replace("@PARENTRECORD_ID", CURRENT_PARENTID) - ' Wenn das SQL Command leer ist, hat dieses Control kein SQL Command - ' Gib den ursprünlichen Text zurück - If result = "" Then - Return control.Text - Else - autoValue = ClassDatabase.Execute_Scalar(result) - - ' Wenn das SQL Command DBNull zurück gibt, - ' Überschreibe den alten Wert mit " " (Leerzeichen) - If IsDBNull(autoValue) Then - SQL = "SELECT CONTROL_TEXT FROM TBPMO_CONTROL_SCREEN WHERE CONTROL_ID = " & ControlID - Dim value = ClassDatabase.Execute_Scalar(SQL) - Return value - Else - Return autoValue - End If - End If - 'End If + 'Private Shared Function LoadControlAutoValue(ControlID As Integer, RecordID As Integer, control As Control) As String + + ' If TypeOf control Is Label Then + ' Dim SQL = "SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = " & ControlID + ' Dim autoValue + ' Dim result = ClassDatabase.Execute_Scalar(SQL) + ' result = result.Replace("@FORM_ID", CURRENT_FORM_ID) + ' result = result.Replace("@RECORD_ID", CURRENT_RECORD_ID) + ' result = result.Replace("@RECORDID", CURRENT_RECORD_ID) + ' result = result.Replace("@PARENTRECORD_ID", CURRENT_PARENTID) + ' ' Wenn das SQL Command leer ist, hat dieses Control kein SQL Command + ' ' Gib den ursprünlichen Text zurück + ' If result = "" Then + ' Return control.Text + ' Else + ' autoValue = ClassDatabase.Execute_Scalar(result) + + ' ' Wenn das SQL Command DBNull zurück gibt, + ' ' Überschreibe den alten Wert mit " " (Leerzeichen) + ' If IsDBNull(autoValue) Then + ' SQL = "SELECT CONTROL_TEXT FROM TBPMO_CONTROL_SCREEN WHERE CONTROL_ID = " & ControlID + ' Dim value = ClassDatabase.Execute_Scalar(SQL) + ' Return value + ' Else + ' Return autoValue + ' End If + ' End If + ' 'End If - 'Return Nothing - Else - Return Nothing - End If + ' 'Return Nothing + ' Else + ' Return Nothing + ' End If - End Function + 'End Function - Public Shared Sub LoadControlValue(RecordID As Integer, ControlID As Integer, control As Control) - Try - ' Dim DT1 As DataTable = ClassDatabase.Return_Datatable() - Dim DT As DataTable = ClassDatabase.Return_Datatable("SELECT * FROM VWPMO_VALUES WHERE RECORD_ID = " & RecordID & " and CONTROL_ID = " & ControlID, "LaodControlValue: ReturnValues") - If DT.Rows.Count = 0 Then - Dim autoValue = LoadControlAutoValue(ControlID, RecordID, control) + 'Public Shared Sub LoadControlValue(RecordID As Integer, ControlID As Integer, control As Control) + ' Try + ' ' Dim DT1 As DataTable = ClassDatabase.Return_Datatable() + ' Dim DT As DataTable = ClassDatabase.Return_Datatable("SELECT * FROM VWPMO_VALUES WHERE RECORD_ID = " & RecordID & " and CONTROL_ID = " & ControlID, "LaodControlValue: ReturnValues") + ' If DT.Rows.Count = 0 Then + ' Dim autoValue = LoadControlAutoValue(ControlID, RecordID, control) - If Not String.IsNullOrEmpty(autoValue) Then - control.Text = autoValue - End If + ' If Not String.IsNullOrEmpty(autoValue) Then + ' control.Text = autoValue + ' End If - Exit Sub - End If + ' Exit Sub + ' End If - Dim result = DT.Rows(0).Item("VALUE") - '22.06.2015 - If Not IsDBNull(result) Then - Select Case DT.Rows(0).Item("CONTROL_TYPE_ID") - Case 1 'Label - Dim label As Label = DirectCast(control, Label) - Dim autoValue As String = LoadControlAutoValue(ControlID, RecordID, control) - If Not IsNothing(autoValue) Then - label.Text = autoValue - End If - Case 2 ' TextBox - Dim textbox As TextBox = DirectCast(control, TextBox) - textbox.Text = result - Case 10 ' CheckBox - Dim checkbox As CheckBox = DirectCast(control, CheckBox) - checkbox.Checked = CBool(result) - Case 11 'RadioButton - Dim radio As RadioButton = DirectCast(control, RadioButton) - radio.Checked = CBool(result) - Case 3 ' ComboBox - Dim cmbbox As ComboBox = DirectCast(control, System.Windows.Forms.ComboBox) - cmbbox.Text = result - 'If LogErrorsOnly = False Then ClassLogger.Add(">> control ComboBox", False) - 'Dim cmbSql As String = "SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = " & ControlID - 'cmbSql = ClassDatabase.Execute_Scalar(cmbSql) - 'If Not (cmbSql Is Nothing Or cmbSql = String.Empty) Then - ' If cmbSql.ToString.Contains("@") Then - ' cmbSql = cmbSql.ToString.Replace("@RECORDID", CURRENT_RECORD_ID) - ' cmbSql = cmbSql.ToString.Replace("@RECORD_ID", CURRENT_RECORD_ID) - ' cmbSql = cmbSql.ToString.Replace("@PARENTRECORD_ID", CURRENT_PARENTID) - ' If LogErrorsOnly = False Then ClassLogger.Add(">> SQL Combobox: " & cmbSql, False) - ' End If - ' If LogErrorsOnly = False Then ClassLogger.Add(">> SQL Combobox: " & cmbSql, False) - - ' 'SQL-Command vorhanden also Ausführen des SQL - ' Dim DT_ComboBox As DataTable = ClassDatabase.Return_Datatable(cmbSql, "LoadControlValues: Combobox") - ' If DT_ComboBox Is Nothing = False Then - ' cmbbox.DataSource = DT_ComboBox - ' Select Case DT_ComboBox.Columns.Count - ' Case 2 - ' cmbbox.DisplayMember = DT_ComboBox.Columns(1).ColumnName - ' cmbbox.ValueMember = DT_ComboBox.Columns(0).ColumnName - ' Case 1 - ' cmbbox.DisplayMember = DT_ComboBox.Columns(0).ColumnName - ' cmbbox.ValueMember = DT_ComboBox.Columns(0).ColumnName - ' End Select - - ' End If - 'End If - ''combobox.DataSource = Nothing - 'If cmbbox.SelectedIndex = -1 Then - ' cmbbox.DataSource = Nothing - ' cmbbox.Text = result - 'Else - ' cmbbox.SelectedIndex = cmbbox.FindStringExact(result) - 'End If - Case 4 'DateTimePicker - Dim datepicker As DevExpress.XtraEditors.DateEdit = DirectCast(control, DevExpress.XtraEditors.DateEdit) - - If result = "" Or result = "00:00:00" Then - datepicker.DateTime = DateTime.MinValue - Else - datepicker.DateTime = Date.Parse(result) - End If - Case 13 ' Listbox - Dim listbox As DevExpress.XtraEditors.ListBoxControl = DirectCast(control, DevExpress.XtraEditors.ListBoxControl) - listbox.SelectedIndex = listbox.FindStringExact(result) - Case Else - If LogErrorsOnly = False Then ClassLogger.Add(">> Sub LoadControlValue - Control-Type nicht berücksichtigt: " & DT.Rows(0).Item("CONTROL_TYPE_ID"), False) - 'MsgBox(DT.Rows(0).Item("CONTROL_TYPE_ID")) - End Select - Else - ClassLogger.Add(" >> Achtung, der Value für Control-ID: " & ControlID & " ist DBNull", False) - End If + ' Dim result = DT.Rows(0).Item("VALUE") + ' '22.06.2015 + ' If Not IsDBNull(result) Then + ' Select Case DT.Rows(0).Item("CONTROL_TYPE_ID") + ' Case 1 'Label + ' Dim label As Label = DirectCast(control, Label) + ' Dim autoValue As String = LoadControlAutoValue(ControlID, RecordID, control) + ' If Not IsNothing(autoValue) Then + ' label.Text = autoValue + ' End If + ' Case 2 ' TextBox + ' Dim textbox As TextBox = DirectCast(control, TextBox) + ' textbox.Text = result + ' Case 10 ' CheckBox + ' Dim checkbox As CheckBox = DirectCast(control, CheckBox) + ' checkbox.Checked = CBool(result) + ' Case 11 'RadioButton + ' Dim radio As RadioButton = DirectCast(control, RadioButton) + ' radio.Checked = CBool(result) + ' Case 3 ' ComboBox + ' Dim cmbbox As ComboBox = DirectCast(control, System.Windows.Forms.ComboBox) + ' cmbbox.Text = result + ' 'If LogErrorsOnly = False Then ClassLogger.Add(">> control ComboBox", False) + ' 'Dim cmbSql As String = "SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = " & ControlID + ' 'cmbSql = ClassDatabase.Execute_Scalar(cmbSql) + ' 'If Not (cmbSql Is Nothing Or cmbSql = String.Empty) Then + ' ' If cmbSql.ToString.Contains("@") Then + ' ' cmbSql = cmbSql.ToString.Replace("@RECORDID", CURRENT_RECORD_ID) + ' ' cmbSql = cmbSql.ToString.Replace("@RECORD_ID", CURRENT_RECORD_ID) + ' ' cmbSql = cmbSql.ToString.Replace("@PARENTRECORD_ID", CURRENT_PARENTID) + ' ' If LogErrorsOnly = False Then ClassLogger.Add(">> SQL Combobox: " & cmbSql, False) + ' ' End If + ' ' If LogErrorsOnly = False Then ClassLogger.Add(">> SQL Combobox: " & cmbSql, False) + + ' ' 'SQL-Command vorhanden also Ausführen des SQL + ' ' Dim DT_ComboBox As DataTable = ClassDatabase.Return_Datatable(cmbSql, "LoadControlValues: Combobox") + ' ' If DT_ComboBox Is Nothing = False Then + ' ' cmbbox.DataSource = DT_ComboBox + ' ' Select Case DT_ComboBox.Columns.Count + ' ' Case 2 + ' ' cmbbox.DisplayMember = DT_ComboBox.Columns(1).ColumnName + ' ' cmbbox.ValueMember = DT_ComboBox.Columns(0).ColumnName + ' ' Case 1 + ' ' cmbbox.DisplayMember = DT_ComboBox.Columns(0).ColumnName + ' ' cmbbox.ValueMember = DT_ComboBox.Columns(0).ColumnName + ' ' End Select + + ' ' End If + ' 'End If + ' ''combobox.DataSource = Nothing + ' 'If cmbbox.SelectedIndex = -1 Then + ' ' cmbbox.DataSource = Nothing + ' ' cmbbox.Text = result + ' 'Else + ' ' cmbbox.SelectedIndex = cmbbox.FindStringExact(result) + ' 'End If + ' Case 4 'DateTimePicker + ' Dim datepicker As DevExpress.XtraEditors.DateEdit = DirectCast(control, DevExpress.XtraEditors.DateEdit) + + ' If result = "" Or result = "00:00:00" Then + ' datepicker.DateTime = DateTime.MinValue + ' Else + ' datepicker.DateTime = Date.Parse(result) + ' End If + ' Case 13 ' Listbox + ' Dim listbox As DevExpress.XtraEditors.ListBoxControl = DirectCast(control, DevExpress.XtraEditors.ListBoxControl) + ' listbox.SelectedIndex = listbox.FindStringExact(result) + ' Case Else + ' If LogErrorsOnly = False Then ClassLogger.Add(">> Sub LoadControlValue - Control-Type nicht berücksichtigt: " & DT.Rows(0).Item("CONTROL_TYPE_ID"), False) + ' 'MsgBox(DT.Rows(0).Item("CONTROL_TYPE_ID")) + ' End Select + ' Else + ' ClassLogger.Add(" >> Achtung, der Value für Control-ID: " & ControlID & " ist DBNull", False) + ' End If - Catch ex As Exception - MsgBox("Error in LoadControlValue:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) - End Try - End Sub + ' Catch ex As Exception + ' MsgBox("Error in LoadControlValue:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) + ' End Try + 'End Sub #Region "#### ClassControlValues REWRITE ####" - Public Shared Sub LoadControlValuesNeu(RecordId As Integer, FormId As Integer, controls As Control.ControlCollection) + Public Shared Sub LoadControlValuesNeu(RecordId As Integer, ParentRecordId As Integer, FormId As Integer, controls As Control.ControlCollection) Try Dim SQL As String = String.Format("SELECT * FROM VWPMO_VALUES WHERE VALUE <> '' AND RECORD_ID = {0}", RecordId) Dim DT_ControlValues As DataTable = ClassDatabase.Return_Datatable(SQL, "LoadControlValues") + If controls.Count = 0 Then ClassLogger.Add("the control-Collection in LoadControlValuesNeu is empty!", True) End If + + ' Zuerst alle Controls leeren + ClearControlValues(controls) + For Each control As Control In controls Dim ControlId As Integer = CInt(control.Tag) - 'Dim SQL1 As String = String.Format("SELECT VALUE FROM VWPMO_VALUES WHERE CONTROL_ID = {0} AND VALUE <> '' AND RECORD_ID = {1}", ControlId, RecordId) - 'Dim value = ClassDatabase.Execute_Scalar(SQL1) ' Wert per LINQ aus DT_ControlValues suchen der zur aktuellen controlId passt Dim value = (From row In DT_ControlValues.AsEnumerable() @@ -160,92 +155,19 @@ Public Class ClassControlValues If TypeOf control Is GroupBox Then Dim groupbox As GroupBox = DirectCast(control, GroupBox) - LoadControlValuesNeu(RecordId, FormId, groupbox.Controls) + LoadControlValuesNeu(RecordId, ParentRecordId, FormId, groupbox.Controls) Else - LoadControlValueNeu(RecordId, ControlId, control, value) + LoadControlValueNeu(RecordId, ParentRecordId, ControlId, control, value) End If - 'If Not IsNothing(value) Then - ' ' Continue For - ' If TypeOf control Is GroupBox Then - ' Dim groupbox As GroupBox = DirectCast(control, GroupBox) - ' LoadControlValuesNeu(RecordId, FormId, groupbox.Controls) - ' Else - ' LoadControlValueNeu(RecordId, ControlId, control, value) - ' End If - 'Else - ' If TypeOf control Is DevExpress.XtraEditors.CheckedListBoxControl Then - ' If LogErrorsOnly = False Then ClassLogger.Add(">> control DevExpress.XtraEditors.CheckedListBoxControl", False) - ' Dim chklbx As DevExpress.XtraEditors.CheckedListBoxControl - ' chklbx = DirectCast(control, DevExpress.XtraEditors.CheckedListBoxControl) - ' Dim chklbSql As String = "SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = " & ControlId - ' ' chklbSql = ClassDatabase.Execute_Scalar(chklbSql) - ' ' If Not (chklbSql Is Nothing Or chklbSql = String.Empty) Then - ' ' If chklbSql.ToString.Contains("@") Then - ' ' chklbSql = chklbSql.ToString.Replace("@RECORDID", CURRENT_RECORD_ID) - ' ' chklbSql = chklbSql.ToString.Replace("@RECORD_ID", CURRENT_RECORD_ID) - ' ' chklbSql = chklbSql.ToString.Replace("@PARENTRECORD_ID", CURRENT_PARENTID) - ' ' If LogErrorsOnly = False Then ClassLogger.Add(">> SQL CheckedListBox: " & chklbSql, False) - ' ' 'SQL-Command vorhanden also Ausführen des SQL - ' ' Dim DT_ListBox As DataTable = ClassDatabase.Return_Datatable(chklbSql, "LoadControlValues: CheckedListBox") - ' ' If DT_ListBox Is Nothing = False Then - ' ' chklbx.DataSource = DT_ListBox - ' ' Select Case DT_ListBox.Columns.Count - ' ' Case 2 - ' ' chklbx.DisplayMember = DT_ListBox.Columns(1).ColumnName - ' ' chklbx.ValueMember = DT_ListBox.Columns(0).ColumnName - ' ' Case 1 - ' ' chklbx.DisplayMember = DT_ListBox.Columns(0).ColumnName - ' ' chklbx.ValueMember = DT_ListBox.Columns(0).ColumnName - ' ' End Select - ' ' End If - ' ' End If - ' ' ElseIf (chklbSql = String.Empty) Then - ' ' ' Wenn keine SQL Command ein leerer String ist, - ' ' ' lade das Control ohne Datenbank, da es wahrscheinlich eine Static List ist - ' ' chklbSql = "SELECT VALUE FROM VWPMO_VALUES WHERE CONTROL_ID = " & CONTROL_ID & " AND RECORD_ID = " & RecordID - ' ' Dim result As String = ClassDatabase.Execute_Scalar(chklbSql) - ' ' If Not IsNothing(result) Then - ' ' If result.ToString <> String.Empty Then - ' ' Dim entries() As String = result.Split(";") - ' ' For Each entry As String In entries - ' ' Dim position = chklbx.FindStringExact(entry) - ' ' chklbx.SetItemCheckState(position, CheckState.Checked) - ' ' Next - ' ' End If - ' ' End If - ' ' Continue For - ' ' Else - ' ' If LogErrorsOnly = False Then ClassLogger.Add(">> chklbSql is nothing", False) - ' ' End If - ' ' chklbx.UnCheckAll() - ' ' 'Recorddatensätze durchlaufen und überprüfen ob angehakt?? - ' ' 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 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 - ' ' chklbx.SetItemChecked(i, True) - ' ' End If - ' ' End If - ' ' Next - ' ElseIf TypeOf control Is Label Then - ' LoadControlValueNeu(RecordId, ControlId, control, value) - ' End If - 'End If - - Next Catch ex As Exception MsgBox("Error in LoadControlValuesNeu:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) End Try - + End Sub - Private Shared Sub LoadControlValueNeu(recordId As Integer, controlId As Integer, control As Control, value As Object) + Private Shared Sub LoadControlValueNeu(recordId As Integer, parentRecordId As Integer, controlId As Integer, control As Control, value As Object) Try Select Case control.GetType() Case GetType(TextBox) @@ -254,7 +176,7 @@ Public Class ClassControlValues Case GetType(Label) Dim label As Label = DirectCast(control, Label) - ControlLoader.Label.LoadValue(label, value) + ControlLoader.Label.LoadValue(label, recordId, parentRecordId, value) Case GetType(ComboBox) Dim combobox As ComboBox = DirectCast(control, ComboBox) @@ -291,368 +213,12 @@ Public Class ClassControlValues MsgBox("Error in LoadControlValue:" & vbNewLine & ex.Message) End Try - 'Try - ' Select Case control.GetType() - ' Case GetType(TextBox) - ' Dim textbox As TextBox = DirectCast(control, TextBox) - ' textbox.Text = value - ' Case GetType(Label) - ' Dim label As Label = DirectCast(control, Label) - ' Dim autoValue As String = LoadControlAutoValue(controlId, recordId, control) - - ' If IsNothing(autoValue) Then - ' label.Text = value - ' Else - ' label.Text = autoValue - ' End If - ' Case GetType(ComboBox) - ' Dim combobox As ComboBox = DirectCast(control, ComboBox) - ' combobox.Text = value - ' Case GetType(CheckBox) - ' Dim checkbox As CheckBox = DirectCast(control, CheckBox) - ' checkbox.Checked = Boolean.Parse(value) - ' Case GetType(RadioButton) - ' Dim radiobutton As RadioButton = DirectCast(control, RadioButton) - ' radiobutton.Checked = Boolean.Parse(value) - ' Case GetType(DevExpress.XtraEditors.DateEdit) - ' Dim datepicker As DevExpress.XtraEditors.DateEdit = DirectCast(control, DevExpress.XtraEditors.DateEdit) - ' If value = String.Empty Or value = "00:00:00" Then - ' datepicker.DateTime = DateTime.MinValue - ' Else - ' datepicker.DateTime = DateTime.Parse(value) - ' End If - ' Case GetType(DevExpress.XtraEditors.ListBoxControl) - ' Dim listbox As DevExpress.XtraEditors.ListBoxControl = DirectCast(control, DevExpress.XtraEditors.ListBoxControl) - ' listbox.SelectedIndex = listbox.FindStringExact(value) - ' Case GetType(PictureBox) - ' LoadImage(recordId, controlId, control) - ' Case GetType(DevExpress.XtraEditors.CheckedListBoxControl) - ' Dim chklbx As DevExpress.XtraEditors.CheckedListBoxControl - ' chklbx = DirectCast(control, DevExpress.XtraEditors.CheckedListBoxControl) - ' If Not IsNothing(value) Then - ' If value.ToString <> String.Empty Then - ' Dim entries() As String = value.Split(";") - ' For Each entry As String In entries - ' Dim position = chklbx.FindStringExact(entry) - ' chklbx.SetItemCheckState(position, CheckState.Checked) - ' Next - ' End If - ' End If - ' Case Else - ' If LogErrorsOnly = False Then ClassLogger.Add(">> Sub LoadControlValueNeu - Control-Type is not being worked: " & GetType(Control).ToString(), False) - ' End Select - 'Catch ex As Exception - ' MsgBox("Error in LoadControlValueNeu:" & vbNewLine & ex.Message) - 'End Try End Sub - 'Private Shared Function CheckForStaticList(controlId As Integer, recordId As Integer) - ' Try - ' Dim SQL As String = String.Format("SELECT VALUE FROM VWPMO_VALUES WHERE CONTROL_ID = {0} AND RECORD_ID = {1}", controlId, recordId) - ' Dim staticList As String = ClassDatabase.Execute_Scalar(SQL) - - ' If IsNothing(staticList) Then - ' Return Nothing - ' Else - ' Return staticList - ' End If - ' Catch ex As Exception - ' MsgBox("Error in CheckForStaticList: " & vbNewLine & ex.Message) - ' End Try - 'End Function - - 'Private Shared Function CheckForSqlCommand(controlId As Integer) As DataTable - ' Try - ' Dim SQL As String = String.Format("SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = {0}", controlId) - ' Dim SqlCommand As String = ClassDatabase.Execute_Scalar(SQL) - - ' If SqlCommand Is Nothing Or SqlCommand = String.Empty Then - ' Return Nothing - ' End If - - ' If SqlCommand.Contains("@") Then - ' SqlCommand = ReplaceSqlCommandPlaceholders(SqlCommand) - ' End If - - ' Return ClassDatabase.Return_Datatable(SqlCommand) - ' Catch ex As Exception - ' MsgBox("Error in CheckForSqlCommand: " & vbNewLine & ex.Message) - ' End Try - 'End Function - - 'Private Shared Function ReplaceSqlCommandPlaceholders(sqlCommand As String) - ' sqlCommand = sqlCommand.Replace("@RECORD_ID", CURRENT_RECORD_ID) - ' sqlCommand = sqlCommand.Replace("@RECORDID", CURRENT_RECORD_ID) - ' sqlCommand = sqlCommand.Replace("PARENTRECORD_ID", CURRENT_PARENTID) - ' sqlCommand = sqlCommand.Replace("PARENTRECORDID", CURRENT_PARENTID) - - ' Return sqlCommand - 'End Function #End Region - - 'Public Shared Sub LoadControlValues(RecordID As Integer, FormID As Integer, controls As Control.ControlCollection) - ' Try - ' Dim CONTROL_ID As Integer - - ' ClearControlValues(controls) - - ' For Each control As Control In controls - ' 'Überhaupt Columns in Grid? - ' CONTROL_ID = GetControlID_for_RecordID(control.Name, RecordID) - ' If CONTROL_ID = -1 Then - ' CONTROL_ID = GetControlID_for_Name(control.Name, FormID) - ' End If - ' If LogErrorsOnly = False Then ClassLogger.Add(">> CONTROL_ID:" & CONTROL_ID, False) - ' ClearControlValue(control) - ' If TypeOf control Is ComboBox Then - ' LoadControlValue_forControl(RecordID, FormID, DirectCast(control, ComboBox), CONTROL_ID) - ' 'LoadControlValues(RecordID, FormID, DirectCast(control, ComboBox).Controls) - ' ElseIf TypeOf control Is GroupBox Then - ' 'LoadControlValue_forControl(RecordID, FormID, DirectCast(control, GroupBox), CONTROL_ID) - ' LoadControlValues(RecordID, FormID, DirectCast(control, GroupBox).Controls) - ' ElseIf TypeOf control Is PictureBox Then - ' LoadImage(RecordID, CONTROL_ID, control) - ' Else - ' LoadControlValue(RecordID, CONTROL_ID, control) - ' End If - ' ''EINE CheckedListBoxControl - ' 'If TypeOf control Is DevExpress.XtraEditors.CheckedListBoxControl Then - ' ' If LogErrorsOnly = False Then ClassLogger.Add(">> control DevExpress.XtraEditors.CheckedListBoxControl", False) - ' ' Dim chklbx As DevExpress.XtraEditors.CheckedListBoxControl - ' ' chklbx = DirectCast(control, DevExpress.XtraEditors.CheckedListBoxControl) - - ' ' Dim chklbSql As String = "SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = " & CONTROL_ID - ' ' chklbSql = ClassDatabase.Execute_Scalar(chklbSql) - ' ' If Not (chklbSql Is Nothing Or chklbSql = String.Empty) Then - ' ' If chklbSql.ToString.Contains("@") Then - ' ' chklbSql = chklbSql.ToString.Replace("@RECORDID", CURRENT_RECORD_ID) - ' ' chklbSql = chklbSql.ToString.Replace("@RECORD_ID", CURRENT_RECORD_ID) - ' ' chklbSql = chklbSql.ToString.Replace("@PARENTRECORD_ID", CURRENT_PARENTID) - ' ' If LogErrorsOnly = False Then ClassLogger.Add(">> SQL CheckedListBox: " & chklbSql, False) - ' ' 'SQL-Command vorhanden also Ausführen des SQL - ' ' Dim DT_ListBox As DataTable = ClassDatabase.Return_Datatable(chklbSql, "LoadControlValues: CheckedListBox") - ' ' If DT_ListBox Is Nothing = False Then - ' ' chklbx.DataSource = DT_ListBox - ' ' Select Case DT_ListBox.Columns.Count - ' ' Case 2 - ' ' chklbx.DisplayMember = DT_ListBox.Columns(1).ColumnName - ' ' chklbx.ValueMember = DT_ListBox.Columns(0).ColumnName - ' ' Case 1 - ' ' chklbx.DisplayMember = DT_ListBox.Columns(0).ColumnName - ' ' chklbx.ValueMember = DT_ListBox.Columns(0).ColumnName - ' ' End Select - - ' ' End If - ' ' End If - - ' ' ElseIf (chklbSql = String.Empty) Then - ' ' ' Wenn keine SQL Command ein leerer String ist, - ' ' ' lade das Control ohne Datenbank, da es wahrscheinlich eine Static List ist - ' ' chklbSql = "SELECT VALUE FROM VWPMO_VALUES WHERE CONTROL_ID = " & CONTROL_ID & " AND RECORD_ID = " & RecordID - ' ' Dim result As String = ClassDatabase.Execute_Scalar(chklbSql) - - ' ' If Not IsNothing(result) Then - ' ' If result.ToString <> String.Empty Then - ' ' Dim entries() As String = result.Split(";") - ' ' For Each entry As String In entries - ' ' Dim position = chklbx.FindStringExact(entry) - ' ' chklbx.SetItemCheckState(position, CheckState.Checked) - ' ' Next - ' ' End If - ' ' End If - - ' ' Continue For - ' ' Else - ' ' If LogErrorsOnly = False Then ClassLogger.Add(">> chklbSql is nothing", False) - ' ' End If - - ' ' chklbx.UnCheckAll() - ' ' 'Recorddatensätze durchlaufen und überprüfen ob angehakt?? - ' ' 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 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 - ' ' chklbx.SetItemChecked(i, True) - ' ' End If - ' ' End If - - ' ' Next - ' 'ElseIf TypeOf control Is DevExpress.XtraEditors.ListBoxControl Then - ' ' If LogErrorsOnly = False Then ClassLogger.Add(">> control DevExpress.XtraEditors.ListBoxControl", False) - ' ' Dim lbx As DevExpress.XtraEditors.ListBoxControl - ' ' lbx = DirectCast(control, DevExpress.XtraEditors.ListBoxControl) - ' ' Dim lbSql As String = "SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = " & CONTROL_ID - ' ' lbSql = ClassDatabase.Execute_Scalar(lbSql) - ' ' If Not (lbSql Is Nothing Or lbSql = String.Empty) Then - ' ' If lbSql.ToString.Contains("@") Then - ' ' lbSql = lbSql.ToString.Replace("@RECORDID".ToUpper, CURRENT_RECORD_ID) - ' ' lbSql = lbSql.ToString.Replace("@RECORD_ID".ToUpper, CURRENT_RECORD_ID) - ' ' lbSql = lbSql.ToString.Replace("@PARENTRECORD_ID".ToUpper, CURRENT_PARENTID) - ' ' If LogErrorsOnly = False Then ClassLogger.Add(">> SQL ListBox: " & lbSql, False) - ' ' 'SQL-Command vorhanden also Ausführen des SQL - ' ' Dim DT_ListBox As DataTable = ClassDatabase.Return_Datatable(lbSql, "LoadControlValues: ListBoxControl") - ' ' If DT_ListBox Is Nothing = False Then - ' ' lbx.DataSource = DT_ListBox - ' ' Select Case DT_ListBox.Columns.Count - ' ' Case 2 - ' ' lbx.DisplayMember = DT_ListBox.Columns(1).ColumnName - ' ' lbx.ValueMember = DT_ListBox.Columns(0).ColumnName - ' ' Case 1 - ' ' lbx.DisplayMember = DT_ListBox.Columns(0).ColumnName - ' ' lbx.ValueMember = DT_ListBox.Columns(0).ColumnName - ' ' End Select - ' ' If DT_ListBox.Columns.Count > 1 Then - - ' ' End If - - ' ' Else - ' ' If LogErrorsOnly = False Then ClassLogger.Add(">> DT_ListBox is nothing", False) - ' ' End If - ' ' Else - ' ' If LogErrorsOnly = False Then ClassLogger.Add(">> lbSql.ToString NOT Contains(@)", False) - ' ' End If - ' ' ElseIf (lbSql = String.Empty) Then - ' ' ' Wenn keine SQL Command ein leerer String ist, - ' ' ' lade das Control ohne Datenbank, da es wahrscheinlich eine Static List ist - ' ' LoadControlValue(RecordID, CONTROL_ID, control) - ' ' Continue For - ' ' Else - ' ' If LogErrorsOnly = False Then ClassLogger.Add(">> lbSql is nothing", False) - ' ' End If - ' 'ElseIf CONTROL_ID <> -1 Then - ' ' 'If LogErrorsOnly = False Then ClassLogger.Add(">> LoadControlValues CONTROL_ID: " & CONTROL_ID, False) - ' ' LoadControlValue(RecordID, CONTROL_ID, control) - ' 'End If - ' Next - ' Catch ex As Exception - ' MsgBox("Unexpected Error in LoadControlValues:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) - ' End Try - - 'End Sub - 'Public Shared Sub LoadControlValue_forControl(RecordID As Integer, FormID As Integer, control As System.Windows.Forms.Control, CONTROL_ID As Integer) - ' Try - ' 'EINE CheckedListBoxControl - ' If TypeOf control Is DevExpress.XtraEditors.CheckedListBoxControl Then - ' If LogErrorsOnly = False Then ClassLogger.Add(">> control DevExpress.XtraEditors.CheckedListBoxControl", False) - ' Dim chklbx As DevExpress.XtraEditors.CheckedListBoxControl - ' chklbx = DirectCast(control, DevExpress.XtraEditors.CheckedListBoxControl) - - ' Dim chklbSql As String = "SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = " & CONTROL_ID - ' chklbSql = ClassDatabase.Execute_Scalar(chklbSql) - ' If Not (chklbSql Is Nothing Or chklbSql = String.Empty) Then - ' If chklbSql.ToString.Contains("@") Then - ' chklbSql = chklbSql.ToString.Replace("@RECORDID", CURRENT_RECORD_ID) - ' chklbSql = chklbSql.ToString.Replace("@RECORD_ID", CURRENT_RECORD_ID) - ' chklbSql = chklbSql.ToString.Replace("@PARENTRECORD_ID", CURRENT_PARENTID) - ' If LogErrorsOnly = False Then ClassLogger.Add(">> SQL CheckedListBox: " & chklbSql, False) - ' 'SQL-Command vorhanden also Ausführen des SQL - ' Dim DT_ListBox As DataTable = ClassDatabase.Return_Datatable(chklbSql, "LoadControlValue_forControl: CheckedListBox") - ' If DT_ListBox Is Nothing = False Then - ' chklbx.DataSource = DT_ListBox - ' Select Case DT_ListBox.Columns.Count - ' Case 2 - ' chklbx.DisplayMember = DT_ListBox.Columns(1).ColumnName - ' chklbx.ValueMember = DT_ListBox.Columns(0).ColumnName - ' Case 1 - ' chklbx.DisplayMember = DT_ListBox.Columns(0).ColumnName - ' chklbx.ValueMember = DT_ListBox.Columns(0).ColumnName - ' End Select - - ' End If - ' End If - ' ElseIf (chklbSql = String.Empty) Then - ' ' Wenn keine SQL Command ein leerer String ist, - ' ' lade das Control ohne Datenbank, da es wahrscheinlich eine Static List ist - ' chklbSql = "SELECT VALUE FROM VWPMO_VALUES WHERE CONTROL_ID = " & CONTROL_ID & " AND RECORD_ID = " & RecordID - ' Dim result As String = ClassDatabase.Execute_Scalar(chklbSql) - - ' If Not IsNothing(result) Then - ' If result.ToString <> String.Empty Then - ' Dim entries() As String = result.Split(";") - ' For Each entry As String In entries - ' Dim position = chklbx.FindStringExact(entry) - ' chklbx.SetItemCheckState(position, CheckState.Checked) - ' Next - ' End If - ' End If - ' Else - ' If LogErrorsOnly = False Then ClassLogger.Add(">> chklbSql is nothing", False) - ' End If - - ' chklbx.UnCheckAll() - ' 'Recorddatensätze durchlaufen und überprüfen ob angehakt?? - ' 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 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 - ' chklbx.SetItemChecked(i, True) - ' End If - ' End If - - ' Next - ' ElseIf TypeOf control Is DevExpress.XtraEditors.ListBoxControl Then - ' If LogErrorsOnly = False Then ClassLogger.Add(">> control DevExpress.XtraEditors.ListBoxControl", False) - ' Dim lbx As DevExpress.XtraEditors.ListBoxControl - ' lbx = DirectCast(control, DevExpress.XtraEditors.ListBoxControl) - ' Dim lbSql As String = "SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = " & CONTROL_ID - ' lbSql = ClassDatabase.Execute_Scalar(lbSql) - ' If Not (lbSql Is Nothing Or lbSql = String.Empty) Then - ' If lbSql.ToString.Contains("@") Then - ' lbSql = lbSql.ToString.Replace("@RECORDID".ToUpper, CURRENT_RECORD_ID) - ' lbSql = lbSql.ToString.Replace("@RECORD_ID".ToUpper, CURRENT_RECORD_ID) - ' lbSql = lbSql.ToString.Replace("@PARENTRECORD_ID".ToUpper, CURRENT_PARENTID) - ' If LogErrorsOnly = False Then ClassLogger.Add(">> SQL ListBox: " & lbSql, False) - ' 'SQL-Command vorhanden also Ausführen des SQL - ' Dim DT_ListBox As DataTable = ClassDatabase.Return_Datatable(lbSql, "LoadControlValue_forControl: ListBoxControl") - ' If DT_ListBox Is Nothing = False Then - ' lbx.DataSource = DT_ListBox - ' Select Case DT_ListBox.Columns.Count - ' Case 2 - ' lbx.DisplayMember = DT_ListBox.Columns(1).ColumnName - ' lbx.ValueMember = DT_ListBox.Columns(0).ColumnName - ' Case 1 - ' lbx.DisplayMember = DT_ListBox.Columns(0).ColumnName - ' lbx.ValueMember = DT_ListBox.Columns(0).ColumnName - ' End Select - ' If DT_ListBox.Columns.Count > 1 Then - - ' End If - - ' Else - ' If LogErrorsOnly = False Then ClassLogger.Add(">> DT_ListBox is nothing", False) - ' End If - ' Else - ' If LogErrorsOnly = False Then ClassLogger.Add(">> lbSql.ToString NOT Contains(@)", False) - ' End If - ' ElseIf (lbSql = String.Empty) Then - ' ' Wenn keine SQL Command ein leerer String ist, - ' ' lade das Control ohne Datenbank, da es wahrscheinlich eine Static List ist - ' LoadControlValue(RecordID, CONTROL_ID, control) - ' Else - ' If LogErrorsOnly = False Then ClassLogger.Add(">> lbSql is nothing", False) - ' End If - ' ElseIf CONTROL_ID <> -1 Then - ' 'If LogErrorsOnly = False Then ClassLogger.Add(">> LoadControlValue_forControl CONTROL_ID: " & CONTROL_ID, False) - ' LoadControlValue(RecordID, CONTROL_ID, control) - ' End If - - ' Catch ex As Exception - ' MsgBox("Unexpected Error in LoadControlValue_forControl:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) - ' End Try - - 'End Sub - - Public Shared Sub LoadControlValuesList(RecordID As Integer, FormID As Integer, controls As Control.ControlCollection) + Public Shared Sub LoadControlValuesList(RecordID As Integer, ParentRecordId As Integer, FormID As Integer, controls As Control.ControlCollection) Try If controls.Count = 0 Then MsgBox("Control.ControlCollection is unexpected empty!", MsgBoxStyle.Exclamation) @@ -683,7 +249,7 @@ Public Class ClassControlValues 'Dim DT_Combobox As DataTable = ClassDatabase.Return_Datatable(SQL2) ' Zuerst versuchen, DataTable aus dem Cache zu laden - Dim DT_Combobox As DataTable = ClassControlValueCache.LoadFromCache(FormID, controlId) + Dim DT_Combobox As DataTable = ClassControlValueCache.LoadFromCache(FormID, ControlId) ' Wenn DataTable nicht im Cache vorhanden, aus der Datenbank laden If IsNothing(DT_Combobox) Then DT_Combobox = ClassDatabase.Return_Datatable(SQL2) @@ -695,7 +261,7 @@ Public Class ClassControlValues Combobox.DisplayMember = DT_Combobox.Columns(1).ColumnName Combobox.ValueMember = DT_Combobox.Columns(0).ColumnName - ClassControlValueCache.SaveToCache(FormID, controlId, DT_Combobox) + ClassControlValueCache.SaveToCache(FormID, ControlId, DT_Combobox) End If Dim iWidestWidth As Integer = 300 @@ -714,8 +280,8 @@ Public Class ClassControlValues Combobox.DropDownWidth = Math.Max(iWidestWidth, Combobox.Width) End If - LoadControlValue(RecordID, ControlId, Ctrl) - 'LoadControlValueNeu(RecordID, ControlId, Ctrl, "") + 'LoadControlValue(RecordID, ControlId, Ctrl) + LoadControlValueNeu(RecordID, ParentRecordId, ControlId, Ctrl, "") End If swInner.Stop() @@ -759,6 +325,7 @@ Public Class ClassControlValues End If End Sub +#Region "ClearControlValue" Public Shared Sub ClearControlValues(controls As Control.ControlCollection) For Each control In controls If control.GetType().Name = "GroupBox" Then @@ -771,60 +338,58 @@ Public Class ClassControlValues End Sub Public Shared Sub ClearControlValue(control As Control) - Dim type = control.GetType().Name - - Select Case type - Case "TextBox" + Select Case control.GetType() + Case GetType(TextBox) DirectCast(control, TextBox).Text = String.Empty - Case "ComboBox" + + Case GetType(ComboBox) Dim combo As ComboBox = DirectCast(control, ComboBox) combo.SelectedIndex = -1 combo.Text = String.Empty - Case "CheckBox" + + Case GetType(CheckBox) DirectCast(control, CheckBox).Checked = False - Case "RadioButton" + + Case GetType(RadioButton) DirectCast(control, RadioButton).Checked = False - Case "DateEdit" + + Case GetType(DevExpress.XtraEditors.DateEdit) DirectCast(control, DevExpress.XtraEditors.DateEdit).DateTime = Now - Case "PictureBox" + + Case GetType(PictureBox) DirectCast(control, PictureBox).BackgroundImage = Nothing - Case "CheckedListBoxControl" + + Case GetType(DevExpress.XtraEditors.CheckedListBoxControl) Dim chklbx As DevExpress.XtraEditors.CheckedListBoxControl = DirectCast(control, DevExpress.XtraEditors.CheckedListBoxControl) - 'If IsNothing(chklbx.DataSource) Then chklbx.UnCheckAll() - 'End If - 'Case "ListBoxControl" - ' Dim lbx As DevExpress.XtraEditors.ListBoxControl - ' lbx = DirectCast(control, DevExpress.XtraEditors.ListBoxControl) - ' lbx.DataSource = Nothing - Case Else + + Case GetType(DevExpress.XtraEditors.ListBoxControl) + Dim lb As DevExpress.XtraEditors.ListBoxControl = DirectCast(control, DevExpress.XtraEditors.ListBoxControl) + lb.SelectedIndex = -1 End Select End Sub +#End Region +#Region "LoadDefaultValue" Public Shared Sub LoadDefaultValues(FormID As Integer, RecordID As Integer, controls As Control.ControlCollection) - Dim CONTROL_ID As Integer + '' Zuerst alle Controls leeren + 'ClearControlValues(controls) - ' Zuerst alle Controls leeren - ClearControlValues(controls) Dim i = 0 For Each control As Control In controls - CONTROL_ID = control.Tag ' GetControlID_for_Name(control.Name, FormID) + Dim CONTROL_ID = control.Tag ' GetControlID_for_Name(control.Name, FormID) If Not (TypeOf control Is Label) Then i += 1 End If + If TypeOf control Is GroupBox Then LoadDefaultValues(FormID, RecordID, DirectCast(control, GroupBox).Controls) - ElseIf TypeOf control Is DevExpress.XtraEditors.CheckedListBoxControl Then - Dim chklbx As DevExpress.XtraEditors.CheckedListBoxControl - chklbx = DirectCast(control, DevExpress.XtraEditors.CheckedListBoxControl) - chklbx.UnCheckAll() End If - If CONTROL_ID <> -1 Then - LoadDefaultValue(CONTROL_ID, RecordID, control) - End If + LoadDefaultValue(CONTROL_ID, RecordID, control) + 'Den Focus auf das erste Steuerelement setzen If i = 1 Then control.Focus() @@ -835,57 +400,64 @@ Public Class ClassControlValues Public Shared Sub LoadDefaultValue(ControlID As Integer, RecordID As Integer, control As Control) Try - Dim SQL = "SELECT * FROM VWPMO_CONTROL_SCREEN WHERE CONTROL_ID = " & ControlID - Dim DT As DataTable = ClassDatabase.Return_Datatable(SQL) - Dim result = DT.Rows(0).Item("CONTROL_DEF_VALUE") + Dim SQL = String.Format("SELECT CONTROL_DEF_VALUE FROM VWPMO_CONTROL_SCREEN WHERE CONTROL_ID = {0}", ControlID) + Dim autoValue = ClassDatabase.Execute_Scalar(SQL) - Select Case DT.Rows(0).Item("CTRLTYPE_ID") - Case 2 ' TextBox + 'Dim SQL = "SELECT * FROM VWPMO_CONTROL_SCREEN WHERE CONTROL_ID = " & ControlID + 'Dim DT As DataTable = ClassDatabase.Return_Datatable(SQL) + 'Dim result = DT.Rows(0).Item("CONTROL_DEF_VALUE") + + Select Case control.GetType() + Case GetType(TextBox) Dim textbox As TextBox = DirectCast(control, TextBox) - If IsDBNull(result) Then + If IsDBNull(autoValue) Then textbox.Text = "" Else - Dim vorgabe = result + Dim vorgabe = autoValue 'Wenn der Default Wert über einen Select kommt If vorgabe.ToString.ToLower.StartsWith("select") Then - vorgabe = result.Replace("@FORM_ID", CURRENT_FORM_ID) + vorgabe = autoValue.Replace("@FORM_ID", CURRENT_FORM_ID) vorgabe = vorgabe.Replace("@RECORD_ID", CURRENT_RECORD_ID) vorgabe = vorgabe.Replace("@RECORDID", CURRENT_RECORD_ID) vorgabe = vorgabe.Replace("@PARENTRECORD_ID", CURRENT_PARENTID) - result = ClassDatabase.Execute_Scalar(vorgabe.ToString, True) + autoValue = ClassDatabase.Execute_Scalar(vorgabe.ToString, True) If IsNothing(vorgabe) Then textbox.Text = "" End If End If - textbox.Text = result - + textbox.Text = autoValue End If - Case 10 ' CheckBox + + Case GetType(CheckBox) Dim checkbox As CheckBox = DirectCast(control, CheckBox) - checkbox.Checked = StrToBool(result) - Case 11 'RadioButton + checkbox.Checked = StrToBool(autoValue) + + Case GetType(RadioButton) Dim radio As RadioButton = DirectCast(control, RadioButton) - radio.Checked = StrToBool(result) - Case 3 ' ComboBox + radio.Checked = StrToBool(autoValue) + + Case GetType(ComboBox) Dim combobox As ComboBox = DirectCast(control, ComboBox) - If IsDBNull(result) Then + If IsDBNull(autoValue) Then combobox.SelectedIndex = -1 Else - combobox.SelectedIndex = combobox.FindStringExact(result) + combobox.SelectedIndex = combobox.FindStringExact(autoValue) End If - Case 4 'DateTimePicker + Case GetType(DevExpress.XtraEditors.DateEdit) Dim datepicker As DevExpress.XtraEditors.DateEdit = DirectCast(control, DevExpress.XtraEditors.DateEdit) - If IsDBNull(result) OrElse result = "" OrElse result = "False" Then - result = Now + If IsDBNull(autoValue) OrElse autoValue = "" OrElse autoValue = "False" Then + autoValue = Now End If - datepicker.DateTime = result + datepicker.DateTime = autoValue End Select - Catch ex As Exception MsgBox("Unexpected Error in LoadDefaultValue:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) End Try End Sub +#End Region + + Public Shared Function Get_Control_Value_for_ID(Control_ID As Integer, Record_ID As Integer) Try Return ClassDatabase.Execute_Scalar("SELECT VALUE FROM TBPMO_CONTROL_VALUE WHERE CONTROL_ID = " & Control_ID & " AND RECORD_ID = " & Record_ID, True) diff --git a/app/DD-Record-Organiser/ClassInit.vb b/app/DD-Record-Organiser/ClassInit.vb index fa68132..0c30a59 100644 --- a/app/DD-Record-Organiser/ClassInit.vb +++ b/app/DD-Record-Organiser/ClassInit.vb @@ -28,6 +28,8 @@ Public Class ClassInit If dbResult = False Then Throw New Exception("Find more information in the logfile.") End If + + Return True Catch ex As Exception MsgBox("Unexpected Error in Init Database:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) Return False diff --git a/app/DD-Record-Organiser/frmForm_Constructor.vb b/app/DD-Record-Organiser/frmForm_Constructor.vb index 00ab45d..8b914a4 100644 --- a/app/DD-Record-Organiser/frmForm_Constructor.vb +++ b/app/DD-Record-Organiser/frmForm_Constructor.vb @@ -1119,8 +1119,8 @@ Public Class frmForm_Constructor Load_Entity_Data_Only() Search_RowHandle(CURRENT_RECORD_ID) 'Die Daten auf dem Panel laden - ClassControlValues.LoadControlValuesNeu(CURRENT_RECORD_ID, CURRENT_FORM_ID, CtrlBuilder.AllControls) - ClassControlValues.LoadControlValuesList(CURRENT_RECORD_ID, CURRENT_FORM_ID, CtrlBuilder.AllControls) + ClassControlValues.LoadControlValuesNeu(CURRENT_RECORD_ID, CURRENT_PARENTID,CURRENT_FORM_ID, CtrlBuilder.AllControls) + ClassControlValues.LoadControlValuesList(CURRENT_RECORD_ID, CURRENT_PARENTID, CURRENT_FORM_ID, CtrlBuilder.AllControls) pnlDetails.Enabled = True End If Catch ex As Exception @@ -1645,8 +1645,8 @@ Public Class frmForm_Constructor If EDIT_STATE = "none" Then 'TabPageDetails.Text = "Detaileingabe zu '" & ACT_EBENE_STRING & "' - Record(" & SelectedRecordID & ")" 'Die Daten auf dem Panel laden - ClassControlValues.LoadControlValuesNeu(SelectedRecordID, CURRENT_FORM_ID, CtrlBuilder.AllControls) - ClassControlValues.LoadControlValuesList(SelectedRecordID, CURRENT_FORM_ID, CtrlBuilder.AllControls) + ClassControlValues.LoadControlValuesNeu(SelectedRecordID, CURRENT_PARENTID, CURRENT_FORM_ID, CtrlBuilder.AllControls) + ClassControlValues.LoadControlValuesList(SelectedRecordID, CURRENT_PARENTID, CURRENT_FORM_ID, CtrlBuilder.AllControls) 'Load_Control_Values(CtrlBuilder.AllControls) 'Refresh_Treeview_SelectedData() RECORD_CHANGED = False @@ -2361,8 +2361,8 @@ Public Class frmForm_Constructor Select Case TCDetails.SelectedTabPageIndex Case 0 If RECORD_NEEDS_REFRESH = True Then - ClassControlValues.LoadControlValuesNeu(SelectedRecordID, CURRENT_FORM_ID, CtrlBuilder.AllControls) - ClassControlValues.LoadControlValuesList(SelectedRecordID, CURRENT_FORM_ID, CtrlBuilder.AllControls) + ClassControlValues.LoadControlValuesNeu(SelectedRecordID, CURRENT_PARENTID, CURRENT_FORM_ID, CtrlBuilder.AllControls) + ClassControlValues.LoadControlValuesList(SelectedRecordID, CURRENT_PARENTID, CURRENT_FORM_ID, CtrlBuilder.AllControls) UpdRECORD_NEEDS_REFRESH(False) End If diff --git a/app/DD-Record-Organiser/frmForm_Constructor_Main.vb b/app/DD-Record-Organiser/frmForm_Constructor_Main.vb index 713daa5..6ddc4a3 100644 --- a/app/DD-Record-Organiser/frmForm_Constructor_Main.vb +++ b/app/DD-Record-Organiser/frmForm_Constructor_Main.vb @@ -822,7 +822,7 @@ Public Class frmForm_Constructor_Main Load_Entity_Data_Only() Get_Grid_Row_Handle(CURRENT_RECORD_ID) 'Die Daten auf dem Panel laden - ClassControlValues.LoadControlValuesNeu(CURRENT_RECORD_ID, CURRENT_FORM_ID, CtrlBuilder.AllControls) + ClassControlValues.LoadControlValuesNeu(CURRENT_RECORD_ID, CURRENT_PARENTID, CURRENT_FORM_ID, CtrlBuilder.AllControls) pnlDetails.Enabled = True End If @@ -859,7 +859,7 @@ Public Class frmForm_Constructor_Main Me.tsButtonEditMode.Text = "Bearbeiten beenden" 'Funktion zum Vollständigen load der Inhalte - ClassControlValues.LoadControlValuesList(SELECTED_RECORD_ID, CURRENT_FORM_ID, CtrlBuilder.AllControls) + ClassControlValues.LoadControlValuesList(SELECTED_RECORD_ID, CURRENT_PARENTID, CURRENT_FORM_ID, CtrlBuilder.AllControls) Else RECORD_ENABLED = False Me.pnlDetails.Enabled = False @@ -1521,7 +1521,7 @@ Public Class frmForm_Constructor_Main If EDIT_STATE = EditState.None Then 'TabPageDetails.Text = "Detaileingabe zu '" & ACT_EBENE_STRING & "' - Record(" & SelectedRecordID & ")" 'Die Daten auf dem Panel laden - ClassControlValues.LoadControlValuesNeu(SELECTED_RECORD_ID, CURRENT_FORM_ID, CtrlBuilder.AllControls) + ClassControlValues.LoadControlValuesNeu(SELECTED_RECORD_ID, CURRENT_PARENTID, CURRENT_FORM_ID, CtrlBuilder.AllControls) 'Load_Control_Values(CtrlBuilder.AllControls) 'Refresh_Treeview_SelectedData() RECORD_CHANGED = False diff --git a/app/DD-Record-Organiser/frmForm_Constructor_Main_2.Designer.vb b/app/DD-Record-Organiser/frmForm_Constructor_Main_2.Designer.vb index 712a1cf..a117c98 100644 --- a/app/DD-Record-Organiser/frmForm_Constructor_Main_2.Designer.vb +++ b/app/DD-Record-Organiser/frmForm_Constructor_Main_2.Designer.vb @@ -23,9 +23,9 @@ Partial Class frmForm_Constructor_Main_2 _ Private Sub InitializeComponent() Me.components = New System.ComponentModel.Container() - Dim GridLevelNode1 As DevExpress.XtraGrid.GridLevelNode = New DevExpress.XtraGrid.GridLevelNode() - Dim GridLevelNode2 As DevExpress.XtraGrid.GridLevelNode = New DevExpress.XtraGrid.GridLevelNode() - Dim GridLevelNode3 As DevExpress.XtraGrid.GridLevelNode = New DevExpress.XtraGrid.GridLevelNode() + Dim GridLevelNode4 As DevExpress.XtraGrid.GridLevelNode = New DevExpress.XtraGrid.GridLevelNode() + Dim GridLevelNode5 As DevExpress.XtraGrid.GridLevelNode = New DevExpress.XtraGrid.GridLevelNode() + Dim GridLevelNode6 As DevExpress.XtraGrid.GridLevelNode = New DevExpress.XtraGrid.GridLevelNode() Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmForm_Constructor_Main_2)) Me.grvwGrid = New DevExpress.XtraGrid.Views.Grid.GridView() Me.GridControlMain = New DevExpress.XtraGrid.GridControl() @@ -185,6 +185,7 @@ Partial Class frmForm_Constructor_Main_2 Me.grvwGrid.OptionsBehavior.CopyToClipboardWithColumnHeaders = False Me.grvwGrid.OptionsBehavior.Editable = False Me.grvwGrid.OptionsBehavior.ReadOnly = True + Me.grvwGrid.OptionsSelection.EnableAppearanceFocusedCell = False Me.grvwGrid.OptionsView.ColumnAutoWidth = False Me.grvwGrid.OptionsView.EnableAppearanceEvenRow = True Me.grvwGrid.OptionsView.EnableAppearanceOddRow = True @@ -196,12 +197,12 @@ Partial Class frmForm_Constructor_Main_2 Me.GridControlMain.ContextMenuStrip = Me.ContextMenuGrid Me.GridControlMain.Dock = System.Windows.Forms.DockStyle.Fill Me.GridControlMain.Font = New System.Drawing.Font("Tahoma", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - GridLevelNode1.LevelTemplate = Me.grvwGrid - GridLevelNode1.RelationName = "Level1" - GridLevelNode2.LevelTemplate = Me.grvwCarousel - GridLevelNode2.RelationName = "Level2" - GridLevelNode3.RelationName = "Level3" - Me.GridControlMain.LevelTree.Nodes.AddRange(New DevExpress.XtraGrid.GridLevelNode() {GridLevelNode1, GridLevelNode2, GridLevelNode3}) + GridLevelNode4.LevelTemplate = Me.grvwGrid + GridLevelNode4.RelationName = "Level1" + GridLevelNode5.LevelTemplate = Me.grvwCarousel + GridLevelNode5.RelationName = "Level2" + GridLevelNode6.RelationName = "Level3" + Me.GridControlMain.LevelTree.Nodes.AddRange(New DevExpress.XtraGrid.GridLevelNode() {GridLevelNode4, GridLevelNode5, GridLevelNode6}) Me.GridControlMain.Location = New System.Drawing.Point(0, 0) Me.GridControlMain.MainView = Me.grvwTiles Me.GridControlMain.Name = "GridControlMain" diff --git a/app/DD-Record-Organiser/frmForm_Constructor_Main_2.resx b/app/DD-Record-Organiser/frmForm_Constructor_Main_2.resx index 340772b..c29eb22 100644 --- a/app/DD-Record-Organiser/frmForm_Constructor_Main_2.resx +++ b/app/DD-Record-Organiser/frmForm_Constructor_Main_2.resx @@ -154,6 +154,23 @@ 17, 93 + + 1157, 15 + + + 124, 93 + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m + dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAASdEVYdFRpdGxlAExpc3Q7QnVsbGV0O1FzfzkAAABa + SURBVDhPY/j//z9FGEPAxsaGEYhBNF4MUw/TVADED0A0kkHMQMyCBbOCaHQDQJr/g2gkA0B8nBimDqYY + wwXEYqyCpGCsgqRgMEGxF6CaQYEzGogjMRD/MwAARTWKOO3Nn7MAAAAASUVORK5CYII= + + + + 773, 15 + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w @@ -245,17 +262,6 @@ 8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg== - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m - dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAASdEVYdFRpdGxlAExpc3Q7QnVsbGV0O1FzfzkAAABa - SURBVDhPY/j//z9FGEPAxsaGEYhBNF4MUw/TVADED0A0kkHMQMyCBbOCaHQDQJr/g2gkA0B8nBimDqYY - wwXEYqyCpGCsgqRgMEGxF6CaQYEzGogjMRD/MwAARTWKOO3Nn7MAAAAASUVORK5CYII= - - - - 773, 15 - 162, 11 diff --git a/app/DD-Record-Organiser/frmForm_Constructor_Main_2.vb b/app/DD-Record-Organiser/frmForm_Constructor_Main_2.vb index 990c023..c739359 100644 --- a/app/DD-Record-Organiser/frmForm_Constructor_Main_2.vb +++ b/app/DD-Record-Organiser/frmForm_Constructor_Main_2.vb @@ -999,7 +999,7 @@ Public Class frmForm_Constructor_Main_2 Lock_RecordControls(False) tsButtonShowWorkflowTasks.Enabled = True ClassControlValues.LoadDefaultValues(CURRENT_FORM_ID, SELECTED_RECORD_ID, pnlDetails.Controls) - ClassControlValues.LoadControlValuesList(SELECTED_RECORD_ID, CURRENT_FORM_ID, CtrlBuilder.AllControls) + 'ClassControlValues.LoadControlValuesList(SELECTED_RECORD_ID, CURRENT_FORM_ID, CtrlBuilder.AllControls) ' Im gegensatz zu EnableEditMode muss hier nur der save button enabled werden tsButtonSave.Enabled = True @@ -1197,7 +1197,7 @@ Public Class frmForm_Constructor_Main_2 Me.tsButtonSave.Enabled = True Me.tsButtonEditMode.Text = "Bearbeiten beenden" 'Funktion zum Vollständigen load der Inhalte - ClassControlValues.LoadControlValuesList(SELECTED_RECORD_ID, CURRENT_FORM_ID, CtrlBuilder.AllControls) + ClassControlValues.LoadControlValuesList(SELECTED_RECORD_ID, CURRENT_PARENTID, CURRENT_FORM_ID, CtrlBuilder.AllControls) RECORD_ENABLED = True pnlDetails.Focus() 'If RECORD_ENABLED = False Then @@ -1524,9 +1524,12 @@ Public Class frmForm_Constructor_Main_2 ' column.MinWidth = 100 'Next + ' Wenn rows existieren, erste row laden und recordid auslesen Dim firstRow As System.Data.DataRowView = GridControlMain.MainView.GetRow(0) - Dim firstRecordId As Integer = firstRow.Row.Item("Record-ID") - ClassControlValues.LoadControlValuesList(firstRecordId, CURRENT_FORM_ID, CtrlBuilder.MasterPanel.Controls) + If Not IsNothing(firstRow) Then + Dim firstRecordId As Integer = firstRow.Row.Item("Record-ID") + ClassControlValues.LoadControlValuesList(firstRecordId, CURRENT_PARENTID, CURRENT_FORM_ID, CtrlBuilder.MasterPanel.Controls) + End If 'Zurücksetzen ENTITY_LOADED = True @@ -1556,7 +1559,7 @@ Public Class frmForm_Constructor_Main_2 CURRENT_RECORD_ID = Grid_RecordID 'Daten zu Record in jedem Fall laden 'ClassControlValues.LoadControlValues(SELECTED_RECORD_ID, CURRENT_FORM_ID, CtrlBuilder.AllControls) - ClassControlValues.LoadControlValuesNeu(SELECTED_RECORD_ID, CURRENT_FORM_ID, CtrlBuilder.AllControls) + ClassControlValues.LoadControlValuesNeu(SELECTED_RECORD_ID, CURRENT_PARENTID, CURRENT_FORM_ID, CtrlBuilder.AllControls) ' Laden der Daten bedeutet nicht dass Daten vom Benutzer geändert wurden! RECORD_CHANGED = False Update_Record_Label(Grid_RecordID) @@ -1683,48 +1686,80 @@ Public Class frmForm_Constructor_Main_2 End Sub Sub Lock_RecordControls(state As Boolean) - For Each Control As System.Windows.Forms.Control In pnlDetails.Controls - If (Control.GetType() Is GetType(TextBox)) Then - Dim txt As TextBox = CType(Control, TextBox) - txt.ReadOnly = state - End If - If (Control.GetType() Is GetType(System.Windows.Forms.ComboBox)) Then - Dim cbobx As System.Windows.Forms.ComboBox = CType(Control, System.Windows.Forms.ComboBox) - If state = True Then - cbobx.Enabled = False - Else - cbobx.Enabled = True - End If - End If - If (Control.GetType() Is GetType(DevExpress.XtraEditors.DateEdit)) Then - Dim dtp As DevExpress.XtraEditors.DateEdit = CType(Control, DevExpress.XtraEditors.DateEdit) - If state = True Then - dtp.Enabled = False - Else - dtp.Enabled = True - End If + Lock_Record_Controls_Recursive(state, pnlDetails.Controls) + End Sub - End If - If (Control.GetType() Is GetType(DevExpress.XtraEditors.CheckedListBoxControl)) Then - Dim chlb As DevExpress.XtraEditors.CheckedListBoxControl = CType(Control, DevExpress.XtraEditors.CheckedListBoxControl) - If state = True Then - chlb.Enabled = False - Else - chlb.Enabled = True - End If + Sub Lock_Record_Controls_Recursive(state As Boolean, controls As System.Windows.Forms.Control.ControlCollection) + For Each Control As System.Windows.Forms.Control In controls - End If - If (Control.GetType() Is GetType(Button)) Then - Dim btn As Button = CType(Control, Button) - If state = True Then - btn.Enabled = False - Else - btn.Enabled = True - End If - End If + Select Case Control.GetType() + Case GetType(Windows.Forms.GroupBox) + Lock_Record_Controls_Recursive(state, DirectCast(Control, GroupBox).Controls) + + Case GetType(Windows.Forms.TextBox) + Dim txt As TextBox = CType(Control, TextBox) + txt.ReadOnly = state + + Case GetType(Windows.Forms.CheckBox) + Dim chk As CheckBox = CType(Control, CheckBox) + If state = True Then + chk.Enabled = False + Else + chk.Enabled = True + End If + + Case GetType(Windows.Forms.RadioButton) + Dim rb As RadioButton = CType(Control, RadioButton) + If state = True Then + rb.Enabled = False + Else + rb.Enabled = True + End If + + Case GetType(Windows.Forms.ComboBox) + Dim cbobx As System.Windows.Forms.ComboBox = CType(Control, System.Windows.Forms.ComboBox) + If state = True Then + cbobx.Enabled = False + Else + cbobx.Enabled = True + End If + + Case GetType(DevExpress.XtraEditors.DateEdit) + Dim dtp As DevExpress.XtraEditors.DateEdit = CType(Control, DevExpress.XtraEditors.DateEdit) + If state = True Then + dtp.Enabled = False + Else + dtp.Enabled = True + End If + + 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 GetType(DevExpress.XtraEditors.ListBoxControl) + Dim lb As DevExpress.XtraEditors.ListBoxControl = CType(Control, DevExpress.XtraEditors.ListBoxControl) + If state = True Then + lb.Enabled = False + Else + lb.Enabled = True + End If + + Case GetType(Windows.Forms.Button) + Dim btn As Button = CType(Control, Button) + If state = True Then + btn.Enabled = False + Else + btn.Enabled = True + End If + End Select Next End Sub + Private Sub Check_Record_Changed() If EDIT_STATE <> EditState.None Then Update_Status_Label(False, "") @@ -2034,7 +2069,7 @@ Public Class frmForm_Constructor_Main_2 If TCDetails.SelectedTabPage.Text.StartsWith("Detail") Or TCDetails.SelectedTabPage.Text.StartsWith("Kopf") Then 'Daten zu Record in jedem Fall laden 'ClassControlValues.LoadControlValues(SELECTED_RECORD_ID, CURRENT_FORM_ID, CtrlBuilder.AllControls) - ClassControlValues.LoadControlValuesNeu(SELECTED_RECORD_ID, CURRENT_FORM_ID, CtrlBuilder.AllControls) + ClassControlValues.LoadControlValuesNeu(SELECTED_RECORD_ID, CURRENT_PARENTID, CURRENT_FORM_ID, CtrlBuilder.AllControls) End If If TCDetails.SelectedTabPage.Text.ToLower.StartsWith("wieder") Then tsButtonEditMode.Enabled = False diff --git a/app/DD-Record-Organiser/frmForm_Input.vb b/app/DD-Record-Organiser/frmForm_Input.vb index 131f17c..c2933aa 100644 --- a/app/DD-Record-Organiser/frmForm_Input.vb +++ b/app/DD-Record-Organiser/frmForm_Input.vb @@ -409,7 +409,7 @@ Public Class frmFormInput ' SelectedFormID = RowView.Item(1) RefreshRecordByID(SelectedRecordID) - ClassControlValues.LoadControlValuesNeu(SelectedRecordID, thisformid, pnlView.Controls) + ClassControlValues.LoadControlValuesNeu(SelectedRecordID, CURRENT_PARENTID, thisformid, pnlView.Controls) End If load_Documents() End If From 2f988053d001d084c87d1af33f57d595556dc3a1 Mon Sep 17 00:00:00 2001 From: JenneJ Date: Wed, 6 Jan 2016 15:28:06 +0100 Subject: [PATCH 4/4] jj_06_01_16 --- 3rdparty/lib/Commandline/CommandLine.dll | Bin 0 -> 58368 bytes app/DD-Record-Organiser/ApplicationEvents.vb | 6 +- app/DD-Record-Organiser/ClassJumpRecord.vb | 62 ++++++++++++++++ .../DD-Record-Organiser.vbproj | 4 + .../ModuleHelperMethods.vb | 23 ++---- .../My Project/AssemblyInfo.vb | 2 +- .../frmCustomAppointment.vb | 2 +- .../frmForm_Constructor_Main_2.Designer.vb | 49 ++++++------ .../frmForm_Constructor_Main_2.resx | 28 +++---- .../frmForm_Constructor_Main_2.vb | 10 +-- app/DD-Record-Organiser/frmMain.Designer.vb | 17 +---- app/DD-Record-Organiser/frmMain.vb | 70 ++++++++---------- app/SetupWiX/Product.wxs | 10 ++- 13 files changed, 163 insertions(+), 120 deletions(-) create mode 100644 3rdparty/lib/Commandline/CommandLine.dll create mode 100644 app/DD-Record-Organiser/ClassJumpRecord.vb diff --git a/3rdparty/lib/Commandline/CommandLine.dll b/3rdparty/lib/Commandline/CommandLine.dll new file mode 100644 index 0000000000000000000000000000000000000000..d5497ef2957ad975b8f5030a14285901e6dceac4 GIT binary patch literal 58368 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 eVN8LaKmU85Iqidkx&xe0sIPgEc>C)Q( literal 0 HcmV?d00001 diff --git a/app/DD-Record-Organiser/ApplicationEvents.vb b/app/DD-Record-Organiser/ApplicationEvents.vb index 37d74c5..ac89f5a 100644 --- a/app/DD-Record-Organiser/ApplicationEvents.vb +++ b/app/DD-Record-Organiser/ApplicationEvents.vb @@ -8,9 +8,9 @@ ' StartupNextInstance: Wird beim Starten einer Einzelinstanzanwendung ausgelöst, wenn diese bereits aktiv ist. ' NetworkAvailabilityChanged: Wird beim Herstellen oder Trennen der Netzwerkverbindung ausgelöst. Partial Friend Class MyApplication - - - + Private Sub MyApplication_StartupNextInstance(sender As Object, e As ApplicationServices.StartupNextInstanceEventArgs) Handles Me.StartupNextInstance + ClassJumpRecord.ParseArgs() + End Sub End Class End Namespace \ No newline at end of file diff --git a/app/DD-Record-Organiser/ClassJumpRecord.vb b/app/DD-Record-Organiser/ClassJumpRecord.vb new file mode 100644 index 0000000..b29d180 --- /dev/null +++ b/app/DD-Record-Organiser/ClassJumpRecord.vb @@ -0,0 +1,62 @@ +Imports CommandLine +Imports CommandLine.Text +Imports System.Text.RegularExpressions + +Public Class ClassJumpRecord + Private Shared ProtocolRegex As New Regex("pmo://(?\d+)-(?\d+)") + 'Aufruf: PMO.exe --data pmo://10-60 + + Class Options + <[Option]("d", "data")> + Public Property data As String + End Class + + Public Shared Sub ParseArgs() + Try + Dim args() As String = Environment.GetCommandLineArgs() + Dim options As New Options() + Dim constructorId As Integer + Dim recordId As Integer + + If args.Length <> 3 Then + Exit Sub + End If + + If (Parser.Default.ParseArguments(args, options)) Then + Dim data As String = options.data + Dim match = ProtocolRegex.Match(data) + + If Not match.Success Then + Exit Sub + End If + + constructorId = match.Groups("constructorId").Value + recordId = match.Groups("recordId").Value + + JumpToRecord(constructorId, recordId) + Else + Exit Sub + End If + Catch ex As Exception + MsgBox("Error in ParseArgs:" & vbNewLine & ex.Message) + Exit Sub + End Try + End Sub + + Private Shared Sub JumpToRecord(constructorId As Integer, recordId As Integer) + Try + Dim constructorIdExists As Boolean = ClassDatabase.Execute_Scalar(String.Format("SELECT CONSTRUCT_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {0}", constructorId)) + Dim recordIdExists As Boolean = ClassDatabase.Execute_Scalar(String.Format("SELECT GUID FROM TBPMO_RECORD WHERE GUID = {0}", recordId)) + + If constructorIdExists = False Or recordIdExists = False Then + MsgBox("Das angegebene Formular konnte nicht geöffnet werden. Grund: Die ConstructorID oder die RecordID wurde nicht gefunden." & vbNewLine & "constructorId: " & constructorId & ", recordId: " & recordId, MsgBoxStyle.Exclamation, "URL Handler") + Exit Sub + End If + + OpenFormConstructor(constructorId, recordId) + Catch ex As Exception + MsgBox("Error in JumpToRecord:" & vbNewLine & ex.Message) + Exit Sub + End Try + End Sub +End Class diff --git a/app/DD-Record-Organiser/DD-Record-Organiser.vbproj b/app/DD-Record-Organiser/DD-Record-Organiser.vbproj index a1216d5..b97f866 100644 --- a/app/DD-Record-Organiser/DD-Record-Organiser.vbproj +++ b/app/DD-Record-Organiser/DD-Record-Organiser.vbproj @@ -78,6 +78,9 @@ ..\..\3rdparty\lib\Windream\AxInterop.OBJECTLISTCONTROLLib.dll True + + ..\..\3rdparty\lib\Commandline\CommandLine.dll + False True @@ -245,6 +248,7 @@ + frmAbout.vb diff --git a/app/DD-Record-Organiser/ModuleHelperMethods.vb b/app/DD-Record-Organiser/ModuleHelperMethods.vb index 39f3acf..6bc034e 100644 --- a/app/DD-Record-Organiser/ModuleHelperMethods.vb +++ b/app/DD-Record-Organiser/ModuleHelperMethods.vb @@ -211,23 +211,8 @@ frm3.Show() End Sub - Public Sub OpenFormConstructor(id As Integer) - CURRENT_CONSTRUCTOR_ID = id - Dim frm As New frmForm_Constructor() - Dim activeChild As Form = MAIN_FORM.ActiveMdiChild - If activeChild IsNot Nothing Then - activeChild.WindowState = FormWindowState.Normal - End If - - frm.MdiParent = MAIN_FORM - frm.Show() - ' frm = frmForm_Constructor.Instance() - - End Sub - - ' TODO: NUR FÜR WINDREAM CON!!! - Public Sub OpenFormConstructorDemo(id As Integer) + Public Sub OpenFormConstructor(id As Integer, Optional recordId As Integer = -1) Try CURRENT_CONSTRUCTOR_ID = id Dim frm As New frmForm_Constructor_Main_2() @@ -238,6 +223,11 @@ activeChild.WindowState = FormWindowState.Normal End If + If recordId <> -1 Then + ' Wenn JUMP_RECORD_ID gesetzt wurde, wird zu diesem Record gesprungen + JUMP_RECORD_ID = recordId + End If + frm.MdiParent = MAIN_FORM frm.Show() Catch ex As Exception @@ -245,7 +235,6 @@ MsgBox("Fehler beim Laden des Formulars, bitte erneut versuchen") End Try End Sub - ' TODO: NUR FÜR WINDREAM CON!!! Public Sub OpenTaskmanagement() Dim frm As New frmTaskmanagement diff --git a/app/DD-Record-Organiser/My Project/AssemblyInfo.vb b/app/DD-Record-Organiser/My Project/AssemblyInfo.vb index d8f6a6c..18566a4 100644 --- a/app/DD-Record-Organiser/My Project/AssemblyInfo.vb +++ b/app/DD-Record-Organiser/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - + diff --git a/app/DD-Record-Organiser/frmCustomAppointment.vb b/app/DD-Record-Organiser/frmCustomAppointment.vb index 39f72b4..c4d3a38 100644 --- a/app/DD-Record-Organiser/frmCustomAppointment.vb +++ b/app/DD-Record-Organiser/frmCustomAppointment.vb @@ -100,7 +100,7 @@ Partial Public Class frmCustomAppointment ' TODO: FormId und ConstructId herausfinden - OpenFormConstructorDemo(constructId) + OpenFormConstructor(constructId) Me.Close() End If End Sub diff --git a/app/DD-Record-Organiser/frmForm_Constructor_Main_2.Designer.vb b/app/DD-Record-Organiser/frmForm_Constructor_Main_2.Designer.vb index a117c98..8e4f7b9 100644 --- a/app/DD-Record-Organiser/frmForm_Constructor_Main_2.Designer.vb +++ b/app/DD-Record-Organiser/frmForm_Constructor_Main_2.Designer.vb @@ -23,9 +23,9 @@ Partial Class frmForm_Constructor_Main_2 _ Private Sub InitializeComponent() Me.components = New System.ComponentModel.Container() - Dim GridLevelNode4 As DevExpress.XtraGrid.GridLevelNode = New DevExpress.XtraGrid.GridLevelNode() - Dim GridLevelNode5 As DevExpress.XtraGrid.GridLevelNode = New DevExpress.XtraGrid.GridLevelNode() - Dim GridLevelNode6 As DevExpress.XtraGrid.GridLevelNode = New DevExpress.XtraGrid.GridLevelNode() + Dim GridLevelNode1 As DevExpress.XtraGrid.GridLevelNode = New DevExpress.XtraGrid.GridLevelNode() + Dim GridLevelNode2 As DevExpress.XtraGrid.GridLevelNode = New DevExpress.XtraGrid.GridLevelNode() + Dim GridLevelNode3 As DevExpress.XtraGrid.GridLevelNode = New DevExpress.XtraGrid.GridLevelNode() Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmForm_Constructor_Main_2)) Me.grvwGrid = New DevExpress.XtraGrid.Views.Grid.GridView() Me.GridControlMain = New DevExpress.XtraGrid.GridControl() @@ -175,6 +175,7 @@ Partial Class frmForm_Constructor_Main_2 ' Me.grvwGrid.Appearance.EvenRow.BackColor = System.Drawing.Color.Aqua Me.grvwGrid.Appearance.EvenRow.Options.UseBackColor = True + Me.grvwGrid.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.None Me.grvwGrid.GridControl = Me.GridControlMain Me.grvwGrid.GroupPanelText = "Ziehen Sie Spaltenüberschriften in diesen Bereich um nach diesen gruppieren zu la" & _ "ssen" @@ -186,6 +187,8 @@ Partial Class frmForm_Constructor_Main_2 Me.grvwGrid.OptionsBehavior.Editable = False Me.grvwGrid.OptionsBehavior.ReadOnly = True Me.grvwGrid.OptionsSelection.EnableAppearanceFocusedCell = False + Me.grvwGrid.OptionsSelection.EnableAppearanceFocusedRow = False + Me.grvwGrid.OptionsSelection.EnableAppearanceHideSelection = False Me.grvwGrid.OptionsView.ColumnAutoWidth = False Me.grvwGrid.OptionsView.EnableAppearanceEvenRow = True Me.grvwGrid.OptionsView.EnableAppearanceOddRow = True @@ -197,16 +200,16 @@ Partial Class frmForm_Constructor_Main_2 Me.GridControlMain.ContextMenuStrip = Me.ContextMenuGrid Me.GridControlMain.Dock = System.Windows.Forms.DockStyle.Fill Me.GridControlMain.Font = New System.Drawing.Font("Tahoma", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - GridLevelNode4.LevelTemplate = Me.grvwGrid - GridLevelNode4.RelationName = "Level1" - GridLevelNode5.LevelTemplate = Me.grvwCarousel - GridLevelNode5.RelationName = "Level2" - GridLevelNode6.RelationName = "Level3" - Me.GridControlMain.LevelTree.Nodes.AddRange(New DevExpress.XtraGrid.GridLevelNode() {GridLevelNode4, GridLevelNode5, GridLevelNode6}) + GridLevelNode1.LevelTemplate = Me.grvwGrid + GridLevelNode1.RelationName = "Level1" + GridLevelNode2.LevelTemplate = Me.grvwCarousel + GridLevelNode2.RelationName = "Level2" + GridLevelNode3.RelationName = "Level3" + Me.GridControlMain.LevelTree.Nodes.AddRange(New DevExpress.XtraGrid.GridLevelNode() {GridLevelNode1, GridLevelNode2, GridLevelNode3}) Me.GridControlMain.Location = New System.Drawing.Point(0, 0) Me.GridControlMain.MainView = Me.grvwTiles Me.GridControlMain.Name = "GridControlMain" - Me.GridControlMain.Size = New System.Drawing.Size(788, 270) + Me.GridControlMain.Size = New System.Drawing.Size(795, 270) Me.GridControlMain.TabIndex = 0 Me.GridControlMain.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.grvwCarousel, Me.grvwTiles, Me.grvwGrid}) ' @@ -461,7 +464,7 @@ Partial Class frmForm_Constructor_Main_2 Me.SplitContainerBottom.Panel1.Text = "Panel1" Me.SplitContainerBottom.Panel2.Controls.Add(Me.Panel2) Me.SplitContainerBottom.Panel2.Text = "Panel2" - Me.SplitContainerBottom.Size = New System.Drawing.Size(1083, 365) + Me.SplitContainerBottom.Size = New System.Drawing.Size(1083, 372) Me.SplitContainerBottom.SplitterPosition = 576 Me.SplitContainerBottom.TabIndex = 0 Me.SplitContainerBottom.Text = "SplitContainerControl1" @@ -477,7 +480,7 @@ Partial Class frmForm_Constructor_Main_2 Me.TCDetails.Location = New System.Drawing.Point(0, 25) Me.TCDetails.Name = "TCDetails" Me.TCDetails.SelectedTabPage = Me.TabDetails - Me.TCDetails.Size = New System.Drawing.Size(1071, 340) + Me.TCDetails.Size = New System.Drawing.Size(1078, 347) Me.TCDetails.TabIndex = 1 Me.TCDetails.TabPages.AddRange(New DevExpress.XtraTab.XtraTabPage() {Me.TabDetails, Me.TabWindream, Me.TabFollowUp, Me.TabPos}) ' @@ -486,7 +489,7 @@ Partial Class frmForm_Constructor_Main_2 Me.TabDetails.Controls.Add(Me.pnlDetails) Me.TabDetails.Image = Global.DD_Record_Organiser.My.Resources.Resources.grid_Data_16xMD Me.TabDetails.Name = "TabDetails" - Me.TabDetails.Size = New System.Drawing.Size(1069, 312) + Me.TabDetails.Size = New System.Drawing.Size(1072, 316) Me.TabDetails.Text = "Detailansicht" ' 'pnlDetails @@ -495,7 +498,7 @@ Partial Class frmForm_Constructor_Main_2 Me.pnlDetails.Dock = System.Windows.Forms.DockStyle.Fill Me.pnlDetails.Location = New System.Drawing.Point(0, 0) Me.pnlDetails.Name = "pnlDetails" - Me.pnlDetails.Size = New System.Drawing.Size(1069, 312) + Me.pnlDetails.Size = New System.Drawing.Size(1072, 316) Me.pnlDetails.TabIndex = 0 ' 'TabWindream @@ -504,7 +507,7 @@ Partial Class frmForm_Constructor_Main_2 Me.TabWindream.Controls.Add(Me.ToolStripDokumente) Me.TabWindream.Image = Global.DD_Record_Organiser.My.Resources.Resources.Files_7954 Me.TabWindream.Name = "TabWindream" - Me.TabWindream.Size = New System.Drawing.Size(1069, 312) + Me.TabWindream.Size = New System.Drawing.Size(1072, 316) Me.TabWindream.Text = "windream-Dateien" ' 'AxObjectListControl @@ -515,7 +518,7 @@ Partial Class frmForm_Constructor_Main_2 Me.AxObjectListControl.Location = New System.Drawing.Point(0, 25) Me.AxObjectListControl.Name = "AxObjectListControl" Me.AxObjectListControl.OcxState = CType(resources.GetObject("AxObjectListControl.OcxState"), System.Windows.Forms.AxHost.State) - Me.AxObjectListControl.Size = New System.Drawing.Size(1069, 287) + Me.AxObjectListControl.Size = New System.Drawing.Size(1072, 291) Me.AxObjectListControl.TabIndex = 6 Me.AxObjectListControl.TabStop = False ' @@ -525,7 +528,7 @@ Partial Class frmForm_Constructor_Main_2 Me.ToolStripDokumente.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.tslblWindreamView, Me.ToolStripDropDownButton2}) Me.ToolStripDokumente.Location = New System.Drawing.Point(0, 0) Me.ToolStripDokumente.Name = "ToolStripDokumente" - Me.ToolStripDokumente.Size = New System.Drawing.Size(1069, 25) + Me.ToolStripDokumente.Size = New System.Drawing.Size(1072, 25) Me.ToolStripDokumente.TabIndex = 2 Me.ToolStripDokumente.Text = "ToolStrip2" ' @@ -559,7 +562,7 @@ Partial Class frmForm_Constructor_Main_2 Me.TabFollowUp.Controls.Add(Me.Label5) Me.TabFollowUp.Image = Global.DD_Record_Organiser.My.Resources.Resources.Task_16xMD Me.TabFollowUp.Name = "TabFollowUp" - Me.TabFollowUp.Size = New System.Drawing.Size(1069, 312) + Me.TabFollowUp.Size = New System.Drawing.Size(1072, 316) Me.TabFollowUp.Text = "Wiedervorlage" ' 'ListViewFollowUps @@ -738,7 +741,7 @@ Partial Class frmForm_Constructor_Main_2 Me.TabPos.Image = CType(resources.GetObject("TabPos.Image"), System.Drawing.Image) Me.TabPos.Name = "TabPos" Me.TabPos.PageVisible = False - Me.TabPos.Size = New System.Drawing.Size(1069, 312) + Me.TabPos.Size = New System.Drawing.Size(1072, 316) Me.TabPos.Text = "Positionen" ' 'Panel1 @@ -747,7 +750,7 @@ Partial Class frmForm_Constructor_Main_2 Me.Panel1.Dock = System.Windows.Forms.DockStyle.Fill Me.Panel1.Location = New System.Drawing.Point(0, 25) Me.Panel1.Name = "Panel1" - Me.Panel1.Size = New System.Drawing.Size(1069, 287) + Me.Panel1.Size = New System.Drawing.Size(1072, 291) Me.Panel1.TabIndex = 2 ' 'GridControlPos @@ -756,7 +759,7 @@ Partial Class frmForm_Constructor_Main_2 Me.GridControlPos.Location = New System.Drawing.Point(0, 0) Me.GridControlPos.MainView = Me.grvwGridPos Me.GridControlPos.Name = "GridControlPos" - Me.GridControlPos.Size = New System.Drawing.Size(1069, 287) + Me.GridControlPos.Size = New System.Drawing.Size(1072, 291) Me.GridControlPos.TabIndex = 0 Me.GridControlPos.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.grvwGridPos}) ' @@ -783,7 +786,7 @@ Partial Class frmForm_Constructor_Main_2 Me.BindingNavigatorPOS.MovePreviousItem = Me.BindingNavigatorMovePreviousItem Me.BindingNavigatorPOS.Name = "BindingNavigatorPOS" Me.BindingNavigatorPOS.PositionItem = Me.BindingNavigatorPositionItem - Me.BindingNavigatorPOS.Size = New System.Drawing.Size(1069, 25) + Me.BindingNavigatorPOS.Size = New System.Drawing.Size(1072, 25) Me.BindingNavigatorPOS.TabIndex = 1 Me.BindingNavigatorPOS.Text = "BindingNavigator1" ' @@ -878,7 +881,7 @@ Partial Class frmForm_Constructor_Main_2 Me.ToolStripEdit.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.tsButtonAdd, Me.tsButtonSave, Me.tsButtonDelete, Me.tsButtonEditMode, Me.ToolStripDropDownButton1, Me.tsButtonShowTaskOverview, Me.tsButtonShowWorkflowTasks}) Me.ToolStripEdit.Location = New System.Drawing.Point(0, 0) Me.ToolStripEdit.Name = "ToolStripEdit" - Me.ToolStripEdit.Size = New System.Drawing.Size(1071, 25) + Me.ToolStripEdit.Size = New System.Drawing.Size(1078, 25) Me.ToolStripEdit.TabIndex = 0 Me.ToolStripEdit.Text = "ToolStrip1" ' diff --git a/app/DD-Record-Organiser/frmForm_Constructor_Main_2.resx b/app/DD-Record-Organiser/frmForm_Constructor_Main_2.resx index c29eb22..340772b 100644 --- a/app/DD-Record-Organiser/frmForm_Constructor_Main_2.resx +++ b/app/DD-Record-Organiser/frmForm_Constructor_Main_2.resx @@ -154,23 +154,6 @@ 17, 93 - - 1157, 15 - - - 124, 93 - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m - dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAASdEVYdFRpdGxlAExpc3Q7QnVsbGV0O1FzfzkAAABa - SURBVDhPY/j//z9FGEPAxsaGEYhBNF4MUw/TVADED0A0kkHMQMyCBbOCaHQDQJr/g2gkA0B8nBimDqYY - wwXEYqyCpGCsgqRgMEGxF6CaQYEzGogjMRD/MwAARTWKOO3Nn7MAAAAASUVORK5CYII= - - - - 773, 15 - AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w @@ -262,6 +245,17 @@ 8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg== + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m + dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAASdEVYdFRpdGxlAExpc3Q7QnVsbGV0O1FzfzkAAABa + SURBVDhPY/j//z9FGEPAxsaGEYhBNF4MUw/TVADED0A0kkHMQMyCBbOCaHQDQJr/g2gkA0B8nBimDqYY + wwXEYqyCpGCsgqRgMEGxF6CaQYEzGogjMRD/MwAARTWKOO3Nn7MAAAAASUVORK5CYII= + + + + 773, 15 + 162, 11 diff --git a/app/DD-Record-Organiser/frmForm_Constructor_Main_2.vb b/app/DD-Record-Organiser/frmForm_Constructor_Main_2.vb index c739359..8968e2f 100644 --- a/app/DD-Record-Organiser/frmForm_Constructor_Main_2.vb +++ b/app/DD-Record-Organiser/frmForm_Constructor_Main_2.vb @@ -612,11 +612,11 @@ Public Class frmForm_Constructor_Main_2 If GRID_TYPE = GridType.Grid Then If IsTopFirstRow Then IsTopFirstRow = False - grvwGrid.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus - grvwGrid.OptionsBehavior.Editable = Not IsTopFirstRow - grvwGrid.OptionsSelection.EnableAppearanceFocusedCell = Not IsTopFirstRow - grvwGrid.OptionsSelection.EnableAppearanceFocusedRow = Not IsTopFirstRow - grvwGrid.OptionsSelection.EnableAppearanceHideSelection = Not IsTopFirstRow + 'grvwGrid.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus + 'grvwGrid.OptionsBehavior.Editable = Not IsTopFirstRow + 'grvwGrid.OptionsSelection.EnableAppearanceFocusedCell = Not IsTopFirstRow + 'grvwGrid.OptionsSelection.EnableAppearanceFocusedRow = Not IsTopFirstRow + 'grvwGrid.OptionsSelection.EnableAppearanceHideSelection = Not IsTopFirstRow End If ElseIf GRID_TYPE = GridType.Carousel Then If IsTopFirstRow Then diff --git a/app/DD-Record-Organiser/frmMain.Designer.vb b/app/DD-Record-Organiser/frmMain.Designer.vb index 845b0b0..c3221e0 100644 --- a/app/DD-Record-Organiser/frmMain.Designer.vb +++ b/app/DD-Record-Organiser/frmMain.Designer.vb @@ -58,7 +58,6 @@ Partial Class frmMain Me.pageHome = New DevExpress.XtraBars.Ribbon.RibbonPage() Me.RibbonPageGroup2 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.groupQuickAccess = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() - Me.groupQuickAccessDemo = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.pageForms = New DevExpress.XtraBars.Ribbon.RibbonPage() Me.pageAdmin = New DevExpress.XtraBars.Ribbon.RibbonPage() Me.RibbonPageGroupProgram = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() @@ -341,7 +340,7 @@ Partial Class frmMain ' 'pageHome ' - Me.pageHome.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup2, Me.groupQuickAccess, Me.groupQuickAccessDemo}) + Me.pageHome.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup2, Me.groupQuickAccess}) Me.pageHome.Image = Global.DD_Record_Organiser.My.Resources.Resources.HomeHS Me.pageHome.Name = "pageHome" Me.pageHome.Text = "Home" @@ -354,17 +353,10 @@ Partial Class frmMain Me.RibbonPageGroup2.ShowCaptionButton = False Me.RibbonPageGroup2.Text = "Kalender" ' - 'groupQuickAccess - ' - Me.groupQuickAccess.AllowTextClipping = False - Me.groupQuickAccess.Name = "groupQuickAccess" - Me.groupQuickAccess.Text = "Schnellstart" - Me.groupQuickAccess.Visible = False - ' 'groupQuickAccessDemo ' - Me.groupQuickAccessDemo.Name = "groupQuickAccessDemo" - Me.groupQuickAccessDemo.Text = "Schnellstart " + Me.groupQuickAccess.Name = "groupQuickAccessDemo" + Me.groupQuickAccess.Text = "Schnellstart " ' 'pageForms ' @@ -514,14 +506,13 @@ Partial Class frmMain Friend WithEvents BarButtonItem12 As DevExpress.XtraBars.BarButtonItem Friend WithEvents RibbonPageGroupTask As DevExpress.XtraBars.Ribbon.RibbonPageGroup Friend WithEvents pageHome As DevExpress.XtraBars.Ribbon.RibbonPage - Friend WithEvents groupQuickAccess As DevExpress.XtraBars.Ribbon.RibbonPageGroup Friend WithEvents BarButtonItem13 As DevExpress.XtraBars.BarButtonItem Friend WithEvents BarButtonItem14 As DevExpress.XtraBars.BarButtonItem Friend WithEvents RibbonPageGroup1 As DevExpress.XtraBars.Ribbon.RibbonPageGroup Friend WithEvents BarButtonItem15 As DevExpress.XtraBars.BarButtonItem Friend WithEvents BarButtonItem16 As DevExpress.XtraBars.BarButtonItem Friend WithEvents BarButtonItem17 As DevExpress.XtraBars.BarButtonItem - Friend WithEvents groupQuickAccessDemo As DevExpress.XtraBars.Ribbon.RibbonPageGroup + Friend WithEvents groupQuickAccess As DevExpress.XtraBars.Ribbon.RibbonPageGroup Friend WithEvents TimerClose3Minutes As System.Windows.Forms.Timer End Class diff --git a/app/DD-Record-Organiser/frmMain.vb b/app/DD-Record-Organiser/frmMain.vb index 3c5b82e..4b723ba 100644 --- a/app/DD-Record-Organiser/frmMain.vb +++ b/app/DD-Record-Organiser/frmMain.vb @@ -24,6 +24,10 @@ Public Class frmMain LabelMachine.Caption = My.Computer.Name Load_Connection_Dep_Data() + + 'Wenn Argumente übergeben wurden, wird Formular geladen und zu record gesprungen + ClassJumpRecord.ParseArgs() + Catch ex As Exception MsgBox("Error in Load Form:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) End Try @@ -146,40 +150,39 @@ Public Class frmMain Dim dt As DataTable = ClassDatabase.Return_Datatable(SQL2) Dim image2 As Bitmap = LoadNoImage() - Do While 0 < groupQuickAccess.ItemLinks.Count - groupQuickAccess.ItemLinks.Remove(groupQuickAccess.ItemLinks(0)) - Loop + 'Do While 0 < groupQuickAccess.ItemLinks.Count + ' groupQuickAccess.ItemLinks.Remove(groupQuickAccess.ItemLinks(0)) + 'Loop - If dt.Rows.Count <> 0 Then + 'If dt.Rows.Count <> 0 Then - For Each row As DataRow In dt.Rows - If Not IsDBNull(row.Item("MENU_IMG")) Then - Dim bimg() As Byte = row.Item("MENU_IMG") - Dim bitmap As Bitmap = ByteArrayToBitmap(bimg) - image2 = bitmap - End If + ' For Each row As DataRow In dt.Rows + ' If Not IsDBNull(row.Item("MENU_IMG")) Then + ' Dim bimg() As Byte = row.Item("MENU_IMG") + ' Dim bitmap As Bitmap = ByteArrayToBitmap(bimg) + ' image2 = bitmap + ' End If - Dim title As String = row.Item("FORM_TITLE") - Dim index As Integer = row.Item("SEQUENCE_MENU") - Dim tag As Integer = row.Item("GUID") - Dim item As New BarButtonItem(ribbonMain.Manager, title) - item.RibbonStyle = RibbonItemStyles.Large - item.Caption = title - item.Tag = tag - item.Glyph = image2 + ' Dim title As String = row.Item("FORM_TITLE") + ' Dim index As Integer = row.Item("SEQUENCE_MENU") + ' Dim tag As Integer = row.Item("GUID") + ' Dim item As New BarButtonItem(ribbonMain.Manager, title) + ' item.RibbonStyle = RibbonItemStyles.Large + ' item.Caption = title + ' item.Tag = tag + ' item.Glyph = image2 - AddHandler item.ItemClick, AddressOf ToolbarButtonItemClick + ' AddHandler item.ItemClick, AddressOf ToolbarButtonItemClick - groupQuickAccess.ItemLinks.Add(item) + ' groupQuickAccess.ItemLinks.Add(item) - Next + ' Next - End If + 'End If - ' TODO: NUR FÜR WINDREAM CON!!! - Do While 0 < groupQuickAccessDemo.ItemLinks.Count - groupQuickAccessDemo.ItemLinks.Remove(groupQuickAccessDemo.ItemLinks(0)) + Do While 0 < groupQuickAccess.ItemLinks.Count + groupQuickAccess.ItemLinks.Remove(groupQuickAccess.ItemLinks(0)) Loop If dt.Rows.Count <> 0 Then @@ -200,16 +203,15 @@ Public Class frmMain item.Tag = tag item.Glyph = image2 - AddHandler item.ItemClick, AddressOf ToolbarButtonItemClickDemo - groupQuickAccessDemo.ItemLinks.Add(item) + AddHandler item.ItemClick, AddressOf ToolbarButtonItemClick + groupQuickAccess.ItemLinks.Add(item) Next End If - ' TODO: NUR FÜR WINDREAM CON!!! End Sub - + Private Sub BarButtonItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Dim formId As Integer = Integer.Parse(e.Item.Tag) @@ -218,16 +220,6 @@ Public Class frmMain Cursor = Cursors.Default End Sub - ' TODO: NUR FÜR WINDREAM CON!!! - Private Sub ToolbarButtonItemClickDemo(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) - Dim formId As Integer = Integer.Parse(e.Item.Tag) - - Cursor = Cursors.WaitCursor - OpenFormConstructorDemo(formId) - Cursor = Cursors.Default - End Sub - ' TODO: NUR FÜR WINDREAM CON!!! - Private Sub ToolbarButtonItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Dim formId As Integer = Integer.Parse(e.Item.Tag) diff --git a/app/SetupWiX/Product.wxs b/app/SetupWiX/Product.wxs index 1faa834..e14377e 100644 --- a/app/SetupWiX/Product.wxs +++ b/app/SetupWiX/Product.wxs @@ -1,7 +1,7 @@ - + @@ -82,6 +82,10 @@ + + + + @@ -137,6 +141,9 @@ + + + @@ -156,6 +163,7 @@ +