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.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/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"