From 91708d16d3274914ac994384112c949a9c073beb Mon Sep 17 00:00:00 2001 From: JenneJ Date: Wed, 27 Jan 2016 15:23:23 +0100 Subject: [PATCH] jj_27_01_16 --- .../ClassControlCommands.vb | 2 + app/DD-Record-Organiser/ClassControlValues.vb | 57 +++++++++++++++++-- .../ModuleHelperMethods.vb | 8 +++ .../frmForm_Constructor_Main_2.resx | 28 ++++----- .../frmForm_Constructor_Main_2.vb | 2 + app/DD-Record-Organiser/frmMain.resx | 8 +-- .../frmTool_ControlProperties.vb | 4 +- 7 files changed, 84 insertions(+), 25 deletions(-) diff --git a/app/DD-Record-Organiser/ClassControlCommands.vb b/app/DD-Record-Organiser/ClassControlCommands.vb index 707007f..c2b16bd 100644 --- a/app/DD-Record-Organiser/ClassControlCommands.vb +++ b/app/DD-Record-Organiser/ClassControlCommands.vb @@ -218,6 +218,8 @@ DEFAULTVALUE = properties.DefaultValue ElseIf type = "DateEdit" Then DEFAULTVALUE = ClassConverter.ToDateTimePickerOptionsOrDefault(properties.DefaultValue) + ElseIf type = "TextBox" Then + DEFAULTVALUE = properties.DefaultValue End If If type = "TextBox" OrElse diff --git a/app/DD-Record-Organiser/ClassControlValues.vb b/app/DD-Record-Organiser/ClassControlValues.vb index 9fa9d98..807a5d4 100644 --- a/app/DD-Record-Organiser/ClassControlValues.vb +++ b/app/DD-Record-Organiser/ClassControlValues.vb @@ -46,8 +46,8 @@ Public Class ClassControlValues End If Case GetType(DevExpress.XtraEditors.CheckedListBoxControl) - Dim checkedlistbox As DevExpress.XtraEditors.CheckedListBoxControl = DirectCast(control, DevExpress.XtraEditors.CheckedListBoxControl) - If checkedlistbox.SelectedItems.Count = 0 Then + Dim checkedlistbox = DirectCast(control, DevExpress.XtraEditors.CheckedListBoxControl) + If checkedlistbox.CheckedItemsCount = 0 Then Return False Else Return True @@ -62,15 +62,54 @@ Public Class ClassControlValues End If Case Else - If LogErrorsOnly = False Then ClassLogger.Add(">> Sub LoadControlValue - Control-Type nicht berücksichtigt: " & GetType(Control).ToString(), False) + Return True End Select End Function ' Überprüft, welche Controls "Required" sind - Public Shared Function CheckRequiredControlValues(controls As Control.ControlCollection) As List(Of String) + Public Shared Function CheckRequiredControlValues(controls As Control.ControlCollection, Optional isGroupbox As Boolean = False) As List(Of String) Dim missingValues As New List(Of String) + 'If isGroupbox = True Then + ' Dim radiobuttons As New List(Of RadioButton) + ' Dim otherControls As New List(Of Control) + + ' ' Nach allen Radiobuttons suchen + ' For Each c As Control In controls + ' If TypeOf c Is RadioButton Then + ' radiobuttons.Add(DirectCast(c, RadioButton)) + ' Else + ' otherControls.Add(c) + ' End If + ' Next + + ' ' Wenn mindestens 1 MussFeld-Radiobutton in der Groupbox + ' Dim atLeastOneRadioButtonHasRequired = False + ' For Each rb As RadioButton In radiobuttons + ' If DirectCast(rb.Tag, ClassControlMetadata).Required = True Then + ' atLeastOneRadioButtonHasRequired = True + ' Exit For + ' End If + ' Next + + + + ' If atLeastOneRadioButtonHasRequired Then + ' ' Alle RadioButtons die angeklickt wurden (ist meistens einer :o) + ' Dim radioButtonsWithValue = (From rb As RadioButton In radiobuttons + ' Where ControlHasValue(rb) + ' Select rb.Name).ToArray() + + ' ' Wenn kein RadioButton angeklickt wurde, nehmen wir alle in einen String, + ' ' da GENAU EINER angeklickt werden MUSS + ' If radioButtonsWithValue Is Nothing Then + ' Dim missingValue As String = String.Join(", ", radiobuttons) + ' missingValues.Add(missingValue) + ' End If + ' End If + 'End If + For Each Control As Control In controls Dim metadata = DirectCast(Control.Tag, ClassControlMetadata) @@ -78,11 +117,17 @@ Public Class ClassControlValues ' Groupbox muss rekursiv überprüft werden If TypeOf Control Is GroupBox Then Dim groupbox As GroupBox = DirectCast(Control, GroupBox) - Dim gbfields As List(Of String) = CheckRequiredControlValues(groupbox.Controls) + Dim gbfields As List(Of String) = CheckRequiredControlValues(groupbox.Controls, True) missingValues.AddRange(gbfields) Continue For End If + 'Radio Buttons müssen nicht überprüft werden, da eine RadioButton Group + 'immer ein Control mit Checked = true hat + If TypeOf Control Is RadioButton Then + Continue For + End If + If IsNothing(metadata.Required) OrElse metadata.Required = False Then Continue For End If @@ -94,7 +139,7 @@ Public Class ClassControlValues Next - Return missingValues + Return missingValues.Distinct().ToList() End Function Public Shared Sub LoadControlValues(RecordId As Integer, ParentRecordId As Integer, FormId As Integer, controls As Control.ControlCollection) diff --git a/app/DD-Record-Organiser/ModuleHelperMethods.vb b/app/DD-Record-Organiser/ModuleHelperMethods.vb index baae6fc..5032b9a 100644 --- a/app/DD-Record-Organiser/ModuleHelperMethods.vb +++ b/app/DD-Record-Organiser/ModuleHelperMethods.vb @@ -11,6 +11,14 @@ Empty = 1 End Enum + Public Function NotNull(Of T)(ByVal value As T, ByVal defaultValue As T) As T + If value Is Nothing OrElse String.IsNullOrEmpty(value.ToString) OrElse IsDBNull(value) Then + Return defaultValue + Else + Return value + End If + End Function + Public Function BoolToInt(bool As Boolean) As Integer ' Wandelt einen Boolean Wert in einen Int um Return IIf(bool, 1, 0) diff --git a/app/DD-Record-Organiser/frmForm_Constructor_Main_2.resx b/app/DD-Record-Organiser/frmForm_Constructor_Main_2.resx index 33c9d26..1e57d1f 100644 --- a/app/DD-Record-Organiser/frmForm_Constructor_Main_2.resx +++ b/app/DD-Record-Organiser/frmForm_Constructor_Main_2.resx @@ -289,7 +289,7 @@ 0, 0 - 795, 270 + 788, 270 0 @@ -361,7 +361,7 @@ 0, 0 - 1072, 316 + 1069, 312 0 @@ -379,7 +379,7 @@ 0 - 1072, 316 + 1069, 312 Detailansicht @@ -397,7 +397,7 @@ 0 - 1078, 347 + 1071, 340 1 @@ -420,7 +420,7 @@ - 1072, 291 + 1069, 287 6 @@ -481,7 +481,7 @@ 0, 0 - 1072, 25 + 1069, 25 2 @@ -502,7 +502,7 @@ 1 - 1072, 316 + 1069, 312 windream-Dateien @@ -916,7 +916,7 @@ 2 - 1072, 316 + 1069, 312 Wiedervorlage @@ -943,7 +943,7 @@ Cyan - 1072, 291 + 1069, 287 0 @@ -967,7 +967,7 @@ 0, 25 - 1072, 291 + 1069, 287 2 @@ -1142,7 +1142,7 @@ 0, 0 - 1072, 25 + 1069, 25 1 @@ -1171,7 +1171,7 @@ - 1072, 316 + 1069, 312 Positionen @@ -1342,7 +1342,7 @@ 0, 0 - 1078, 25 + 1071, 25 0 @@ -1447,7 +1447,7 @@ Panel2 - 1083, 372 + 1083, 365 0 diff --git a/app/DD-Record-Organiser/frmForm_Constructor_Main_2.vb b/app/DD-Record-Organiser/frmForm_Constructor_Main_2.vb index b620673..034695b 100644 --- a/app/DD-Record-Organiser/frmForm_Constructor_Main_2.vb +++ b/app/DD-Record-Organiser/frmForm_Constructor_Main_2.vb @@ -1179,6 +1179,8 @@ Public Class frmForm_Constructor_Main_2 Update_Status_Label(True, "Der Datensatz '" & SELECTED_RECORD_ID & "' wurde erfolgreich gelöscht - " & Now, EditState.Update) Update_Record_Label(SELECTED_RECORD_ID) Load_Tree_View_Data() + ' Nach dem löschen muss die aktuelle Ansicht neugeladen werden + Load_Entity_Data(ACT_EBENE) DisableEditMode() End If End If diff --git a/app/DD-Record-Organiser/frmMain.resx b/app/DD-Record-Organiser/frmMain.resx index 90cbfd1..f85d67d 100644 --- a/app/DD-Record-Organiser/frmMain.resx +++ b/app/DD-Record-Organiser/frmMain.resx @@ -1807,13 +1807,13 @@ Konfiguration Administration - 1498, 150 + 1506, 150 - 0, 655 + 0, 659 - 1498, 23 + 1506, 23 RibbonStatusBar1 @@ -1861,7 +1861,7 @@ Konfiguration 6, 13 - 1498, 678 + 1506, 682 Segoe UI, 8.25pt diff --git a/app/DD-Record-Organiser/frmTool_ControlProperties.vb b/app/DD-Record-Organiser/frmTool_ControlProperties.vb index e2bb852..cd59843 100644 --- a/app/DD-Record-Organiser/frmTool_ControlProperties.vb +++ b/app/DD-Record-Organiser/frmTool_ControlProperties.vb @@ -97,7 +97,8 @@ props.DefaultValue = ClassConverter.ToBooleanOrDefault(row.Item("CONTROL_DEF_VALUE")) Case "Datepicker" props = New DateTimePickerProperties() - props.DefaultValue = ClassConverter.ToDateTimePickerOptionsOrDefault(row.Item("CONTROL_DEF_VALUE")) + props.DefaultValue = NotNull(row.Item("CONTROL_DEF_VALUE"), EnumDateTimePickerDefaultValueOptions.Empty) + 'props.DefaultValue = ClassConverter.ToDateTimePickerOptionsOrDefault(row.Item("CONTROL_DEF_VALUE")) Case "Datagridview" props = New DataGridViewProperties() Case "Groupbox" @@ -110,6 +111,7 @@ props = New RadioButtonProperties() props.Caption = row.Item("CTRLSCR_CAPTION") props.DefaultValue = ClassConverter.ToBooleanOrDefault(row.Item("CONTROL_DEF_VALUE")) + props.IsRequired = row.Item("CONTROL_REQUIRED") Case "F_AddAppointment" props = New FunctionAddAppointment() Case "F_AddFormData"