Imports DevExpress.Data.ExpressionEditor Imports DevExpress.Utils Imports DevExpress.XtraEditors Imports DevExpress.XtraEditors.Controls Imports DevExpress.XtraLayout Imports DigitalData.Modules.Base Imports DigitalData.Modules.Database Imports DigitalData.Modules.Logging Public Class ParameterLoader Inherits BaseClass Private Const LIST_CONTROL_NULL_TEXT As String = "Kein Wert ausgewählt" Private Database As MSSQLServer Private LayoutControl As LayoutControl Public Sub New(pLogConfig As LogConfig, pDatabase As MSSQLServer, pLayoutControl As LayoutControl) MyBase.New(pLogConfig) Database = pDatabase LayoutControl = pLayoutControl End Sub Private Function GetDefaultValue(pParam As SearchParameter) As Object Dim oResult As Object = Nothing Select Case pParam.DataType Case Constants.DataTypeEnum.Boolean Boolean.TryParse(pParam.DefaultValue, oResult) Case Constants.DataTypeEnum.Date Date.TryParse(pParam.DefaultValue, oResult) Case Constants.DataTypeEnum.Integer Integer.TryParse(pParam.DefaultValue, oResult) Case Else oResult = pParam.DefaultValue End Select Return oResult End Function Public Sub LoadParameters(pSearch As Search) Dim oControl As Control For Each oParam As SearchParameter In pSearch.Parameters oControl = Nothing Select Case oParam.DataType Case Constants.DataTypeEnum.Boolean Dim oDefaultValue As Boolean = GetDefaultValue(oParam) Dim oCheckbox = New CheckEdit With { .Text = oParam.Title, .Checked = oDefaultValue } oControl = oCheckbox Case Constants.DataTypeEnum.Date Dim oDefaultValue As Date = GetDefaultValue(oParam) If oDefaultValue = Date.MinValue Then oDefaultValue = Now End If Dim oDateEdit As New DateEdit() With { .EditValue = oDefaultValue } oDateEdit.Properties.ShowClear = False oControl = oDateEdit Case Constants.DataTypeEnum.String Dim oDefaultValue As String = GetDefaultValue(oParam) Select Case oParam.ItemType Case Constants.ItemTypeEnum.List Dim oCombobox = New ComboBoxEdit() With { .Name = oParam.PatternTitle, .Tag = oParam.PatternTitle, .EditValue = oDefaultValue } Dim oClearButton = GetClearButtonForControl(oCombobox) Dim oItems = oParam.ItemString.Split(";"c).ToList() oCombobox.Properties.Items.AddRange(oItems) oCombobox.Properties.NullText = LIST_CONTROL_NULL_TEXT oCombobox.Properties.Buttons.Add(oClearButton) oControl = oCombobox Case Constants.ItemTypeEnum.SQL Dim oGridCombobox = New LookUpEdit() With { .Name = oParam.PatternTitle, .Tag = oParam.PatternTitle, .EditValue = oDefaultValue } Dim oClearButton = GetClearButtonForControl(oGridCombobox) Dim oSQL = oParam.ItemString Dim oTable = Database.GetDatatable(oSQL) oGridCombobox.Properties.DataSource = oTable oGridCombobox.Properties.DisplayMember = oTable.Columns.Item(0).ColumnName oGridCombobox.Properties.ValueMember = oTable.Columns.Item(0).ColumnName oGridCombobox.Properties.NullText = LIST_CONTROL_NULL_TEXT oGridCombobox.Properties.Buttons.Add(oClearButton) oControl = oGridCombobox Case Else oControl = New TextEdit() With { .EditValue = oDefaultValue } End Select Case Else Dim oDefaultValue As Object = GetDefaultValue(oParam) oControl = New TextEdit() With { .EditValue = oDefaultValue } End Select oControl.Name = oParam.PatternTitle oControl.Tag = oParam.PatternTitle Dim oItem As LayoutControlItem = LayoutControl.AddItem() oItem.Text = oParam.Title oItem.Control = oControl oItem.TextLocation = Locations.Top oItem.TextToControlDistance = 3 oItem.Padding = New DevExpress.XtraLayout.Utils.Padding(0, 0, 10, 0) Next If String.IsNullOrEmpty(pSearch.Caption) = False Then ' Beschreibung anzeigen Dim oMemoEdit = New MemoEdit() With { .EditValue = pSearch.Caption, .ReadOnly = True, .BorderStyle = BorderStyles.NoBorder } oMemoEdit.Name = "SearchCaption" oMemoEdit.Tag = "SearchCaption" oMemoEdit.Properties.ScrollBars = ScrollBars.None If String.IsNullOrEmpty(pSearch.Comment) = False Then oMemoEdit.ToolTip = pSearch.Comment End If Dim oItem1 As LayoutControlItem = LayoutControl.AddItem() oItem1.Text = "Beschreibung:" oItem1.Control = oMemoEdit oItem1.TextLocation = Locations.Top oItem1.TextToControlDistance = 3 oItem1.Padding = New DevExpress.XtraLayout.Utils.Padding(0, 0, 5, 0) End If End Sub Private Function GetClearButtonForControl(pControl As Control) As EditorButton Dim oClearButton As New EditorButton() With { .Kind = ButtonPredefines.Clear, .Tag = pControl.Name } AddHandler oClearButton.Click, AddressOf ClearButton_Click Return oClearButton End Function Private Sub ClearButton_Click(sender As Object, e As EventArgs) Dim oButton As EditorButton = sender Dim oControlName As String = oButton.Tag.ToString Dim oControl = LayoutControl.Controls.Find(oControlName, True).SingleOrDefault() Select Case oControl.GetType Case GetType(LookUpEdit) DirectCast(oControl, LookUpEdit).EditValue = Nothing Case GetType(ComboBoxEdit) DirectCast(oControl, ComboBoxEdit).EditValue = Nothing End Select End Sub End Class