This commit is contained in:
SchreiberM 2016-05-10 08:49:21 +02:00
commit 0b1f56f4d0
5 changed files with 34 additions and 1634 deletions

View File

@ -289,7 +289,8 @@ Public Class ClassControlBuilder
' DependingControlId bezeichnet das Control, das die Abhängigkeit enthält
Dim dependingControlId As Integer = row.Item("GUID")
Dim panel As Panel = DirectCast(control.Parent, Panel)
Dim panel As Panel = CtrlBuilder.MasterPanel
'Dim panel As Panel = DirectCast(control.Parent, Panel)
' Über die Id das Control finden
Dim dependingControl As Control = panel.Controls.OfType(Of Control)().Where(Function(c As Control)
Return DirectCast(c.Tag, ClassControlMetadata).Id = dependingControlId
@ -464,9 +465,13 @@ Public Class ClassControlBuilder
If CURRENT_RECORD_ID = 0 Then
Exit Sub
End If
If CtrlCommandUI.IsInsert = False Then
' Da wir beim Klick auf Hinzfügen einen Record anlegen,
' muss UpdateMultipleValues auch aufgerufen werden, wenn wir IsInsert = True ist
'If CtrlCommandUI.IsInsert = False Then
ClassControlCommandsUI.UpdateMultipleValues(controlId, CURRENT_RECORD_ID, CONTROL_VALUE)
End If
'End If
Dim datatable As DataTable = ClassDatabase.Return_Datatable(SQL)

View File

@ -396,6 +396,7 @@
End If
If dynamic.DataTable IsNot Nothing AndAlso dynamic.DataTable.Rows.Count > 0 Then
'control.Items.Clear()
SetDataSource(control, dynamic.DataTable)
End If

View File

@ -1,976 +0,0 @@
Public Class frmLevel_Designer
#Region "+++++ Konstanten +++++"
'Private akt_ctrl As Control
Private Shared _Instance As frmLevel_Designer = Nothing
Private Mouse_Moving As Boolean = False
Private Mouse_Down As Boolean = False
Private Current_Properties As Object = Nothing
Private LastCursor As Point = Nothing
#End Region
Dim formloaded As Boolean = False
Public Shared Function Instance() As frmLevel_Designer
If _Instance Is Nothing OrElse _Instance.IsDisposed = True Then
_Instance = New frmLevel_Designer
End If
_Instance.BringToFront()
Return _Instance
End Function
Public Sub SetFormTitle(title As String)
Me.Text = "Formdesigner: " & title
End Sub
Public Sub SetFormName(name As String)
Me.lblFormName.Text = "Name: " & name & " - Form-ID: " & CURRENT_FORM_ID
End Sub
#Region "+++++ Drag Drop Funktionen +++++"
Public Sub ControlDragDrop(type As String, Parent As GroupBox)
Try
Dim r As New System.Random()
Dim def_font_family As String = DefaultFont.Name
Dim def_font_color As Integer = DefaultForeColor.ToArgb
Dim def_font_style As Integer = 0
Dim def_font_size As Integer = 8
Dim defaultCaption As String = "Bezeichner definieren"
If USER_LANGUAGE <> "de-DE" Then
defaultCaption = "Define Identifier"
End If
Dim defaultCalendarCaption As String = "Zu Kalender hinzufügen"
If USER_LANGUAGE <> "de-DE" Then
defaultCalendarCaption = "Add to Calendar"
End If
Dim random As String = ShortGUID()
'Dim random As Integer = r.Next(8, 100)
Select Case type
Case "lbl"
CtrlBuilder.AddLabel(0, "lbl" & random, defaultCaption, 0, 0, def_font_family, def_font_color, def_font_size, def_font_style, "", True, Parent)
' Aktuelles Control in die Datenbank speichern
ClassControlCommands.InsertControl(CtrlBuilder.CurrentControl)
Case "txt"
CtrlBuilder.AddTextBox(0, "txt" & random, 0, 0, def_font_family, def_font_color, def_font_size, def_font_style, 0, True, 0, 0, False, False, False, "String", True, Parent)
' Aktuelles Control in die Datenbank speichern
ClassControlCommands.InsertControl(CtrlBuilder.CurrentControl)
Case "cmb"
CtrlBuilder.AddComboBox(0, "cmb" & random, 0, 0, def_font_family, def_font_color, def_font_size, def_font_style, 0, True, 0, 0, "String", True, False, False, "", "", Parent)
' Aktuelles Control in die Datenbank speichern
ClassControlCommands.InsertControl(CtrlBuilder.CurrentControl)
Case "dtp"
CtrlBuilder.AddDateTimePicker(0, "dtp" & random, 0, 0, def_font_family, def_font_size, def_font_style, 0, False, 0, 0, False, False, True, Parent)
' Aktuelles Control in die Datenbank speichern
ClassControlCommands.InsertControl(CtrlBuilder.CurrentControl)
Case "dgv"
CtrlBuilder.AddDataGridView(0, "dgv" & random, 0, 0, 0, 0, True, False, False, "dgv" & random, Parent)
' Aktuelles Control in die Datenbank speichern
ClassControlCommands.InsertControl(CtrlBuilder.CurrentControl)
Case "chk"
CtrlBuilder.AddCheckBox(0, "chk" & random, defaultCaption, False, 0, 0, def_font_family, def_font_color, def_font_size, def_font_style, 0, False, 0, 0, True, False, False, Parent)
' Aktuelles Control in die Datenbank speichern
ClassControlCommands.InsertControl(CtrlBuilder.CurrentControl)
Case "rb"
CtrlBuilder.AddRadioButton(0, "rb" & random, defaultCaption, False, 0, 0, def_font_family, def_font_color, def_font_size, def_font_style, 0, False, 0, 0, True, False, False, Parent)
' Aktuelles Control in die Datenbank speichern
ClassControlCommands.InsertControl(CtrlBuilder.CurrentControl)
Case "pb"
CtrlBuilder.AddPictureBox(0, "pb" & random, 0, 0, 0, 0, True, False, False, Parent)
' Aktuelles Control in die Datenbank speichern
ClassControlCommands.InsertControl(CtrlBuilder.CurrentControl)
Case "gb"
CtrlBuilder.AddGroupBox(0, "gb" & random, defaultCaption, 0, 0, 0, 0, ColorToInt(SystemColors.Control), def_font_color, def_font_family, def_font_size, def_font_style, True, Parent)
' Aktuelles Control in die Datenbank speichern
ClassControlCommands.InsertControl(CtrlBuilder.CurrentControl)
Case "f_addappointment"
CtrlBuilder.FunctionAddAppointment(0, "f_addappointment" & random, defaultCalendarCaption, 0, 0, 0, 0, True, Parent)
If ClassControlCommands.InsertControl(CtrlBuilder.CurrentControl) = True Then
Dim ControlId = GetControlID_for_Name(CtrlBuilder.CurrentControl.Name, CURRENT_FORM_ID)
ClassFunctionCommands.InsertFunction(ControlId, "ADDAPPOINTMENT")
End If
Case "f_addformdata"
CtrlBuilder.FunctionAddFormData(0, "f_addformdata" & random, "Add Form Data", 0, 0, 0, 0, True, Parent)
If ClassControlCommands.InsertControl(CtrlBuilder.CurrentControl) = True Then
Dim ControlId = GetControlID_for_Name(CtrlBuilder.CurrentControl.Name, CURRENT_FORM_ID)
ClassFunctionCommands.InsertFunction(ControlId, "ADDFORMDATA")
End If
Case "lstbxcheck"
CtrlBuilder.AddCheckedListBox(0, "chlb" & random, 0, 0, def_font_family, def_font_color, def_font_size, def_font_style, 0, True, 0, 0, True, False, False, "", "", Parent)
' Aktuelles Control in die Datenbank speichern
ClassControlCommands.InsertControl(CtrlBuilder.CurrentControl)
Case "lstbx"
CtrlBuilder.AddListBox(0, "lbx" & random, 0, 0, def_font_family, def_font_color, def_font_size, def_font_style, 0, True, 0, 0, True, False, False, "", "", Parent)
' Aktuelles Control in die Datenbank speichern
ClassControlCommands.InsertControl(CtrlBuilder.CurrentControl)
Case Else
MsgBox("Event '" & type & "' nicht definiert")
End Select
Catch ex As Exception
MsgBox("unexpected Error in ControlDragDrop: " & vbNewLine, MsgBoxStyle.Critical)
End Try
End Sub
Public Sub Groupbox_DragDrop(sender As Object, e As DragEventArgs)
Dim type As String = e.Data.GetData(DataFormats.Text)
Dim GroupBox As GroupBox = CType(sender, GroupBox)
ControlDragDrop(type, GroupBox)
End Sub
Private Sub pnlDesigner_DragDrop(sender As Object, e As DragEventArgs)
Dim type As String = e.Data.GetData(DataFormats.Text)
ControlDragDrop(type, Nothing)
End Sub
Private Sub pnlDesigner_DragEnter(sender As Object, e As DragEventArgs)
' Check the format of the data being dropped.
If (e.Data.GetDataPresent(DataFormats.Text)) Then
' Display the copy cursor.
e.Effect = DragDropEffects.Copy
Else
' Display the no-drop cursor.
e.Effect = DragDropEffects.None
End If
End Sub
#End Region
#Region "+++++ Form Events +++++"
Private Sub frmLevel_Designer_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
Try
Dim sw
sw = Stopwatch.StartNew()
ClassWindowLocation.SaveFormLocationSize(Me, 1, CURRENT_SCREEN_ID, "frmLevel_Designer")
sw.Stop()
Console.WriteLine(String.Format("SaveFormLocationSize took {0}ms", sw.ElapsedMilliseconds))
sw = Stopwatch.StartNew()
My.Settings.Save()
sw.Stop()
Console.WriteLine(String.Format("My.Settings.Save took {0}ms", sw.ElapsedMilliseconds))
sw = Stopwatch.StartNew()
RebuildView()
sw.Stop()
Console.WriteLine(String.Format("RebuildView took {0}ms", sw.ElapsedMilliseconds))
Dim wid As Integer = Me.Width
Dim update_sizepnl As String = "UPDATE TBPMO_FORM_VIEW SET HEIGHT = " & pnlDesigner.Height & ",WIDTH = " & wid & " where FORM_ID = " & CURRENT_FORM_ID & " and SCREEN_ID = " & CURRENT_SCREEN_ID
ClassDatabase.Execute_non_Query(update_sizepnl)
'frmTool_ControlProperties.Instance.Close()
'frmTool_ControlDesigner.Instance.Close()
Catch ex As Exception
End Try
End Sub
Private Sub frmLevel_Designer_Load(sender As Object, e As EventArgs) Handles Me.Load
ClassWindowLocation.LoadFormLocationSize(Me, 1, CURRENT_SCREEN_ID, "frmLevel_Designer")
' ADDED 18.11
CtrlBuilder = New ClassControlBuilder(pnlDesigner,
AddressOf Control_MouseDown,
AddressOf Control_MouseUp,
AddressOf Control_MouseMove,
AddressOf Control_Click,
AddressOf Groupbox_DragDrop)
If ClassDatabase.Init = True Then
LoadFormProperties()
LoadControls()
End If
End Sub
Private Sub HandleToolTip(sender As Object, e As EventArgs)
Console.WriteLine("show tooltip")
End Sub
#End Region
#Region "+++++ Load Funktionen +++++"
Public Sub LoadFormProperties()
Dim NAME_SQL As String = "SELECT NAME FROM TBPMO_FORM WHERE GUID = " & CURRENT_FORM_ID
Dim formviewid = ClassDatabase.Execute_Scalar("SELECT GUID FROM TBPMO_FORM_VIEW WHERE FORM_ID = " & CURRENT_FORM_ID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID)
Dim TITLE_SQL As String = "SELECT CAPTION FROM TBPMO_LANGUAGE_OBJECT WHERE PMO_OBJECT_NAME = 'FORMVIEW_TITLE" & formviewid & "' and SCREEN_ID = " & CURRENT_SCREEN_ID & " AND LANGUAGE_TYPE = '" & USER_LANGUAGE & "'"
Dim Height = ClassDatabase.Execute_Scalar("SELECT HEIGHT FROM TBPMO_FORM_VIEW WHERE FORM_ID = " & CURRENT_FORM_ID & " and SCREEN_ID = " & CURRENT_SCREEN_ID)
Dim width = ClassDatabase.Execute_Scalar("SELECT WIDTH FROM TBPMO_FORM_VIEW WHERE FORM_ID = " & CURRENT_FORM_ID & " and SCREEN_ID = " & CURRENT_SCREEN_ID)
Dim name = ClassDatabase.Execute_Scalar(NAME_SQL)
Dim title = ClassDatabase.Execute_Scalar(TITLE_SQL)
' Check_Document_Config(CURRENT_FORM_ID)
If Not IsDBNull(Height) Then
If Height > 100 Then
Me.pnlDesigner.Height = Height
End If
'If Not IsDBNull(width) Then
If width > 500 Then
' Me.Width = width
End If
'End If
End If
SetFormName(name)
SetFormTitle(title)
End Sub
Public Sub LoadControls()
Dim sql = String.Format("SELECT T.*, dbo.FNPMO_GET_CONTROL_CAPTION ('{0}', {1},T.CONTROL_ID) AS 'CAPTION' FROM VWPMO_CONTROL_SCREEN T" & _
" where T.FORM_ID = {2} and T.SCREEN_ID = {3}", USER_LANGUAGE, CURRENT_SCREEN_ID, CURRENT_FORM_ID, CURRENT_SCREEN_ID)
Dim dt As DataTable = ClassDatabase.Return_Datatable(sql)
For Each dr As DataRow In dt.Rows
Dim parent As GroupBox = Nothing
If (dr.Item("CONTROL_PARENT_ID") <> 0) Then
Dim parentname As String = Get_Name_for_ControlID(dr.Item("CONTROL_PARENT_ID"), CURRENT_FORM_ID)
parent = CtrlBuilder.GetControlByName(parentname)
End If
Select Case dr.Item("CTRLTYPE_ID")
Case 1 ' Label
CtrlBuilder.AddLabel(dr.Item("CONTROL_ID"),
dr.Item("CONTROL_NAME"),
dr.Item("CAPTION"),
dr.Item("CTRLSCR_X_LOC"),
dr.Item("CTRLSCR_Y_LOC"),
dr.Item("CTRLSCR_FONT_FAMILY"),
dr.Item("CTRLSCR_FONT_COLOR"),
dr.Item("CTRLSCR_FONT_SIZE"),
dr.Item("CTRLSCR_FONT_STYLE"),
dr.Item("CONTROL_SQLCOMMAND_1"),
False,
parent,
True)
Case 2 ' TextBox
CtrlBuilder.AddTextBox(dr.Item("CONTROL_ID"),
dr.Item("CONTROL_NAME"),
dr.Item("CTRLSCR_X_LOC"),
dr.Item("CTRLSCR_Y_LOC"),
dr.Item("CTRLSCR_FONT_FAMILY"),
dr.Item("CTRLSCR_FONT_COLOR"),
dr.Item("CTRLSCR_FONT_SIZE"),
dr.Item("CTRLSCR_FONT_STYLE"),
dr.Item("CTRLSCR_TAB_INDEX"),
dr.Item("CTRLSCR_TAB_STOP"),
dr.Item("CTRLSCR_WIDTH"),
dr.Item("CTRLSCR_HEIGHT"),
dr.Item("CONTROL_MULTILINE"),
dr.Item("CONTROL_READ_ONLY"),
dr.Item("CONTROL_REQUIRED"),
dr.Item("CONTROL_FORMAT_TYPE"),
False,
parent,
True)
Case 3 ' ComboBox
CtrlBuilder.AddComboBox(dr.Item("CONTROL_ID"),
dr.Item("CONTROL_NAME"),
dr.Item("CTRLSCR_X_LOC"),
dr.Item("CTRLSCR_Y_LOC"),
dr.Item("CTRLSCR_FONT_FAMILY"),
dr.Item("CTRLSCR_FONT_COLOR"),
dr.Item("CTRLSCR_FONT_SIZE"),
dr.Item("CTRLSCR_FONT_STYLE"),
dr.Item("CTRLSCR_TAB_INDEX"),
dr.Item("CTRLSCR_TAB_STOP"),
dr.Item("CTRLSCR_WIDTH"),
dr.Item("CTRLSCR_HEIGHT"),
dr.Item("CONTROL_FORMAT_TYPE"),
False,
dr.Item("CONTROL_READ_ONLY"),
dr.Item("CONTROL_REQUIRED"),
dr.Item("CONTROL_STATIC_LIST"),
dr.Item("CONTROL_SQLCOMMAND_1"),
parent,
True)
Case 4 ' DateTimePicker
CtrlBuilder.AddDateTimePicker(dr.Item("CONTROL_ID"),
dr.Item("CONTROL_NAME"),
dr.Item("CTRLSCR_X_LOC"),
dr.Item("CTRLSCR_Y_LOC"),
dr.Item("CTRLSCR_FONT_FAMILY"),
dr.Item("CTRLSCR_FONT_SIZE"),
dr.Item("CTRLSCR_FONT_STYLE"),
dr.Item("CTRLSCR_TAB_INDEX"),
dr.Item("CTRLSCR_TAB_STOP"),
dr.Item("CTRLSCR_WIDTH"),
dr.Item("CTRLSCR_HEIGHT"),
dr.Item("CONTROL_READ_ONLY"),
dr.Item("CONTROL_REQUIRED"),
False,
parent,
True)
Case 5 ' GroupBox
CtrlBuilder.AddGroupBox(dr.Item("CONTROL_ID"),
dr.Item("CONTROL_NAME"),
dr.Item("CTRLSCR_CAPTION"),
dr.Item("CTRLSCR_X_LOC"),
dr.Item("CTRLSCR_Y_LOC"),
dr.Item("CTRLSCR_WIDTH"),
dr.Item("CTRLSCR_HEIGHT"),
dr.Item("CTRLSCR_BACK_COLOR"),
dr.Item("CTRLSCR_FONT_COLOR"),
dr.Item("CTRLSCR_FONT_FAMILY"),
dr.Item("CTRLSCR_FONT_SIZE"),
dr.Item("CTRLSCR_FONT_STYLE"),
False,
parent,
True)
Case 6 ' PictureBox
CtrlBuilder.AddPictureBox(dr.Item("CONTROL_ID"),
dr.Item("CONTROL_NAME"),
dr.Item("CTRLSCR_X_LOC"),
dr.Item("CTRLSCR_Y_LOC"),
dr.Item("CTRLSCR_WIDTH"),
dr.Item("CTRLSCR_HEIGHT"),
False,
dr.Item("CONTROL_READ_ONLY"),
dr.Item("CONTROL_REQUIRED"),
parent,
True)
Case 7 ' DataGridView
CtrlBuilder.AddDataGridView(dr.Item("CONTROL_ID"),
dr.Item("CONTROL_NAME"),
dr.Item("CTRLSCR_X_LOC"),
dr.Item("CTRLSCR_Y_LOC"),
dr.Item("CTRLSCR_WIDTH"),
dr.Item("CTRLSCR_HEIGHT"),
False,
dr.Item("CONTROL_READ_ONLY"),
dr.Item("CONTROL_REQUIRED"),
dr.Item("CONTROL_COL_NAME"),
parent,
True)
Case 10 ' Checkbox
Dim Checked As Boolean
If IsDBNull(dr.Item("CONTROL_DEF_VALUE")) Then
Checked = False
Else
Checked = StrToBool(dr.Item("CONTROL_DEF_VALUE"))
End If
CtrlBuilder.AddCheckBox(dr.Item("CONTROL_ID"),
dr.Item("CONTROL_NAME"),
dr.Item("CTRLSCR_CAPTION"),
Checked,
dr.Item("CTRLSCR_X_LOC"),
dr.Item("CTRLSCR_Y_LOC"),
dr.Item("CTRLSCR_FONT_FAMILY"),
dr.Item("CTRLSCR_FONT_COLOR"),
dr.Item("CTRLSCR_FONT_SIZE"),
dr.Item("CTRLSCR_FONT_STYLE"),
dr.Item("CTRLSCR_TAB_INDEX"),
dr.Item("CTRLSCR_TAB_STOP"),
dr.Item("CTRLSCR_WIDTH"),
dr.Item("CTRLSCR_HEIGHT"),
False,
dr.Item("CONTROL_READ_ONLY"),
dr.Item("CONTROL_REQUIRED"),
parent,
True)
Case 8 'AddAppointment Button
CtrlBuilder.FunctionAddAppointment(dr.Item("CONTROL_ID"),
dr.Item("CONTROL_NAME"),
dr.Item("CTRLSCR_CAPTION"),
dr.Item("CTRLSCR_X_LOC"),
dr.Item("CTRLSCR_Y_LOC"),
dr.Item("CTRLSCR_WIDTH"),
dr.Item("CTRLSCR_HEIGHT"),
False,
parent,
True)
Case 9 'AddFormData
CtrlBuilder.FunctionAddFormData(dr.Item("CONTROL_ID"),
dr.Item("CONTROL_NAME"),
dr.Item("CTRLSCR_CAPTION"),
dr.Item("CTRLSCR_X_LOC"),
dr.Item("CTRLSCR_Y_LOC"),
dr.Item("CTRLSCR_WIDTH"),
dr.Item("CTRLSCR_HEIGHT"),
False,
parent,
True)
Case 11 ' RadioButton
Dim Checked As Boolean
If IsDBNull(dr.Item("CONTROL_DEF_VALUE")) Then
Checked = False
Else
Checked = StrToBool(dr.Item("CONTROL_DEF_VALUE"))
End If
CtrlBuilder.AddRadioButton(dr.Item("CONTROL_ID"),
dr.Item("CONTROL_NAME"),
dr.Item("CTRLSCR_CAPTION"),
Checked,
dr.Item("CTRLSCR_X_LOC"),
dr.Item("CTRLSCR_Y_LOC"),
dr.Item("CTRLSCR_FONT_FAMILY"),
dr.Item("CTRLSCR_FONT_COLOR"),
dr.Item("CTRLSCR_FONT_SIZE"),
dr.Item("CTRLSCR_FONT_STYLE"),
dr.Item("CTRLSCR_TAB_INDEX"),
dr.Item("CTRLSCR_TAB_STOP"),
dr.Item("CTRLSCR_WIDTH"),
dr.Item("CTRLSCR_HEIGHT"),
False,
dr.Item("CONTROL_READ_ONLY"),
dr.Item("CONTROL_REQUIRED"),
parent,
True)
Case 12 'CheckedListBox
CtrlBuilder.AddCheckedListBox(dr.Item("CONTROL_ID"),
dr.Item("CONTROL_NAME"),
dr.Item("CTRLSCR_X_LOC"),
dr.Item("CTRLSCR_Y_LOC"),
dr.Item("CTRLSCR_FONT_FAMILY"),
dr.Item("CTRLSCR_FONT_COLOR"),
dr.Item("CTRLSCR_FONT_SIZE"),
dr.Item("CTRLSCR_FONT_STYLE"),
dr.Item("CTRLSCR_TAB_INDEX"),
dr.Item("CTRLSCR_TAB_STOP"),
dr.Item("CTRLSCR_WIDTH"),
dr.Item("CTRLSCR_HEIGHT"),
False,
dr.Item("CONTROL_READ_ONLY"),
dr.Item("CONTROL_REQUIRED"),
dr.Item("CONTROL_STATIC_LIST"),
dr.Item("CONTROL_SQLCOMMAND_1"),
parent,
True)
Case 13 'ListBox
CtrlBuilder.AddListBox(dr.Item("CONTROL_ID"),
dr.Item("CONTROL_NAME"),
dr.Item("CTRLSCR_X_LOC"),
dr.Item("CTRLSCR_Y_LOC"),
dr.Item("CTRLSCR_FONT_FAMILY"),
dr.Item("CTRLSCR_FONT_COLOR"),
dr.Item("CTRLSCR_FONT_SIZE"),
dr.Item("CTRLSCR_FONT_STYLE"),
dr.Item("CTRLSCR_TAB_INDEX"),
dr.Item("CTRLSCR_TAB_STOP"),
dr.Item("CTRLSCR_WIDTH"),
dr.Item("CTRLSCR_HEIGHT"),
False,
dr.Item("CONTROL_READ_ONLY"),
dr.Item("CONTROL_REQUIRED"),
dr.Item("CONTROL_STATIC_LIST"),
dr.Item("CONTROL_SQLCOMMAND_1"),
parent,
True)
End Select
Next
End Sub
#End Region
#Region "+++++ Mouse Events +++++"
Private Sub Control_Click(sender As Object, e As EventArgs)
Dim control As Control = DirectCast(sender, Control)
' Aktuelles Control highlighten
control.BringToFront()
CtrlBuilder.SetAllActiveColor()
' GUID des aktuellen Controls speichern
CURRENT_CONTROL_ID = ClassControlCommands.GetControlGuid(CtrlBuilder.CurrentControl.Name)
' Control Eigenschaften laden
'frmTool_ControlProperties.Instance.pgControlProperties.Enabled = True
pgControlProperties.Enabled = True
'frmTool_ControlProperties.Instance.LoadControlProperties(CtrlBuilder.CurrentControl)
'frmTool_ControlProperties.Instance.LoadControlPropertiesNeu(CtrlBuilder.CurrentControl)
LoadControlPropertiesNeu(CtrlBuilder.CurrentControl)
End Sub
Private Sub Control_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
' Check to see if the correct button has been pressed
If e.Button = Windows.Forms.MouseButtons.Left Then
CtrlBuilder.CurrentControl = sender
CtrlBuilder.BeginLocation = e.Location
' Set the mode flag to signal the MouseMove event handler that it
' needs to now calculate new positions for our control
Mouse_Moving = True
End If
End Sub
Private Sub ControlButton_MouseDown(sender As Object, e As MouseEventArgs) Handles btntextbox.MouseDown,
btnlabel.MouseDown,
btndtp.MouseDown,
btncmb.MouseDown,
btnCheckbox.MouseDown,
btnpb.MouseDown,
btngb.MouseDown,
btn_addtocal.MouseDown,
btn_addformdata.MouseDown,
btnRadioButton.MouseDown,
btnListBoxCheckable.MouseDown,
btnListBox.MouseDown
Mouse_Down = True
End Sub
Private Sub ControlButton_MouseMove(sender As Object, e As MouseEventArgs) Handles btntextbox.MouseMove,
btnlabel.MouseMove,
btndtp.MouseMove,
btncmb.MouseMove,
btnCheckbox.MouseMove,
btnpb.MouseMove,
btngb.MouseMove,
btn_addtocal.MouseMove,
btn_addformdata.MouseMove,
btnRadioButton.MouseMove,
btnListBoxCheckable.MouseMove,
btnListBox.MouseMove
If Mouse_Down = True Then
Dim control As Control = DirectCast(sender, Control)
control.DoDragDrop(control.Tag, DragDropEffects.Copy)
End If
Mouse_Down = False
End Sub
Private Sub Control_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp
' The button was released, so we're going back to Static mode.
If Mouse_Moving = True Then
Mouse_Moving = False
'end_location = e.Location
CtrlBuilder.EndLocation = e.Location
'frmTool_ControlProperties.Instance.UpdateControlLocation(CtrlBuilder.CurrentControl)
UpdateControlLocation(CtrlBuilder.CurrentControl)
ClassControlCommands.UpdateControlPosition(CtrlBuilder.CurrentControl.Location.X,
CtrlBuilder.CurrentControl.Location.Y,
CtrlBuilder.CurrentControl)
'Save_Control()
End If
' Restore the cursor image to the way we found it when the mouse
' button was pressed
MyBase.Cursor = Cursors.Default
End Sub
Private Sub Control_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
Try
If CtrlBuilder.CurrentControl Is Nothing Then
Exit Sub
End If
If Mouse_Moving = True Then
Me.Cursor = Cursors.Hand
Me.Refresh()
Dim control As Control = DirectCast(sender, Control)
Dim NowCursor As Point = CtrlBuilder.GetCursorPosition()
' Wenn das Control in einer GroupBox steckt
If ParentIsGroupBox(control) Then
Dim p As Control = control.Parent
Dim newPos As Point = New Point(NowCursor.X - p.Location.X - e.Location.X,
NowCursor.Y - p.Location.Y - e.Location.Y)
' Verhindert, dass das Control links+oben außerhalb der Groupbox geschoben wird = unerreichbar
If newPos.X < 0 Or newPos.Y < 0 Then
Exit Sub
End If
' Verhindert, dass das Control rechts+unten außerhalb der Groupbox geschoben wird = unerreichbar
If (newPos.X + control.Size.Width) > p.Size.Width Or (newPos.Y + control.Size.Height) > p.Size.Height Then
Exit Sub
End If
If Point.op_Inequality(NowCursor, LastCursor) Then
control.Location = newPos
LastCursor = NowCursor
End If
Else
' Alle normalen Controls
control.Location = New Point(NowCursor.X - CtrlBuilder.BeginLocation.X,
NowCursor.Y - CtrlBuilder.BeginLocation.Y)
End If
End If
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation, "MovableLabel_MouseMove")
Mouse_Moving = False
End Try
End Sub
#End Region
Private Sub Control_PressTab(sender As Object, e As PreviewKeyDownEventArgs)
'NOOP
End Sub
Private Function RebuildView()
Try
'Dim sql = "EXECUTE PRPMO_CREATE_SQL " & CURRENT_FORM_ID
'ClassDatabase.Execute_non_Query_Async(sql)
'Dim sql2 = "EXECUTE PRPMO_CREATE_TEMP_VIEWS"
'ClassDatabase.Execute_non_Query_Async(sql2)
'Return True
Dim noerror As Boolean = False
Dim sql = "EXECUTE PRPMO_CREATE_SQL " & CURRENT_FORM_ID
noerror = ClassDatabase.Execute_non_Query_withConn(sql, 1)
sql = "EXECUTE PRPMO_CREATE_TEMP_VIEWS"
noerror = ClassDatabase.Execute_non_Query_withConn(sql, 1)
Return noerror
Catch ex As Exception
MsgBox("Error in btnexecute_CreateViewSql:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
Return False
End Try
End Function
Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click
If RebuildView() = True Then
MsgBox("The Views have been created successful.", MsgBoxStyle.Information)
End If
End Sub
Private Sub frmLevel_Designer_Shown(sender As Object, e As EventArgs) Handles Me.Shown
formloaded = True
End Sub
Public Sub LoadControlPropertiesNeu(ctrl As Control)
Try
Dim controlId = DirectCast(ctrl.Tag, ClassControlMetadata).Id
Dim sql As String = String.Format("SELECT * FROM VWPMO_CONTROL_SCREEN WHERE CONTROL_ID = {0}", ControlId)
'Dim sqlHint As String = String.Format("SELECT HINT FROM TBPMO_CONTROL_LANGUAGE WHERE CONTROL_SCREEN_ID = {0} AND LANGUAGE_TYPE = '{1}'", controlId, USER_LANGUAGE)
Dim sqlHint = String.Format("SELECT HINT FROM TBPMO_CONTROL_LANGUAGE WHERE CONTROL_SCREEN_ID = (SELECT GUID FROM TBPMO_CONTROL_SCREEN WHERE CONTROL_ID = {0} AND SCREEN_ID = {1}) AND LANGUAGE_TYPE = '{2}'", controlId, CURRENT_SCREEN_ID, USER_LANGUAGE)
Dim dt As DataTable = ClassDatabase.Return_Datatable(sql)
Dim hint As String = ClassConverter.ToStringOrDefault(ClassDatabase.Execute_Scalar(sqlHint), Nothing)
Dim props As Object = Nothing
Dim r As DataRow = Nothing
Dim type As String = Nothing
If dt.Rows.Count <> 1 Then
MsgBox("Unexpected behaviour in LoadControlProperties: No Control could be loaded!" & vbNewLine & "Tag.ControlID: " & ControlId.ToString, MsgBoxStyle.Exclamation)
Exit Sub
End If
r = dt.Rows(0)
type = r.Item("CTRLTYPE_NAME")
'Props Object initialisieren
Select Case type
Case "Label" : props = New LabelProperties()
Case "Textbox" : props = New TextBoxProperties()
Case "Combobox" : props = New ComboBoxProperties()
Case "Checkbox" : props = New CheckBoxProperties()
Case "RadioButton" : props = New RadioButtonProperties()
Case "Datepicker" : props = New DateTimePickerProperties()
Case "Datagridview" : props = New DataGridViewProperties()
Case "Groupbox" : props = New GroupBoxProperties()
Case "Picturebox" : props = New PictureBoxProperties()
Case "ListBox" : props = New ComboBoxProperties()
Case "CheckedListBox" : props = New ComboBoxProperties()
Case "F_AddAppointment" : props = New FunctionAddAppointment()
Case "F_AddFormData" : props = New FunctionAddFormData()
End Select
'Generische Properties laden
props.ID = r.Item("CONTROL_ID")
props.Name = r.Item("CONTROL_NAME")
props.Size = New Size(r.Item("CTRLSCR_WIDTH"), r.Item("CTRLSCR_HEIGHT"))
props.Location = New Point(r.Item("CTRLSCR_X_LOC"), r.Item("CTRLSCR_Y_LOC"))
props.Hint = hint
'Control-spezifische Properties laden
Select Case type
Case "Label"
props.Type = "Label"
props.FontColor = IntToColor(r.Item("CTRLSCR_FONT_COLOR"))
props.Font = New Font(r.Item("CTRLSCR_FONT_FAMILY").ToString(),
CType(r.Item("CTRLSCR_FONT_SIZE"), Single),
CType(r.Item("CTRLSCR_FONT_STYLE"), FontStyle))
props.ColumnTitle = r.Item("CONTROL_COL_NAME")
props.Caption = r.Item("CTRLSCR_CAPTION")
props.SQLCommand = New SQLValue(NotNull(r.Item("CONTROL_SQLCOMMAND_1"), ""))
Case "Textbox"
props.Type = "Textbox"
props.FontColor = IntToColor(r.Item("CTRLSCR_FONT_COLOR"))
props.Font = New Font(r.Item("CTRLSCR_FONT_FAMILY").ToString(),
CType(r.Item("CTRLSCR_FONT_SIZE"), Single),
CType(r.Item("CTRLSCR_FONT_STYLE"), FontStyle))
props.ColumnTitle = r.Item("CONTROL_COL_NAME")
props.DefaultValue = ClassConverter.ToStringOrDefault(r.Item("CONTROL_DEF_VALUE"))
props.Format = NotNull([Enum].Parse(GetType(EnumFormatOptions), r.Item("CONTROL_FORMAT_TYPE")), EnumFormatOptions.String)
props.IsRequired = r.Item("CONTROL_REQUIRED")
props.IsReadOnly = r.Item("CONTROL_READ_ONLY")
props.TabStop = r.Item("CTRLSCR_TAB_STOP")
props.TabIndex = r.Item("CTRLSCR_TAB_INDEX")
props.ShowColumn = NotNull(CBool(r.Item("CONTROL_SHOW_COLUMN")), True)
props.Multiline = r.Item("CONTROL_MULTILINE")
props.SQLCommand = New SQLValue(NotNull(r.Item("CONTROL_SQLCOMMAND_1"), ""))
Case "Combobox"
props.FontColor = IntToColor(r.Item("CTRLSCR_FONT_COLOR"))
props.Font = New Font(r.Item("CTRLSCR_FONT_FAMILY").ToString(),
CType(r.Item("CTRLSCR_FONT_SIZE"), Single),
CType(r.Item("CTRLSCR_FONT_STYLE"), FontStyle))
props.ColumnTitle = r.Item("CONTROL_COL_NAME")
props.DefaultValue = ClassConverter.ToStringOrDefault(r.Item("CONTROL_DEF_VALUE"))
props.MasterDataId = r.Item("CTRLSCR_MASTER_DATA_ID")
props.Format = NotNull([Enum].Parse(GetType(EnumFormatOptions), r.Item("CONTROL_FORMAT_TYPE")), EnumFormatOptions.String)
props.StaticList = NotNull(r.Item("CONTROL_STATIC_LIST"), "")
props.IsRequired = r.Item("CONTROL_REQUIRED")
props.IsReadOnly = r.Item("CONTROL_READ_ONLY")
props.TabStop = r.Item("CTRLSCR_TAB_STOP")
props.TabIndex = r.Item("CTRLSCR_TAB_INDEX")
props.ShowColumn = NotNull(CBool(r.Item("CONTROL_SHOW_COLUMN")), True)
props.SQLCommand = New SQLValue(NotNull(r.Item("CONTROL_SQLCOMMAND_1"), ""))
Case "Checkbox"
props.FontColor = IntToColor(r.Item("CTRLSCR_FONT_COLOR"))
props.Font = New Font(r.Item("CTRLSCR_FONT_FAMILY").ToString(),
CType(r.Item("CTRLSCR_FONT_SIZE"), Single),
CType(r.Item("CTRLSCR_FONT_STYLE"), FontStyle))
props.ColumnTitle = r.Item("CONTROL_COL_NAME")
props.Caption = r.Item("CTRLSCR_CAPTION")
props.DefaultValue = ClassConverter.ToBooleanOrDefault(r.Item("CONTROL_DEF_VALUE"))
props.IsRequired = r.Item("CONTROL_REQUIRED")
props.IsReadOnly = r.Item("CONTROL_READ_ONLY")
props.ShowColumn = NotNull(CBool(r.Item("CONTROL_SHOW_COLUMN")), True)
props.TabStop = r.Item("CTRLSCR_TAB_STOP")
props.TabIndex = r.Item("CTRLSCR_TAB_INDEX")
Case "RadioButton"
props.ColumnTitle = r.Item("CONTROL_COL_NAME")
props.Caption = r.Item("CTRLSCR_CAPTION")
props.IsRequired = r.Item("CONTROL_REQUIRED")
props.IsReadOnly = r.Item("CONTROL_READ_ONLY")
props.FontColor = IntToColor(r.Item("CTRLSCR_FONT_COLOR"))
props.Font = New Font(r.Item("CTRLSCR_FONT_FAMILY").ToString(),
CType(r.Item("CTRLSCR_FONT_SIZE"), Single),
CType(r.Item("CTRLSCR_FONT_STYLE"), FontStyle))
Case "Datepicker"
props.FontColor = IntToColor(r.Item("CTRLSCR_FONT_COLOR"))
props.Font = New Font(r.Item("CTRLSCR_FONT_FAMILY").ToString(),
CType(r.Item("CTRLSCR_FONT_SIZE"), Single),
CType(r.Item("CTRLSCR_FONT_STYLE"), FontStyle))
props.ColumnTitle = r.Item("CONTROL_COL_NAME")
Dim i = r.Item("CONTROL_DEF_VALUE")
props.DefaultValue = NotNull(r.Item("CONTROL_DEF_VALUE"), EnumDateTimePickerDefaultValueOptions.Empty)
props.IsRequired = r.Item("CONTROL_REQUIRED")
props.IsReadOnly = r.Item("CONTROL_READ_ONLY")
props.ShowColumn = NotNull(CBool(r.Item("CONTROL_SHOW_COLUMN")), True)
props.TabStop = r.Item("CTRLSCR_TAB_STOP")
props.TabIndex = r.Item("CTRLSCR_TAB_INDEX")
Case "Datagridview"
' Keine zusätzliche Properties
props.FontColor = IntToColor(r.Item("CTRLSCR_FONT_COLOR"))
props.Font = New Font(r.Item("CTRLSCR_FONT_FAMILY").ToString(),
CType(r.Item("CTRLSCR_FONT_SIZE"), Single),
CType(r.Item("CTRLSCR_FONT_STYLE"), FontStyle))
props.ColumnTitle = ClassConverter.ToStringOrDefault(r.Item("CONTROL_COL_NAME"), ctrl.Name)
props.ShowColumn = ClassConverter.ToBooleanOrDefault(r.Item("CONTROL_SHOW_COLUMN"), True)
props.SQLCommand = New SQLValue(NotNull(r.Item("CONTROL_SQLCOMMAND_1"), ""))
props.IsRequired = r.Item("CONTROL_REQUIRED")
props.IsReadOnly = r.Item("CONTROL_READ_ONLY")
Case "Groupbox"
props.Caption = r.Item("CTRLSCR_CAPTION")
props.BackColor = IntToColor(r.Item("CTRLSCR_BACK_COLOR"))
Case "Picturebox"
props.IsRequired = r.Item("CONTROL_REQUIRED")
props.IsReadOnly = r.Item("CONTROL_READ_ONLY")
Case "ListBox"
props.StaticList = ClassConverter.ToStringOrDefault(r.Item("CONTROL_STATIC_LIST"))
props.IsRequired = r.Item("CONTROL_REQUIRED")
props.IsReadOnly = r.Item("CONTROL_READ_ONLY")
props.FontColor = IntToColor(r.Item("CTRLSCR_FONT_COLOR"))
props.Font = New Font(r.Item("CTRLSCR_FONT_FAMILY").ToString(),
CType(r.Item("CTRLSCR_FONT_SIZE"), Single),
CType(r.Item("CTRLSCR_FONT_STYLE"), FontStyle))
props.ColumnTitle = ClassConverter.ToStringOrDefault(r.Item("CONTROL_COL_NAME"), ctrl.Name)
props.ShowColumn = ClassConverter.ToBooleanOrDefault(r.Item("CONTROL_SHOW_COLUMN"), True)
Case "CheckedListBox"
props.StaticList = ClassConverter.ToStringOrDefault(r.Item("CONTROL_STATIC_LIST"))
props.IsRequired = r.Item("CONTROL_REQUIRED")
props.IsReadOnly = r.Item("CONTROL_READ_ONLY")
props.FontColor = IntToColor(r.Item("CTRLSCR_FONT_COLOR"))
props.Font = New Font(r.Item("CTRLSCR_FONT_FAMILY").ToString(),
CType(r.Item("CTRLSCR_FONT_SIZE"), Single),
CType(r.Item("CTRLSCR_FONT_STYLE"), FontStyle))
props.ColumnTitle = ClassConverter.ToStringOrDefault(r.Item("CONTROL_COL_NAME"), ctrl.Name)
props.ShowColumn = ClassConverter.ToBooleanOrDefault(r.Item("CONTROL_SHOW_COLUMN"), True)
Case "F_AddAppointment"
props.Caption() = r.Item("CTRLSCR_CAPTION")
Dim f = ClassFunctionCommands.LoadFunction(controlId)
Dim FromDateId, ToDateId, SubjectString, Subject2String, PlaceString, DescString
FromDateId = f.Item("INTEGER1")
If IsDBNull(FromDateId) OrElse FromDateId = 0 Then
props.FromDate = ""
Else
props.FromDate = Get_Name_for_ControlID(FromDateId, CURRENT_FORM_ID)
End If
ToDateId = f.Item("INTEGER2")
If IsDBNull(ToDateId) OrElse ToDateId = 0 Then
props.ToDate = ""
Else
props.ToDate = Get_Name_for_ControlID(ToDateId, CURRENT_FORM_ID)
End If
SubjectString = f.Item("STRING1")
If IsDBNull(SubjectString) OrElse String.IsNullOrEmpty(SubjectString) Then
props.Subject = ""
Else
props.Subject = SubjectString
End If
Subject2String = f.Item("STRING2")
If IsDBNull(Subject2String) OrElse String.IsNullOrEmpty(Subject2String) Then
props.Subject2 = ""
Else
props.Subject2 = Subject2String
End If
PlaceString = f.Item("STRING3")
If IsDBNull(PlaceString) OrElse String.IsNullOrEmpty(PlaceString) Then
props.Place = ""
Else
props.Place = PlaceString
End If
DescString = f.Item("STRING4")
If IsDBNull(DescString) OrElse String.IsNullOrEmpty(DescString) Then
props.Description = ""
Else
props.Description = DescString
End If
Case "F_AddFormData"
props.Caption = r.Item("CTRLSCR_CAPTION")
Dim f = ClassFunctionCommands.LoadFunction(controlId)
Dim FormId = f.Item("INTEGER1")
props.FormID = NotNullInt(FormId, 0)
Dim ScreenId = f.Item("INTEGER2")
props.ScreenID = NotNullInt(ScreenId, 0)
End Select
CURRENT_CONTROL_ID = r.Item("CONTROL_ID")
' Aktuelle Control Eigenschaften anzeigen
Me.pgControlProperties.SelectedObject = props
' Fenster Titel aktualisieren
Catch ex As Exception
MsgBox("Error in LoadControlProperties" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
Public Sub UpdateControlLocation(ctrl As Control)
Current_Properties = Me.pgControlProperties.SelectedObject
If Current_Properties IsNot Nothing Then
Current_Properties.Location = ctrl.Location
Me.pgControlProperties.SelectedObject = Current_Properties
End If
End Sub
Public Function SaveControlProperties(ctrl As Control, properties As Object) As Boolean
If ClassControlCommands.UpdateControl(ctrl, properties) Then
LoadControlPropertiesNeu(ctrl)
Return True
Else
MsgBox("Fehler beim Speichern der Elementeigenschaften.", MsgBoxStyle.Critical)
Return False
End If
End Function
Private Sub btnSaveControl_Click(sender As Object, e As EventArgs) Handles btnSaveControl.Click
If SaveControlProperties(CtrlBuilder.CurrentControl, pgControlProperties.SelectedObject) Then
lblStatus.Text = "Änderungen gespeichert - " & Now
lblStatus.Visible = True
Else
lblStatus.Visible = False
End If
End Sub
Private Sub btnDeleteControl_Click(sender As Object, e As EventArgs) Handles btnDeleteControl.Click
If MsgBox("Wollen Sie das Element wirklich löschen?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
If IsGroupBox(CtrlBuilder.CurrentControl) Then
Dim parentID As Integer = GetControlID_for_Name(CtrlBuilder.CurrentControl.Name, CURRENT_FORM_ID)
Dim SQL = "SELECT GUID FROM TBPMO_CONTROL WHERE PARENT_CONTROL_ID = " & parentID
Dim dt As DataTable = ClassDatabase.Return_Datatable(SQL)
For Each dr As DataRow In dt.Rows
Dim id As Integer = dr.Item(0)
ClassControlCommands.DeleteControl(id)
Next
End If
If ClassControlCommands.DeleteControl() = True Then
'MsgBox("Element gelöscht, Elemente werden neu geladen.", MsgBoxStyle.Information)
CtrlBuilder.ClearControls()
frmLevel_Designer.Instance.LoadControls()
End If
End If
End Sub
Private Sub pgControlProperties_PropertyValueChanged(s As Object, e As PropertyValueChangedEventArgs)
Dim oldValue As Object = e.OldValue
Dim newValue As Object = e.ChangedItem.Value
Dim currentProperty As String = e.ChangedItem.Label
Dim ctrl As Control = CtrlBuilder.CurrentControl
Select Case currentProperty
Case "Location"
ctrl.Location = newValue
Case "X"
ctrl.Location = New Point(newValue, ctrl.Location.Y)
Case "Y"
ctrl.Location = New Point(ctrl.Location.X, newValue)
Case "Size"
ctrl.Size = newValue
Case "Width"
ctrl.Size = New Size(newValue, ctrl.Size.Height)
Case "Height"
ctrl.Size = New Size(ctrl.Size.Width, newValue)
Case "Name"
ctrl.Name = newValue
Case "Caption"
ctrl.Text = newValue
Case "Font"
ctrl.Font = newValue
Case "FontColor"
ctrl.ForeColor = newValue
Case "BackColor"
ctrl.BackColor = newValue
End Select
lblStatus.Text = "Ausstehende Änderungen"
lblStatus.Visible = True
End Sub
End Class

View File

@ -1,648 +0,0 @@
Public Class frmTool_ControlProperties
Private Shared _Instance As frmTool_ControlProperties = Nothing
Private CurrentProperties As Object = Nothing
Public Shared Function Instance() As frmTool_ControlProperties
If _Instance Is Nothing OrElse _Instance.IsDisposed = True Then
_Instance = New frmTool_ControlProperties
End If
_Instance.BringToFront()
Return _Instance
End Function
Private Sub frmTool_ControlProperties_Load(sender As Object, e As EventArgs) Handles MyBase.Load
ClassWindowLocation.LoadFormLocationSize(Me, 1, CURRENT_SCREEN_ID, "frmTool_ControlProperties")
End Sub
Private Sub frmTool_ControlProperties_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
Try
ClassWindowLocation.SaveFormLocationSize(Me, 1, CURRENT_SCREEN_ID, "frmTool_ControlProperties")
My.Settings.Save()
Catch ex As Exception
MsgBox("Settings could not be saved.\n" & ex.ToString)
End Try
End Sub
Public Sub LoadControlPropertiesNeu(ctrl As Control)
Try
'TODO: LoadControlProperties Neuschreiben!!!
Dim sql As String = String.Format("SELECT * FROM VWPMO_CONTROL_SCREEN WHERE CONTROL_ID = {0}", DirectCast(ctrl.Tag, ClassControlMetadata).Id)
Dim dt As DataTable = ClassDatabase.Return_Datatable(sql)
Dim props As Object = Nothing
Dim r As DataRow = Nothing
Dim type As String = Nothing
If dt.Rows.Count <> 1 Then
Exit Sub
End If
r = dt.Rows(0)
type = r.Item("CTRLTYPE_NAME")
Select Case type
Case "Label"
props = New LabelProperties()
' Default Values
props.ID = r.Item("CONTROL_ID")
props.Name = r.Item("CONTROL_NAME")
props.Size = New Size(r.Item("CTRLSCR_WIDTH"), r.Item("CTRLSCR_HEIGHT"))
props.Location = New Point(r.Item("CTRLSCR_X_LOC"), r.Item("CTRLSCR_Y_LOC"))
props.FontColor = IntToColor(r.Item("CTRLSCR_FONT_COLOR"))
props.Font = New Font(r.Item("CTRLSCR_FONT_FAMILY").ToString(),
CType(r.Item("CTRLSCR_FONT_SIZE"), Single),
CType(r.Item("CTRLSCR_FONT_STYLE"), FontStyle))
props.ColumnTitle = r.Item("CONTROL_COL_NAME")
props.Caption = r.Item("CTRLSCR_CAPTION")
props.SQLCommand = New SQLValue(NotNull(r.Item("CONTROL_SQLCOMMAND_1"), ""))
Case "Textbox"
props = New TextBoxProperties()
' Default Values
props.ID = r.Item("CONTROL_ID")
props.Name = r.Item("CONTROL_NAME")
props.Size = New Size(r.Item("CTRLSCR_WIDTH"), r.Item("CTRLSCR_HEIGHT"))
props.Location = New Point(r.Item("CTRLSCR_X_LOC"), r.Item("CTRLSCR_Y_LOC"))
props.FontColor = IntToColor(r.Item("CTRLSCR_FONT_COLOR"))
props.Font = New Font(r.Item("CTRLSCR_FONT_FAMILY").ToString(),
CType(r.Item("CTRLSCR_FONT_SIZE"), Single),
CType(r.Item("CTRLSCR_FONT_STYLE"), FontStyle))
props.ColumnTitle = r.Item("CONTROL_COL_NAME")
props.DefaultValue = ClassConverter.ToStringOrDefault(r.Item("CONTROL_DEF_VALUE"))
props.Format = NotNull([Enum].Parse(GetType(EnumFormatOptions), r.Item("CONTROL_FORMAT_TYPE")), EnumFormatOptions.String)
props.IsRequired = r.Item("CONTROL_REQUIRED")
props.IsReadOnly = r.Item("CONTROL_READ_ONLY")
props.TabStop = r.Item("CTRLSCR_TAB_STOP")
props.TabIndex = r.Item("CTRLSCR_TAB_INDEX")
props.ShowColumn = NotNull(r.Item("CONTROL_SHOW_COLUMN"), True)
props.Multiline = r.Item("CONTROL_MULTILINE")
props.SQLCommand = New SQLValue(NotNull(r.Item("CONTROL_SQLCOMMAND_1"), ""))
Case "Combobox"
props = New ComboBoxProperties()
' Default Values
props.ID = r.Item("CONTROL_ID")
props.Name = r.Item("CONTROL_NAME")
props.Size = New Size(r.Item("CTRLSCR_WIDTH"), r.Item("CTRLSCR_HEIGHT"))
props.Location = New Point(r.Item("CTRLSCR_X_LOC"), r.Item("CTRLSCR_Y_LOC"))
props.FontColor = IntToColor(r.Item("CTRLSCR_FONT_COLOR"))
props.Font = New Font(r.Item("CTRLSCR_FONT_FAMILY").ToString(),
CType(r.Item("CTRLSCR_FONT_SIZE"), Single),
CType(r.Item("CTRLSCR_FONT_STYLE"), FontStyle))
props.ColumnTitle = r.Item("CONTROL_COL_NAME")
props.DefaultValue = ClassConverter.ToStringOrDefault(r.Item("CONTROL_DEF_VALUE"))
props.MasterDataId = r.Item("CTRLSCR_MASTER_DATA_ID")
props.Format = NotNull([Enum].Parse(GetType(EnumFormatOptions), r.Item("CONTROL_FORMAT_TYPE")), EnumFormatOptions.String)
props.StaticList = NotNull(r.Item("CONTROL_STATIC_LIST"), "")
props.IsRequired = r.Item("CONTROL_REQUIRED")
props.IsReadOnly = r.Item("CONTROL_READ_ONLY")
props.TabStop = r.Item("CTRLSCR_TAB_STOP")
props.TabIndex = r.Item("CTRLSCR_TAB_INDEX")
props.ShowColumn = NotNull(r.Item("CONTROL_SHOW_COLUMN"), True)
props.SQLCommand = New SQLValue(NotNull(r.Item("CONTROL_SQLCOMMAND_1"), ""))
Case "Checkbox"
props = New CheckBoxProperties()
' Default Values
props.ID = r.Item("CONTROL_ID")
props.Name = r.Item("CONTROL_NAME")
props.Size = New Size(r.Item("CTRLSCR_WIDTH"), r.Item("CTRLSCR_HEIGHT"))
props.Location = New Point(r.Item("CTRLSCR_X_LOC"), r.Item("CTRLSCR_Y_LOC"))
props.FontColor = IntToColor(r.Item("CTRLSCR_FONT_COLOR"))
props.Font = New Font(r.Item("CTRLSCR_FONT_FAMILY").ToString(),
CType(r.Item("CTRLSCR_FONT_SIZE"), Single),
CType(r.Item("CTRLSCR_FONT_STYLE"), FontStyle))
props.ColumnTitle = r.Item("CONTROL_COL_NAME")
props.Caption = r.Item("CTRLSCR_CAPTION")
props.DefaultValue = ClassConverter.ToBooleanOrDefault(r.Item("CONTROL_DEF_VALUE"))
props.IsRequired = r.Item("CONTROL_REQUIRED")
props.IsReadOnly = r.Item("CONTROL_READ_ONLY")
props.ShowColumn = NotNull(r.Item("CONTROL_SHOW_COLUMN"), True)
props.TabStop = r.Item("CTRLSCR_TAB_STOP")
props.TabIndex = r.Item("CTRLSCR_TAB_INDEX")
Case "RadioButton"
props = New RadioButtonProperties()
props.Caption = r.Item("CTRLSCR_CAPTION")
props.ID = r.Item("CONTROL_ID")
props.Name = r.Item("CONTROL_NAME")
props.Size = New Size(r.Item("CTRLSCR_WIDTH"), r.Item("CTRLSCR_HEIGHT"))
props.Location = New Point(r.Item("CTRLSCR_X_LOC"), r.Item("CTRLSCR_Y_LOC"))
props.FontColor = IntToColor(r.Item("CTRLSCR_FONT_COLOR"))
props.Font = New Font(r.Item("CTRLSCR_FONT_FAMILY").ToString(),
CType(r.Item("CTRLSCR_FONT_SIZE"), Single),
CType(r.Item("CTRLSCR_FONT_STYLE"), FontStyle))
Case "Datepicker"
props = New DateTimePickerProperties()
' Default Values
props.ID = r.Item("CONTROL_ID")
props.Name = r.Item("CONTROL_NAME")
props.Size = New Size(r.Item("CTRLSCR_WIDTH"), r.Item("CTRLSCR_HEIGHT"))
props.Location = New Point(r.Item("CTRLSCR_X_LOC"), r.Item("CTRLSCR_Y_LOC"))
props.FontColor = IntToColor(r.Item("CTRLSCR_FONT_COLOR"))
props.Font = New Font(r.Item("CTRLSCR_FONT_FAMILY").ToString(),
CType(r.Item("CTRLSCR_FONT_SIZE"), Single),
CType(r.Item("CTRLSCR_FONT_STYLE"), FontStyle))
props.ColumnTitle = r.Item("CONTROL_COL_NAME")
props.DefaultValue = NotNull(r.Item("CONTROL_DEF_VALUE"), EnumDateTimePickerDefaultValueOptions.Empty)
props.IsRequired = r.Item("CONTROL_REQUIRED")
props.IsReadOnly = r.Item("CONTROL_READ_ONLY")
props.ShowColumn = NotNull(r.Item("CONTROL_SHOW_COLUMN"), True)
props.TabStop = r.Item("CTRLSCR_TAB_STOP")
props.TabIndex = r.Item("CTRLSCR_TAB_INDEX")
Case "Datagridview"
props = New DataGridViewProperties()
' Default Values
props.ID = r.Item("CONTROL_ID")
props.Name = r.Item("CONTROL_NAME")
props.Size = New Size(r.Item("CTRLSCR_WIDTH"), r.Item("CTRLSCR_HEIGHT"))
props.Location = New Point(r.Item("CTRLSCR_X_LOC"), r.Item("CTRLSCR_Y_LOC"))
Case "Groupbox"
props = New GroupBoxProperties()
' Default Values
props.ID = r.Item("CONTROL_ID")
props.Name = r.Item("CONTROL_NAME")
props.Size = New Size(r.Item("CTRLSCR_WIDTH"), r.Item("CTRLSCR_HEIGHT"))
props.Location = New Point(r.Item("CTRLSCR_X_LOC"), r.Item("CTRLSCR_Y_LOC"))
props.Caption = r.Item("CTRLSCR_CAPTION")
props.BackColor = IntToColor(r.Item("CTRLSCR_BACK_COLOR"))
Case "Picturebox"
props = New PictureBoxProperties()
' Default Values
props.ID = r.Item("CONTROL_ID")
props.Name = r.Item("CONTROL_NAME")
props.Size = New Size(r.Item("CTRLSCR_WIDTH"), r.Item("CTRLSCR_HEIGHT"))
props.Location = New Point(r.Item("CTRLSCR_X_LOC"), r.Item("CTRLSCR_Y_LOC"))
props.IsRequired = r.Item("CONTROL_REQUIRED")
props.IsReadOnly = r.Item("CONTROL_READ_ONLY")
Case "ListBox"
props = New ComboBoxProperties()
' Default Values
props.ID = r.Item("CONTROL_ID")
props.Name = r.Item("CONTROL_NAME")
props.Size = New Size(r.Item("CTRLSCR_WIDTH"), r.Item("CTRLSCR_HEIGHT"))
props.Location = New Point(r.Item("CTRLSCR_X_LOC"), r.Item("CTRLSCR_Y_LOC"))
props.StaticList = ClassConverter.ToStringOrDefault(r.Item("CONTROL_STATIC_LIST"))
props.IsRequired = r.Item("CONTROL_REQUIRED")
props.IsReadOnly = r.Item("CONTROL_READ_ONLY")
Case "CheckedListBox"
props = New ComboBoxProperties()
' Default Values
props.ID = r.Item("CONTROL_ID")
props.Name = r.Item("CONTROL_NAME")
props.Size = New Size(r.Item("CTRLSCR_WIDTH"), r.Item("CTRLSCR_HEIGHT"))
props.Location = New Point(r.Item("CTRLSCR_X_LOC"), r.Item("CTRLSCR_Y_LOC"))
props.StaticList = ClassConverter.ToStringOrDefault(r.Item("CONTROL_STATIC_LIST"))
props.IsRequired = r.Item("CONTROL_REQUIRED")
props.IsReadOnly = r.Item("CONTROL_READ_ONLY")
Case "F_AddAppointment"
props = New FunctionAddAppointment()
props.Caption() = r.Item("CTRLSCR_CAPTION")
Dim controlId = DirectCast(ctrl.Tag, ClassControlMetadata).Id
Dim f = ClassFunctionCommands.LoadFunction(controlId)
Dim FromDateId, ToDateId, SubjectString, Subject2String, PlaceString, DescString
FromDateId = f.Item("INTEGER1")
If IsDBNull(FromDateId) OrElse FromDateId = 0 Then
props.FromDate = ""
Else
props.FromDate = GetName_for_ControlID(FromDateId, CURRENT_FORM_ID)
End If
ToDateId = f.Item("INTEGER2")
If IsDBNull(ToDateId) OrElse ToDateId = 0 Then
props.ToDate = ""
Else
props.ToDate = GetName_for_ControlID(ToDateId, CURRENT_FORM_ID)
End If
SubjectString = f.Item("STRING1")
If IsDBNull(SubjectString) OrElse String.IsNullOrEmpty(SubjectString) Then
props.Subject = ""
Else
props.Subject = SubjectString
End If
Subject2String = f.Item("STRING2")
If IsDBNull(Subject2String) OrElse String.IsNullOrEmpty(Subject2String) Then
props.Subject2 = ""
Else
props.Subject2 = Subject2String
End If
PlaceString = f.Item("STRING3")
If IsDBNull(PlaceString) OrElse String.IsNullOrEmpty(PlaceString) Then
props.Place = ""
Else
props.Place = PlaceString
End If
DescString = f.Item("STRING4")
If IsDBNull(DescString) OrElse String.IsNullOrEmpty(DescString) Then
props.Description = ""
Else
props.Description = DescString
End If
Case "F_AddFormData"
props = New FunctionAddFormData()
props.Caption = r.Item("CTRLSCR_CAPTION")
Dim controlId = DirectCast(ctrl.Tag, ClassControlMetadata).Id
Dim f = ClassFunctionCommands.LoadFunction(controlId)
Dim FormId = f.Item("INTEGER1")
If IsDBNull(FormId) OrElse FormId = 0 Then
props.FormID = 0
Else
props.FormID = FormId
End If
Dim ScreenId = f.Item("INTEGER2")
If IsDBNull(ScreenId) OrElse ScreenId = 0 Then
props.ScreenID = 0
Else
props.ScreenID = ScreenId
End If
End Select
CURRENT_CONTROL_ID = r.Item("CONTROL_ID")
' Aktuelle Control Eigenschaften anzeigen
Me.pgControlProperties.SelectedObject = props
' Fenster Titel aktualisieren
Me.Text = String.Format("Eigenschaften von {0}({1})", type, props.ID.ToString())
' Control Name akutalisieren
Me.tslControlName.Text = r.Item("CONTROL_NAME")
Catch ex As Exception
MsgBox("Error in LoadControlProperties" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
' ADDED 25.11
' Lade Control Eigenschaften und zeige diese an
' Wird von frmLevelDesigner aufgerufen
Public Sub LoadControlProperties(ctrl As Control)
Try
Dim sql As String = "SELECT CTRLSCR_ID FROM VWPMO_CONTROL_SCREEN WHERE CONTROL_NAME = '" & ctrl.Name & "' AND FORM_ID = " & CURRENT_FORM_ID & " and SCREEN_ID = " & CURRENT_SCREEN_ID
Dim CTRLSCR_ID = ClassDatabase.Execute_Scalar(sql)
If CTRLSCR_ID > 0 Then
Dim DT As DataTable = ClassDatabase.Return_Datatable("SELECT * FROM VWPMO_CONTROL_SCREEN WHERE CTRLSCR_ID = " & CTRLSCR_ID)
If DT.Rows.Count = 1 Then
Dim row As DataRow = DT.Rows(0)
Dim type As String = row.Item("CTRLTYPE_NAME")
Dim props As Object = Nothing
Dim fontcolor As Color
Dim fontfamily As String
Dim fontstyle As FontStyle
Dim fontsize As Single
Dim isreadonly As Boolean
Dim isrequired As Boolean
Dim columntitle As String
Dim DefaultValue As String
Select Case type
Case "Label"
props = New LabelProperties()
props.Caption = row.Item("CTRLSCR_CAPTION")
Case "Textbox"
props = New TextBoxProperties()
props.DefaultValue = ClassConverter.ToStringOrDefault(row.Item("CONTROL_DEF_VALUE"))
If Not IsDBNull(row.Item("CONTROL_FORMAT_TYPE")) Then
props.Format = DirectCast([Enum].Parse(GetType(EnumFormatOptions), row.Item("CONTROL_FORMAT_TYPE")), Integer)
Else
props.Format = "String"
End If
Case "Combobox"
props = New ComboBoxProperties()
props.MasterDataId = row.Item("CTRLSCR_MASTER_DATA_ID")
props.DefaultValue = ClassConverter.ToStringOrDefault(row.Item("CONTROL_DEF_VALUE"))
If Not IsDBNull(row.Item("CONTROL_FORMAT_TYPE")) Then
props.Format = DirectCast([Enum].Parse(GetType(EnumFormatOptions), row.Item("CONTROL_FORMAT_TYPE")), Integer)
Else
props.Format = "String"
End If
props.StaticList = ClassConverter.ToStringOrDefault(row.Item("CONTROL_STATIC_LIST"))
Case "Checkbox"
props = New CheckBoxProperties()
props.Caption = row.Item("CTRLSCR_CAPTION")
props.DefaultValue = ClassConverter.ToBooleanOrDefault(row.Item("CONTROL_DEF_VALUE"))
Case "Datepicker"
props = New DateTimePickerProperties()
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"
props = New GroupBoxProperties()
props.Caption = row.Item("CTRLSCR_CAPTION")
props.BackColor = IntToColor(row.Item("CTRLSCR_BACK_COLOR"))
Case "Picturebox"
props = New PictureBoxProperties()
Case "RadioButton"
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"
props = New FunctionAddFormData()
Case "CheckedListBox"
props = New ComboBoxProperties()
props.StaticList = ClassConverter.ToStringOrDefault(row.Item("CONTROL_STATIC_LIST"))
Case "ListBox"
props = New ComboBoxProperties()
props.StaticList = ClassConverter.ToStringOrDefault(row.Item("CONTROL_STATIC_LIST"))
Case Else
MsgBox("Unknown control type " & type, MsgBoxStyle.Exclamation, "Error in LoadControlProperties:")
End Select
' Generic Properties
props.ID = row.Item("CONTROL_ID")
props.Name = row.Item("CONTROL_NAME")
props.Size = New Size(row.Item("CTRLSCR_WIDTH"), row.Item("CTRLSCR_HEIGHT"))
'TODO: calc location
'If row.Item("CONTROL_PARENT_ID") <> 0 Then
' Dim parentSQL = "SELECT CTRLSCR_X_LOC, CTRLSCR_Y_LOC FROM VWPMO_VALUES WHERE = CONTROL_ID = " & row.Item("CONTROL_PARENT_ID")
'End If
props.Location = New Point(row.Item("CTRLSCR_X_LOC"), row.Item("CTRLSCR_Y_LOC"))
Me.Text = "Eigenschaften Control-ID: " & props.ID
If type = "F_AddAppointment" Then
Dim ControlId = GetControlID_for_Name(ctrl.Name, CURRENT_FORM_ID)
Dim dr = ClassFunctionCommands.LoadFunction(ControlId)
Dim FromDateId, ToDateId, SubjectString, Subject2String, PlaceString, DescString
FromDateId = dr.Item("INTEGER1")
ToDateId = dr.Item("INTEGER2")
SubjectString = dr.Item("STRING1")
Subject2String = dr.Item("STRING2")
PlaceString = dr.Item("STRING3")
DescString = dr.Item("STRING4")
If IsDBNull(FromDateId) OrElse FromDateId = 0 Then
props.FromDate = ""
Else
props.FromDate = GetName_for_ControlID(FromDateId, CURRENT_FORM_ID)
End If
If IsDBNull(ToDateId) OrElse ToDateId = 0 Then
props.ToDate = ""
Else
props.ToDate = GetName_for_ControlID(ToDateId, CURRENT_FORM_ID)
End If
If IsDBNull(SubjectString) OrElse String.IsNullOrEmpty(SubjectString) Then
props.Subject = ""
Else
props.Subject = SubjectString
End If
If IsDBNull(Subject2String) OrElse String.IsNullOrEmpty(Subject2String) Then
props.Subject2 = ""
Else
props.Subject2 = Subject2String
End If
If IsDBNull(PlaceString) OrElse String.IsNullOrEmpty(PlaceString) Then
props.Place = ""
Else
props.Place = PlaceString
End If
If IsDBNull(DescString) OrElse String.IsNullOrEmpty(DescString) Then
props.Description = ""
Else
props.Description = DescString
End If
props.Caption = row.Item("CTRLSCR_CAPTION")
ElseIf type = "F_AddFormData" Then
' TODO
Dim ControlId = GetControlID_for_Name(ctrl.Name, CURRENT_FORM_ID)
Dim dr = ClassFunctionCommands.LoadFunction(ControlId)
Dim FormId, ScreenId
FormId = dr.Item("INTEGER1")
ScreenId = dr.Item("INTEGER2")
If IsDBNull(FormId) OrElse FormId = 0 Then
props.FormID = 0
Else
props.FormID = FormId
End If
If IsDBNull(ScreenId) OrElse ScreenId = 0 Then
props.ScreenID = 0
Else
props.ScreenID = ScreenId
End If
props.Caption = row.Item("CTRLSCR_CAPTION")
End If
' Control Properties
If Not type.Contains("F_") Then
' PreSave and Convert Properties
fontcolor = IntToColor(row.Item("CTRLSCR_FONT_COLOR"))
fontfamily = row.Item("CTRLSCR_FONT_FAMILY")
fontstyle = CType(row.Item("CTRLSCR_FONT_STYLE"), FontStyle)
fontsize = CType(row.Item("CTRLSCR_FONT_SIZE"), Single)
isreadonly = row.Item("CONTROL_READ_ONLY")
isrequired = row.Item("CONTROL_REQUIRED")
columntitle = row.Item("CONTROL_COL_NAME")
' Assign Properties to Class
props.FontColor = fontcolor
props.Font = New Font(fontfamily, fontsize, fontstyle)
props.ColumnTitle = columntitle
'ReadOnly
If type = "Textbox" Or type = "Datepicker" Or type = "Combobox" Or type = "Picturebox" Or type = "RadioButton" Or type = "Checkbox" Or type = "CheckedListBox" _
Or type = "ListBox" Then
props.IsReadOnly = row.Item("CONTROL_READ_ONLY")
End If
' Nicht verfügbar für label
If type = "Textbox" Or type = "Combobox" Or type = "Datepicker" Or type = "Checkbox" Or type = "RadioButton" Or type = "CheckedListBox" _
Or type = "ListBox" Then
props.TabStop = row.Item("CTRLSCR_TAB_STOP")
props.TabIndex = row.Item("CTRLSCR_TAB_INDEX")
If Not IsDBNull(row.Item("CONTROL_SHOW_COLUMN")) Then
props.ShowColumn = row.Item("CONTROL_SHOW_COLUMN")
Else
props.ShowColumn = True
End If
End If
If type = "Textbox" Then
props.Multiline = row.Item("CONTROL_MULTILINE")
End If
If type = "Combobox" Or type = "CheckedListBox" Or type = "ListBox" Or type = "Textbox" Then
If row.Item("CONTROL_SQLCOMMAND_1").ToString.Length > 1 Then
Dim value As New SQLValue(row.Item("CONTROL_SQLCOMMAND_1").ToString)
props.SQLCommand = value
'props.SQLCommand = row.Item("CONTROL_SQLCOMMAND_1").ToString
End If
'props.ParentFormID = row.Item("PARENT_FORM_ID")
props.IsRequired = isrequired
props.IsReadOnly = isreadonly
End If
If type = "Label" Then
If row.Item("CONTROL_SQLCOMMAND_1").ToString.Length > 1 Then
Dim value As New SQLValue(row.Item("CONTROL_SQLCOMMAND_1").ToString)
props.SQLCommand = value
'props.SQLCommand = row.Item("CONTROL_SQLCOMMAND_1").ToString
End If
End If
End If
' Globale Variable setzen
CURRENT_CONTROL_ID = row.Item("CONTROL_ID")
Me.pgControlProperties.SelectedObject = props
End If
End If
Catch ex As Exception
MsgBox("Error in loadcontrolproperties" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
' Aktualisiert die Position des akutellen Controls und speichert diese in der Klasse
Public Sub UpdateControlLocation(ctrl As Control)
CurrentProperties = Me.pgControlProperties.SelectedObject
If CurrentProperties IsNot Nothing Then
CurrentProperties.Location = ctrl.Location
Me.pgControlProperties.SelectedObject = CurrentProperties
End If
End Sub
Public Function SaveControlProperties(ctrl As Control, properties As Object) As Boolean
If ClassControlCommands.UpdateControl(ctrl, properties) Then
LoadControlProperties(ctrl)
Return True
Else
MsgBox("Fehler beim Speichern der Elementeigenschaften.", MsgBoxStyle.Critical)
Return False
End If
End Function
Private Sub btnSaveControl_Click(sender As Object, e As EventArgs) Handles btnSaveControl.Click
If SaveControlProperties(CtrlBuilder.CurrentControl, pgControlProperties.SelectedObject) Then
lblStatus.Text = "Änderungen gespeichert - " & Now
lblStatus.Visible = True
Else
lblStatus.Visible = False
' MsgBox("Änderungen gespeichert!", MsgBoxStyle.Information)
End If
End Sub
Private Sub pgControlProperties_PropertyValueChanged(s As Object, e As PropertyValueChangedEventArgs) Handles pgControlProperties.PropertyValueChanged
Dim oldValue As Object = e.OldValue
Dim newValue As Object = e.ChangedItem.Value
Dim currentProperty As String = e.ChangedItem.Label
Dim ctrl As Control = CtrlBuilder.CurrentControl
Select Case currentProperty
Case "Location"
ctrl.Location = newValue
Case "X"
ctrl.Location = New Point(newValue, ctrl.Location.Y)
Case "Y"
ctrl.Location = New Point(ctrl.Location.X, newValue)
Case "Size"
ctrl.Size = newValue
Case "Width"
ctrl.Size = New Size(newValue, ctrl.Size.Height)
Case "Height"
ctrl.Size = New Size(ctrl.Size.Width, newValue)
Case "Name"
ctrl.Name = newValue
Case "Caption"
ctrl.Text = newValue
Case "Font"
ctrl.Font = newValue
Case "FontColor"
ctrl.ForeColor = newValue
Case "BackColor"
ctrl.BackColor = newValue
End Select
lblStatus.Text = "Ausstehende Änderungen"
lblStatus.Visible = True
End Sub
Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click
If MsgBox("Wollen Sie das Element wirklich löschen?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
If IsGroupBox(CtrlBuilder.CurrentControl) Then
Dim parentID As Integer = GetControlID_for_Name(CtrlBuilder.CurrentControl.Name, CURRENT_FORM_ID)
Dim SQL = "SELECT GUID FROM TBPMO_CONTROL WHERE PARENT_CONTROL_ID = " & parentID
Dim dt As DataTable = ClassDatabase.Return_Datatable(SQL)
For Each dr As DataRow In dt.Rows
Dim id As Integer = dr.Item(0)
ClassControlCommands.DeleteControl(id)
Next
End If
If ClassControlCommands.DeleteControl() = True Then
MsgBox("Element gelöscht, Elemente werden neu geladen.", MsgBoxStyle.Information)
CtrlBuilder.ClearControls()
frmLevel_Designer.Instance.LoadControls()
End If
End If
End Sub
Private Sub frmTool_ControlProperties_Shown(sender As Object, e As EventArgs) Handles Me.Shown
If Me.WindowState = FormWindowState.Maximized Then
Me.WindowState = FormWindowState.Normal
End If
End Sub
End Class

View File

@ -1282,9 +1282,9 @@ Public Class frmConstructor_Main
#Region "DetailView - Toolstrip"
Private Sub tsButtonAdd_Click(sender As Object, e As EventArgs) Handles tsButtonAdd.Click
If CtrlCommandUI.IsInsert Then
Exit Sub
End If
'If CtrlCommandUI.IsInsert Then
' Exit Sub
'End If
Me.Cursor = Cursors.WaitCursor
Try
If TCDetails.SelectedTabPage.Text.StartsWith("Pos") = False Then
@ -1295,14 +1295,23 @@ Public Class frmConstructor_Main
tsButtonShowWorkflowTasks.Enabled = True
CURRENT_PARENT_ID = PARENT_ID
ClassControlValues.LoadDefaultValues(ENTITY_ID, SELECTED_RECORD_ID, pnlDetails.Controls, CURRENT_PARENT_ID, ENTITY_ID)
dff()
' Den Record anlegen, damit wir eine RECORD_ID bekommen
ClassControlCommandsUI.CreateRecord(ENTITY_ID)
' Die RECORD_ID auslesen und setzen
Dim NewRecordId As Integer = ClassControlCommandsUI.GetLastRecord()
CURRENT_RECORD_ID = NewRecordId
RECORD_ID = NewRecordId
SELECTED_RECORD_ID = NewRecordId
' Das StatusLabel aktualisieren
Update_Record_Label(NewRecordId)
' Im gegensatz zu EnableEditMode muss hier nur der save button enabled werden
tsButtonSave.Enabled = True
' Muss aktiviert werden, sonst funktionieren die Combobox Abhängigkeits Events nicht
CURRENT_RECORD_ENABLED = True
EDIT_STATE = EditState.Insert
' EDIT_STATE muss hier (immer?) Update sein, sonst wird beim Speichern noch ein Datensatz angelegt
EDIT_STATE = EditState.Update
RECORD_CHANGED = True
tsslblRecord.Text = "Adding record ......"
'tsslblRecord.Text = "Adding record ......"
RIGHT_ONLY_READ = False
tslblLocked.Visible = False
tslblFileslocked.Visible = False
@ -1311,6 +1320,8 @@ Public Class frmConstructor_Main
MsgBox("Unexpected Error in Insert: " & ex.Message)
Finally
Me.Cursor = Cursors.Default
' IsInsert muss true sein, damit wir wissen ob wir bei
' Abbruch den Record Wieder löschen können
CtrlCommandUI.IsInsert = True
End Try
End Sub
@ -2270,6 +2281,13 @@ Public Class frmConstructor_Main
Catch ex As Exception
MsgBox("Error in Save Record Changes: " & vbNewLine & ex.Message, MsgBoxStyle.Exclamation)
End Try
Else
' Wenn nicht gespeichert werden soll, den Record wieder löschen
If CtrlCommandUI.IsInsert = True Then
CtrlCommandUI.DeleteRecord(CURRENT_RECORD_ID)
End If
End If
CtrlCommandUI.IsInsert = False
RECORD_CHANGED = False