This commit is contained in:
JenneJ
2016-05-19 17:03:19 +02:00
parent 2e5e1310fa
commit 62920ed048

View File

@@ -157,17 +157,20 @@ Public Class frmConstructor_Main
End Sub End Sub
Private Sub frmForm_Constructor_Main_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing Private Sub frmForm_Constructor_Main_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
If RECORD_CHANGED = True Then 'If RECORD_CHANGED = True Then
Dim ResultMessage As String ' Dim ResultMessage As String
Try ' Try
ResultMessage = Update_Record_OnChange() ' ResultMessage = Update_Record_OnChange()
Catch ex As Exception ' Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Error in saving Record") ' MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Error in saving Record")
Me.Cursor = Cursors.Default ' Me.Cursor = Cursors.Default
' Verhindert den Zeilenwechsel ' ' Verhindert den Zeilenwechsel
e.Cancel = True ' e.Cancel = True
Exit Sub ' Exit Sub
End Try ' End Try
'End If
If TrySave_Automatic() = False Then
e.Cancel = True
End If End If
@@ -694,16 +697,19 @@ Public Class frmConstructor_Main
End Function End Function
Private Sub grvwGrid_BeforeLeaveRow(sender As Object, e As RowAllowEventArgs) Handles grvwGrid.BeforeLeaveRow Private Sub grvwGrid_BeforeLeaveRow(sender As Object, e As RowAllowEventArgs) Handles grvwGrid.BeforeLeaveRow
If RECORD_CHANGED = True Then 'If RECORD_CHANGED = True Then
Dim ResultMessage As String ' Dim ResultMessage As String
Try ' Try
ResultMessage = Update_Record_OnChange() ' ResultMessage = Update_Record_OnChange()
Catch ex As Exception ' Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Error in saving Record") ' MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Error in saving Record")
Me.Cursor = Cursors.Default ' Me.Cursor = Cursors.Default
' Verhindert den Zeilenwechsel ' ' Verhindert den Zeilenwechsel
e.Allow = False ' e.Allow = False
End Try ' End Try
'End If
If TrySave_Automatic() = False Then
e.Allow = False
End If End If
End Sub End Sub
@@ -784,7 +790,10 @@ Public Class frmConstructor_Main
grvwTiles.OptionsBehavior.Editable = Not IsTopFirstRow grvwTiles.OptionsBehavior.Editable = Not IsTopFirstRow
End If End If
End If End If
Check_Record_Changed()
'Wird jetzt bei BeforeRowChange überprüft
'Check_Record_Changed()
DisableEditMode() DisableEditMode()
VerknüpfungenAnzeigenToolStripMenuItem.Enabled = True VerknüpfungenAnzeigenToolStripMenuItem.Enabled = True
elapsed = sw.Elapsed.TotalSeconds elapsed = sw.Elapsed.TotalSeconds
@@ -1406,20 +1415,24 @@ Public Class frmConstructor_Main
End If End If
End If End If
'Update aller Control-Werte ''Update aller Control-Werte
Dim ResultMessage 'Dim ResultMessage
' Wenn MussFelder nicht ausgefüllt werden, wird eine exception geworfen und abgefangen '' Wenn MussFelder nicht ausgefüllt werden, wird eine exception geworfen und abgefangen
Try 'Try
ResultMessage = Update_Record_OnChange() ' ResultMessage = Update_Record_OnChange()
Catch ex As Exception 'Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Error in saving Record") ' MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Error in saving Record")
' Me.Cursor = Cursors.Default
' Return False
'End Try
'Update_Status_Label(True, ResultMessage, EDIT_STATE)
If TrySave_User() = False Then
' Cursor zurücksetzen
Me.Cursor = Cursors.Default Me.Cursor = Cursors.Default
Return False Return False
End Try End If
Dim recid As Integer Dim recid As Integer
Update_Status_Label(True, ResultMessage, EDIT_STATE)
'If EDIT_STATE = EditState.Update Then 'If EDIT_STATE = EditState.Update Then
' recid = RECORD_ID ' recid = RECORD_ID
'Else 'Else
@@ -1587,18 +1600,19 @@ Public Class frmConstructor_Main
If RECORD_ENABLED = False Then If RECORD_ENABLED = False Then
EnableEditMode() EnableEditMode()
Else Else
If RECORD_CHANGED = True Then 'If RECORD_CHANGED = True Then
Dim ResultMessage As String ' Dim ResultMessage As String
Try ' Try
ResultMessage = Update_Record_OnChange() ' ResultMessage = Update_Record_OnChange()
Catch ex As Exception ' Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Error in saving Record") ' MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Error in saving Record")
Me.Cursor = Cursors.Default ' Me.Cursor = Cursors.Default
Exit Sub ' Exit Sub
End Try ' End Try
'End If
If TrySave_User() = True Then
DisableEditMode()
End If End If
DisableEditMode()
End If End If
End Sub End Sub
@@ -2353,7 +2367,6 @@ Public Class frmConstructor_Main
Next Next
End Sub End Sub
Private Sub Check_Record_Changed() Private Sub Check_Record_Changed()
If EDIT_STATE <> EditState.None Then If EDIT_STATE <> EditState.None Then
Update_Status_Label(False, "") Update_Status_Label(False, "")
@@ -2376,7 +2389,8 @@ Public Class frmConstructor_Main
'CtrlCommandUI.IsInsert = False 'CtrlCommandUI.IsInsert = False
End If End If
Try Try
Update_Record_OnChange() Dim ResultMessage = Update_Record_OnChange()
Update_Status_Label(True, ResultMessage)
Catch ex As Exception Catch ex As Exception
MsgBox("Error in Save Record Changes: " & vbNewLine & ex.Message, MsgBoxStyle.Exclamation) MsgBox("Error in Save Record Changes: " & vbNewLine & ex.Message, MsgBoxStyle.Exclamation)
End Try End Try
@@ -2387,15 +2401,15 @@ Public Class frmConstructor_Main
ClassDatabase.Execute_non_Query(del, True) ClassDatabase.Execute_non_Query(del, True)
End If End If
Dim ResultMessage 'Dim ResultMessage
' Wenn MussFelder nicht ausgefüllt werden, wird eine exception geworfen und abgefangen '' Wenn MussFelder nicht ausgefüllt werden, wird eine exception geworfen und abgefangen
Try 'Try
ResultMessage = Update_Record_OnChange() ' ResultMessage = Update_Record_OnChange()
Catch ex As Exception 'Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Error in saving Record") ' MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Error in saving Record")
Me.Cursor = Cursors.Default ' Me.Cursor = Cursors.Default
Exit Sub ' Exit Sub
End Try 'End Try
End If End If
CtrlCommandUI.IsInsert = False CtrlCommandUI.IsInsert = False
@@ -2987,6 +3001,7 @@ Public Class frmConstructor_Main
Dim ResultMessage = CtrlCommandUI.SaveRecord(SELECTED_RECORD_ID, ENTITY_ID, PARENT_RECORDID) Dim ResultMessage = CtrlCommandUI.SaveRecord(SELECTED_RECORD_ID, ENTITY_ID, PARENT_RECORDID)
'Jetzt die für die Entität notwendigen Prroceduren ausführen 'Jetzt die für die Entität notwendigen Prroceduren ausführen
Customer_Run_Procedures() Customer_Run_Procedures()
RECORD_CHANGED = False RECORD_CHANGED = False
Return ResultMessage Return ResultMessage
@@ -4877,7 +4892,6 @@ Public Class frmConstructor_Main
msg = "The Parent-Record was changed successful!" msg = "The Parent-Record was changed successful!"
End If End If
MsgBox(msg, MsgBoxStyle.Information) MsgBox(msg, MsgBoxStyle.Information)
Check_Record_Changed()
'Load_Data_for_TreeView() 'Load_Data_for_TreeView()
btnRelinkParentID.BackColor = Color.Lime btnRelinkParentID.BackColor = Color.Lime
btnRelinkParentID.FlatAppearance.BorderColor = Color.Lime btnRelinkParentID.FlatAppearance.BorderColor = Color.Lime
@@ -5122,4 +5136,136 @@ Public Class frmConstructor_Main
End If End If
End Sub End Sub
#Region "TrySave Funktionen"
Public Function TrySave_RequiredControlsFilled() As Boolean
Dim missingValues As New List(Of String)
missingValues = ClassControlValues.CheckRequiredControlValues(CtrlBuilder.MasterPanel.Controls)
If missingValues.Count > 0 Then
Dim RequiredControlNames = String.Join(vbNewLine, missingValues)
If (USER_LANGUAGE = "de-DE") Then
Dim message = String.Format("Die folgenden Steuerelemente müssen ausgefüllt sein: {0}{1}", vbNewLine, RequiredControlNames)
MessageBox.Show(message, "Muss-Felder ausfüllen", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Else
Dim message = String.Format("The following controls must be filled with values: {0}{1}", vbNewLine, RequiredControlNames)
MessageBox.Show(message, "Fill Required Controls", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End If
Focus_Control(missingValues.First())
' Muss-Felder sind noch nicht ausgefüllt worden
Return False
Else
' Muss-Felder sind alle ausgefüllt
Return True
End If
End Function
''' <summary>
''' Überprüft beim manuellen Speichern, ob Datensatz verändert wurde und
''' ob alle Muss-Felder ausgefüllt wurden
''' </summary>
''' <returns>
''' Gibt False zurück, wenn nicht alle Muss-Felder gefüllt wurde,
''' ansonsten True
''' </returns>
Public Function TrySave_User() As Boolean
Try
EDIT_STATE = EditState.None
'Update_Status_Label(False)
If RECORD_CHANGED = False Then
' Datensatz wurde nicht verändert
Return True
End If
Dim RequiredControlsFilled As Boolean = TrySave_RequiredControlsFilled()
If RequiredControlsFilled = True Then
TrySave_DoSave()
Return True
Else
Return False
End If
Catch ex As Exception
MessageBox.Show("Error in TrySave_User: " & vbNewLine & ex.Message)
Return False
End Try
End Function
Public Sub TrySave_DoSave()
' Record Speichern
Dim ResultMessage = CtrlCommandUI.SaveRecord(SELECTED_RECORD_ID, ENTITY_ID, PARENT_RECORDID)
' Status anzeigen
Update_Status_Label(True, ResultMessage)
'Jetzt die für die Entität notwendigen Prroceduren ausführen
Customer_Run_Procedures()
' RECORD_CHANGED zurücksetzen
RECORD_CHANGED = False
End Sub
''' <summary>
''' Fragt den Benutzer beim Datensatzwechsel, ob Änderungen gespeichert werden sollen. Gibt False zurück, wenn Mussfelder ausgefüllt werden müssen, ansonsten True.
''' </summary>
Public Function TrySave_Automatic() As Boolean
Try
EDIT_STATE = EditState.None
'Update_Status_Label(False)
If RECORD_CHANGED = True Then
Dim ShouldSave As DialogResult
If USER_LANGUAGE = "de-DE" Then
ShouldSave = MessageBox.Show("Sie haben ungespeicherte Änderungen. Wollen Sie diese speichern?", "Ungespeicherte Änderungen", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
Else
ShouldSave = MessageBox.Show("There are unsaved changes. Would You like to save?", "Unsaved changes", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
End If
If ShouldSave = DialogResult.Yes Then
If CtrlCommandUI.IsInsert Then
EDIT_STATE = EditState.None
Lock_RecordControls(True)
End If
Dim RequiredControlsFilled As Boolean = TrySave_RequiredControlsFilled()
If RequiredControlsFilled = True Then
' Änderungen sollen gespeichert werden,
' Muss-Felder sind alle ausgefüllt
TrySave_DoSave()
Return True
Else
' Änderungen sollen gespeichert werden,
' aber Muss-Felder sind noch nicht ausgefüllt worden
Return False
End If
Else
' Angelegten Record löschen
If CtrlCommandUI.IsInsert Then
Dim DeleteRecordSQL = String.Format("EXEC [dbo].[PRPMO_DELETE_RECORD] {0}", SELECTED_RECORD_ID)
ClassDatabase.Execute_non_Query(DeleteRecordSQL, True)
End If
' Änderungen sollen nicht gespeichert werden
RECORD_CHANGED = False
tsButtonCancel.Visible = False
Return True
End If
Else
' Datensatz wurde nicht verändert
Return True
End If
Catch ex As Exception
MessageBox.Show("Error in TrySave_Automatic: " & vbNewLine & ex.Message)
Return False
End Try
End Function
#End Region
End Class End Class