This commit is contained in:
SchreiberM
2016-01-06 17:01:05 +01:00
25 changed files with 2009 additions and 775 deletions

BIN
3rdparty/lib/Commandline/CommandLine.dll vendored Normal file

Binary file not shown.

View File

@@ -8,9 +8,9 @@
' StartupNextInstance: Wird beim Starten einer Einzelinstanzanwendung ausgelöst, wenn diese bereits aktiv ist.
' NetworkAvailabilityChanged: Wird beim Herstellen oder Trennen der Netzwerkverbindung ausgelöst.
Partial Friend Class MyApplication
Private Sub MyApplication_StartupNextInstance(sender As Object, e As ApplicationServices.StartupNextInstanceEventArgs) Handles Me.StartupNextInstance
ClassJumpRecord.ParseArgs()
End Sub
End Class
End Namespace

View File

@@ -103,6 +103,7 @@ Public Class ClassControlBuilder
Case "ComboBox"
Dim combo As ComboBox = CType(control, ComboBox)
AddHandler combo.SelectedValueChanged, AddressOf RecordChanged
AddHandler combo.TextChanged, AddressOf RecordChanged
AddHandler combo.GotFocus, AddressOf OnComboBoxFocus
AddHandler combo.LostFocus, AddressOf OnComboBoxLostFocus
Case "RadioButton"

View File

@@ -466,7 +466,7 @@ Public Class ClassControlCommandsUI
For Each ctrl As Control In controls
Dim CONTROL_ID As Integer = ctrl.Tag 'GetControlID_for_RecordID(ctrl.Name, RecordID)
If LogErrorsOnly = False Then ClassLogger.Add(">> CONTROL_ID: " & CONTROL_ID, False)
Dim CONTROL_VALUE As String = Nothing
Dim CONTROL_VALUE As String = GetControlValue(ctrl)
If TypeOf ctrl Is PictureBox Then
Dim id As Integer = ctrl.Tag 'GetControlID_for_Name(ctrl.Name, FormID)
@@ -474,36 +474,19 @@ Public Class ClassControlCommandsUI
Continue For
End If
' Neues Control
If CONTROL_ID = -1 Then
CONTROL_VALUE = GetControlValue(ctrl)
If TypeOf ctrl Is GroupBox Then
Dim ctrls As Control.ControlCollection = DirectCast(ctrl, GroupBox).Controls
UpdateAllControls(FormID, RecordID, ctrls)
Continue For
End If
' Kein Bekanntes Control oder Groupbox
If IsNothing(CONTROL_VALUE) Then
If TypeOf ctrl Is GroupBox Then
Dim ctrls As Control.ControlCollection = DirectCast(ctrl, GroupBox).Controls
Dim ValueExists = ClassDatabase.Execute_Scalar(String.Format("SELECT RECORD_ID FROM VWPMO_VALUES WHERE RECORD_ID = {0} AND CONTROL_ID = {1}", RecordID, CONTROL_ID))
UpdateAllControls(FormID, RecordID, ctrls)
End If
Else
Dim ctrlid As Integer = GetControlID_for_Name(ctrl.Name, FormID)
If LogErrorsOnly = False Then ClassLogger.Add(">> InsertControlValue: " & CONTROL_ID & "|" & RecordID & "|" & CONTROL_VALUE, False)
InsertControlValue(ctrlid, RecordID, CONTROL_VALUE)
End If
Else ' Control Updaten
If ctrl.Tag = 556 Then
Console.WriteLine("CheckedLB")
End If
CONTROL_VALUE = GetControlValue(ctrl)
' Kein Bekanntes Control oder Groupbox
If IsNothing(CONTROL_VALUE) Then
If TypeOf ctrl Is GroupBox Then
Dim ctrls As Control.ControlCollection = DirectCast(ctrl, GroupBox).Controls
UpdateAllControls(FormID, RecordID, ctrls)
End If
Else
UpdateControlValue(CONTROL_ID, RecordID, CONTROL_VALUE)
End If
If ValueExists Then ' Control Updaten
UpdateControlValue(CONTROL_ID, RecordID, CONTROL_VALUE)
Else ' Neues Control
If LogErrorsOnly = False Then ClassLogger.Add(">> InsertControlValue: " & CONTROL_ID & "|" & RecordID & "|" & CONTROL_VALUE, False)
InsertControlValue(CONTROL_ID, RecordID, CONTROL_VALUE)
End If
Next
Catch ex As Exception
@@ -640,8 +623,20 @@ Public Class ClassControlCommandsUI
ClassLogger.Add("Unerwarteter Fehler in Insert ConvertValue to Format'" & FORMAT_TYPE & "': " & ex.Message, True)
End Try
Dim SQL = "INSERT INTO TBPMO_CONTROL_VALUE (CONTROL_ID, RECORD_ID, VALUE, ADDED_WHO) VALUES (" & ControlID & ", " & RecordID & ", '" & Value & "', '" & AddedWho & "')"
Return ClassDatabase.Execute_non_Query(SQL, True)
Using conn As New SqlClient.SqlConnection(MyConnectionString)
Dim cmd As New SqlClient.SqlCommand("INSERT INTO TBPMO_CONTROL_VALUE (CONTROL_ID, RECORD_ID, VALUE, ADDED_WHO) VALUES (@CONTROL_ID, @RECORD_ID, @VALUE, @ADDED_WHO)", conn)
cmd.Parameters.Add("@VALUE", SqlDbType.NVarChar).Value = Value
cmd.Parameters.Add("@ADDED_WHO", SqlDbType.VarChar).Value = AddedWho
cmd.Parameters.Add("@CONTROL_ID", SqlDbType.Int).Value = ControlID
cmd.Parameters.Add("@RECORD_ID", SqlDbType.Int).Value = RecordID
conn.Open()
cmd.ExecuteNonQuery()
Return True
End Using
'Dim SQL = "INSERT INTO TBPMO_CONTROL_VALUE (CONTROL_ID, RECORD_ID, VALUE, ADDED_WHO) VALUES (" & ControlID & ", " & RecordID & ", '" & Value & "', '" & AddedWho & "')"
'Return ClassDatabase.Execute_non_Query(SQL, True)
Catch ex As Exception
ClassLogger.Add("Unerwarteter Fehler in InsertControlValue: " & ex.Message, True)
Return False
@@ -666,8 +661,20 @@ Public Class ClassControlCommandsUI
ClassLogger.Add("Unerwarteter Fehler in Update ConvertValue to Format'" & FORMAT_TYPE & "': " & ex.Message, True)
End Try
Dim SQL As String = "UPDATE TBPMO_CONTROL_VALUE SET VALUE = '" & Value & "', CHANGED_WHO = '" & CHANGED_WHO & "' WHERE CONTROL_ID = " & ControlID & " AND RECORD_ID = " & RecordID
Return ClassDatabase.Execute_non_Query(SQL, True)
Using conn As New SqlClient.SqlConnection(MyConnectionString)
Dim cmd As New SqlClient.SqlCommand("UPDATE TBPMO_CONTROL_VALUE SET VALUE = @VALUE, CHANGED_WHO = @CHANGED_WHO WHERE CONTROL_ID = @CONTROL_ID AND RECORD_ID = @RECORD_ID", conn)
cmd.Parameters.Add("@VALUE", SqlDbType.NVarChar).Value = Value
cmd.Parameters.Add("@CHANGED_WHO", SqlDbType.VarChar).Value = CHANGED_WHO
cmd.Parameters.Add("@CONTROL_ID", SqlDbType.Int).Value = ControlID
cmd.Parameters.Add("@RECORD_ID", SqlDbType.Int).Value = RecordID
conn.Open()
cmd.ExecuteNonQuery()
Return True
End Using
'Dim SQL As String = "UPDATE TBPMO_CONTROL_VALUE SET VALUE = '" & Value & "', CHANGED_WHO = '" & CHANGED_WHO & "' WHERE CONTROL_ID = " & ControlID & " AND RECORD_ID = " & RecordID
'Return ClassDatabase.Execute_non_Query(Sql, True)
Catch ex As Exception
ClassLogger.Add("Unerwarteter Fehler in UpdateControlValue: " & ex.Message, True)

View File

@@ -0,0 +1,283 @@
Namespace ControlLoader
Public Class _BaseControl
Public Shared Function ReplaceSqlCommandPlaceholders(sqlCommand As String, recordId As Integer, parentRecordId As Integer)
sqlCommand = sqlCommand.Replace("@RECORD_ID", recordId)
sqlCommand = sqlCommand.Replace("@RECORDID", recordId)
sqlCommand = sqlCommand.Replace("@PARENTRECORD_ID", parentRecordId)
sqlCommand = sqlCommand.Replace("@PARENTRECORDID", parentRecordId)
Return sqlCommand
End Function
Public Shared Function LoadAutoValue(control As Windows.Forms.Label, RecordId As Integer, ParentRecordId As Integer)
Dim AutoValue As String = String.Empty
Dim ControlId As Integer = control.Tag
Dim SQL As String = ClassDatabase.Execute_Scalar(String.Format("SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = {0}", ControlId))
SQL = ReplaceSqlCommandPlaceholders(SQL, RecordId, ParentRecordId)
If SQL = "" Or IsDBNull(SQL) Then
Return control.Text
End If
AutoValue = ClassDatabase.Execute_Scalar(SQL)
If String.IsNullOrEmpty(AutoValue) Or IsDBNull(AutoValue) Then
SQL = String.Format("SELECT CONTROL_TEXT FROM TBPMO_CONTROL_SCREEN WHERE CONTROL_ID = {0}", ControlId)
Dim value = ClassDatabase.Execute_Scalar(SQL)
Return value
Else
Return AutoValue
End If
End Function
End Class
Public Class _ListControl : Inherits _BaseControl
Public Shared Function _GetDynamicValue(controlId As Integer, formId As Integer, recordId As Integer, parentRecordId As Integer) As DynamicValue
Dim returnValue As DynamicValue
returnValue.StaticList = CheckForStaticList(controlId, recordId)
returnValue.DataTable = CheckForSqlCommand(controlId, formId, recordId, parentRecordId)
Return returnValue
End Function
Private Shared Function CheckForStaticList(controlId As Integer, recordId As Integer) As List(Of String)
Try
Dim SQL As String = String.Format("SELECT VALUE FROM VWPMO_VALUES WHERE CONTROL_ID = {0} AND RECORD_ID = {1}", controlId, recordId)
Dim staticList As String = ClassDatabase.Execute_Scalar(SQL)
If IsNothing(staticList) Then
Return Nothing
Else
Return New List(Of String)(staticList.Split(";"))
End If
Catch ex As Exception
MsgBox("Error in CheckForStaticList: " & vbNewLine & ex.Message)
Return Nothing
End Try
End Function
Private Shared Function CheckForSqlCommand(controlId As Integer, formId As Integer, recordId As Integer, parentRecordId As Integer) As DataTable
Try
Dim SQL As String = String.Format("SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = {0}", controlId)
Dim SqlCommand As String = ClassDatabase.Execute_Scalar(SQL)
If SqlCommand Is Nothing Or SqlCommand = String.Empty Then
Return Nothing
End If
If SqlCommand.Contains("@") Then
SqlCommand = ReplaceSqlCommandPlaceholders(SqlCommand, recordId, parentRecordId)
End If
Dim CachedDataTable As DataTable = ClassControlValueCache.LoadFromCache(formId, controlId)
Dim FinalDataTable As DataTable
If CachedDataTable Is Nothing Then
FinalDataTable = ClassDatabase.Return_Datatable(SqlCommand)
ClassControlValueCache.SaveToCache(formId, controlId, FinalDataTable)
Else
FinalDataTable = CachedDataTable
End If
Return FinalDataTable
Catch ex As Exception
MsgBox("Error in CheckForSqlCommand: " & vbNewLine & ex.Message)
Return Nothing
End Try
End Function
End Class
Public Structure DynamicValue
Public StaticList As List(Of String)
Public DataTable As DataTable
End Structure
Public Class Label : Inherits _BaseControl
Public Shared Sub LoadValue(control As Windows.Forms.Label, recordId As Integer, parentRecordId As Integer, value As String)
Dim autoValue = LoadAutoValue(control, recordId, parentRecordId)
If IsNothing(autoValue) Then
control.Text = value
Else
control.Text = autoValue
End If
End Sub
End Class
Public Class Checkbox : Inherits _BaseControl
Public Shared Sub LoadValue(control As Windows.Forms.CheckBox, value As String)
Dim result As Boolean = False
Boolean.TryParse(value, result)
control.Checked = result
End Sub
End Class
Public Class RadioButton : Inherits _BaseControl
Public Shared Sub LoadValue(control As Windows.Forms.RadioButton, value As String)
Dim result As Boolean = False
Boolean.TryParse(value, result)
control.Checked = result
End Sub
End Class
Public Class TextBox : Inherits _BaseControl
Public Shared Sub LoadValue(control As Windows.Forms.TextBox, value As String)
control.Text = value
End Sub
End Class
Public Class DateTimePicker : Inherits _BaseControl
Public Shared Sub LoadValue(control As DevExpress.XtraEditors.DateEdit, value As String)
If String.IsNullOrWhiteSpace(value) Or value = "00:00:00" Then
control.DateTime = DateTime.MinValue
Else
control.DateTime = DateTime.Parse(value)
End If
End Sub
End Class
Public Class Combobox : Inherits _ListControl
Public Shared Sub LoadValue(control As Windows.Forms.ComboBox, value As String)
control.Text = value
End Sub
Public Shared Sub LoadList(control As Windows.Forms.ComboBox, formId As Integer, recordId As Integer, parentRecordId As Integer)
Try
Dim dynamic As DynamicValue = _GetDynamicValue(control.Tag, formId, recordId, parentRecordId)
If dynamic.StaticList IsNot Nothing Then
control.DataSource = dynamic.StaticList
End If
If dynamic.DataTable IsNot Nothing AndAlso dynamic.DataTable.Rows.Count > 0 Then
Dim dt As DataTable = dynamic.DataTable
control.DataSource = dt
If dt.Columns.Count = 1 Then
control.DisplayMember = dt.Columns(0).ColumnName
control.ValueMember = dt.Columns(0).ColumnName
ElseIf dt.Columns.Count = 2 Then
control.DisplayMember = dt.Columns(1).ColumnName
control.ValueMember = dt.Columns(0).ColumnName
End If
CalculateDropdownWidth(control, dt)
End If
Catch ex As Exception
MsgBox("Error in Combobox.LoadList:" & vbNewLine & ex.Message)
End Try
End Sub
Private Shared Sub CalculateDropdownWidth(control As Windows.Forms.ComboBox, dt As DataTable)
Const WIDEST_WIDTH As Integer = 300
Dim FinalWidth As Integer = WIDEST_WIDTH
For Each row As DataRow In dt.Rows
'Die Breite der Dropdown-List anpassen
Using g As Graphics = control.CreateGraphics()
Dim valueWidth As Integer = g.MeasureString(row.Item(1).ToString(), control.Font).Width
If valueWidth + 30 > FinalWidth Then
FinalWidth = valueWidth + 30
End If
g.Dispose()
End Using
Next
If FinalWidth > WIDEST_WIDTH Then
control.DropDownWidth = Math.Max(FinalWidth, control.Width)
End If
End Sub
End Class
Public Class CheckedListBox : Inherits _ListControl
Public Shared Sub LoadValue(control As DevExpress.XtraEditors.CheckedListBoxControl, value As String)
If IsNothing(value) Then
Exit Sub
End If
Dim values() As String = value.Split(";")
For Each v As String In values
Dim pos = control.FindStringExact(v)
If pos >= 0 Then
control.SetItemCheckState(pos, CheckState.Checked)
End If
Next
End Sub
Public Shared Sub LoadList(control As DevExpress.XtraEditors.CheckedListBoxControl, formId As Integer, recordId As Integer, parentRecordId As Integer)
Try
Dim dynamic As DynamicValue = _GetDynamicValue(control.Tag, formId, recordId, parentRecordId)
If dynamic.StaticList IsNot Nothing Then
control.DataSource = dynamic.StaticList
End If
If dynamic.DataTable IsNot Nothing AndAlso dynamic.DataTable.Rows.Count > 0 Then
Dim dt As DataTable = dynamic.DataTable
control.DataSource = dt
If dt.Columns.Count = 1 Then
control.DisplayMember = dt.Columns(0).ColumnName
control.ValueMember = dt.Columns(0).ColumnName
ElseIf dt.Columns.Count = 2 Then
control.DisplayMember = dt.Columns(1).ColumnName
control.ValueMember = dt.Columns(0).ColumnName
End If
End If
Catch ex As Exception
MsgBox("Error in CheckedListBox.LoadList:" & vbNewLine & ex.Message)
End Try
End Sub
End Class
Public Class ListBox : Inherits _ListControl
Public Shared Sub LoadValue(control As DevExpress.XtraEditors.ListBoxControl, value As String)
control.SelectedIndex = control.FindStringExact(value)
End Sub
Public Shared Sub LoadList(control As DevExpress.XtraEditors.ListBoxControl, formId As Integer, recordId As Integer, parentRecordId As Integer)
Dim dynamic As DynamicValue = _GetDynamicValue(control.Tag, formId, recordId, parentRecordId)
If dynamic.StaticList IsNot Nothing Then
control.DataSource = dynamic.StaticList
End If
If dynamic.DataTable IsNot Nothing AndAlso dynamic.DataTable.Rows.Count > 0 Then
Dim dt As DataTable = dynamic.DataTable
control.DataSource = dt
If dt.Columns.Count = 1 Then
control.DisplayMember = dt.Columns(0).ColumnName
control.ValueMember = dt.Columns(0).ColumnName
ElseIf dt.Columns.Count = 2 Then
control.DisplayMember = dt.Columns(1).ColumnName
control.ValueMember = dt.Columns(0).ColumnName
End If
End If
End Sub
End Class
End Namespace

View File

@@ -1,616 +1,224 @@
Imports DevExpress.XtraEditors.Controls
Public Class ClassControlValues
Private Shared Function LoadControlAutoValue(ControlID As Integer, RecordID As Integer, control As Control) As String
'Private Shared Function LoadControlAutoValue(ControlID As Integer, RecordID As Integer, control As Control) As String
If TypeOf control Is Label Then
'If ControlID = 320 Then
' MsgBox("")
'End If
' Dim SQL As String = "SELECT CONTROL_TYPE_ID FROM TBPMO_CONTROL WHERE GUID = " & ControlID
' Dim type As Integer = ClassDatabase.Execute_Scalar(SQL)
Dim SQL
' Wenn kein/leerer Wert gefunden, suche nach einem SQL Command für Automatischen Wert
'If type = 1 Then
Dim autoValue
SQL = "SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = " & ControlID
Dim result = ClassDatabase.Execute_Scalar(SQL)
result = result.Replace("@FORM_ID", CURRENT_FORM_ID)
result = result.Replace("@RECORD_ID", CURRENT_RECORD_ID)
result = result.Replace("@RECORDID", CURRENT_RECORD_ID)
result = result.Replace("@PARENTRECORD_ID", CURRENT_PARENTID)
' Wenn das SQL Command leer ist, hat dieses Control kein SQL Command
' Gib den ursprünlichen Text zurück
If result = "" Then
Return control.Text
Else
autoValue = ClassDatabase.Execute_Scalar(result)
' If TypeOf control Is Label Then
' Dim SQL = "SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = " & ControlID
' Dim autoValue
' Dim result = ClassDatabase.Execute_Scalar(SQL)
' result = result.Replace("@FORM_ID", CURRENT_FORM_ID)
' result = result.Replace("@RECORD_ID", CURRENT_RECORD_ID)
' result = result.Replace("@RECORDID", CURRENT_RECORD_ID)
' result = result.Replace("@PARENTRECORD_ID", CURRENT_PARENTID)
' ' Wenn das SQL Command leer ist, hat dieses Control kein SQL Command
' ' Gib den ursprünlichen Text zurück
' If result = "" Then
' Return control.Text
' Else
' autoValue = ClassDatabase.Execute_Scalar(result)
' Wenn das SQL Command DBNull zurück gibt,
' Überschreibe den alten Wert mit " " (Leerzeichen)
If IsDBNull(autoValue) Then
SQL = "SELECT CONTROL_TEXT FROM TBPMO_CONTROL_SCREEN WHERE CONTROL_ID = " & ControlID
Dim value = ClassDatabase.Execute_Scalar(SQL)
Return value
Else
Return autoValue
End If
End If
'End If
' ' Wenn das SQL Command DBNull zurück gibt,
' ' Überschreibe den alten Wert mit " " (Leerzeichen)
' If IsDBNull(autoValue) Then
' SQL = "SELECT CONTROL_TEXT FROM TBPMO_CONTROL_SCREEN WHERE CONTROL_ID = " & ControlID
' Dim value = ClassDatabase.Execute_Scalar(SQL)
' Return value
' Else
' Return autoValue
' End If
' End If
' 'End If
'Return Nothing
Else
Return Nothing
End If
' 'Return Nothing
' Else
' Return Nothing
' End If
End Function
'End Function
Public Shared Sub LoadControlValue(RecordID As Integer, ControlID As Integer, control As Control)
Try
' Dim DT1 As DataTable = ClassDatabase.Return_Datatable()
Dim DT As DataTable = ClassDatabase.Return_Datatable("SELECT * FROM VWPMO_VALUES WHERE RECORD_ID = " & RecordID & " and CONTROL_ID = " & ControlID, "LaodControlValue: ReturnValues")
If DT.Rows.Count = 0 Then
Dim autoValue = LoadControlAutoValue(ControlID, RecordID, control)
'Public Shared Sub LoadControlValue(RecordID As Integer, ControlID As Integer, control As Control)
' Try
' ' Dim DT1 As DataTable = ClassDatabase.Return_Datatable()
' Dim DT As DataTable = ClassDatabase.Return_Datatable("SELECT * FROM VWPMO_VALUES WHERE RECORD_ID = " & RecordID & " and CONTROL_ID = " & ControlID, "LaodControlValue: ReturnValues")
' If DT.Rows.Count = 0 Then
' Dim autoValue = LoadControlAutoValue(ControlID, RecordID, control)
If Not String.IsNullOrEmpty(autoValue) Then
control.Text = autoValue
End If
' If Not String.IsNullOrEmpty(autoValue) Then
' control.Text = autoValue
' End If
Exit Sub
End If
' Exit Sub
' End If
Dim result = DT.Rows(0).Item("VALUE")
'22.06.2015
If Not IsDBNull(result) Then
Select Case DT.Rows(0).Item("CONTROL_TYPE_ID")
Case 1 'Label
Dim label As Label = DirectCast(control, Label)
Dim autoValue As String = LoadControlAutoValue(ControlID, RecordID, control)
If Not IsNothing(autoValue) Then
label.Text = autoValue
End If
Case 2 ' TextBox
Dim textbox As TextBox = DirectCast(control, TextBox)
textbox.Text = result
Case 10 ' CheckBox
Dim checkbox As CheckBox = DirectCast(control, CheckBox)
checkbox.Checked = CBool(result)
Case 11 'RadioButton
Dim radio As RadioButton = DirectCast(control, RadioButton)
radio.Checked = CBool(result)
Case 3 ' ComboBox
Dim cmbbox As ComboBox = DirectCast(control, System.Windows.Forms.ComboBox)
cmbbox.Text = result
'If LogErrorsOnly = False Then ClassLogger.Add(">> control ComboBox", False)
'Dim cmbSql As String = "SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = " & ControlID
'cmbSql = ClassDatabase.Execute_Scalar(cmbSql)
'If Not (cmbSql Is Nothing Or cmbSql = String.Empty) Then
' If cmbSql.ToString.Contains("@") Then
' cmbSql = cmbSql.ToString.Replace("@RECORDID", CURRENT_RECORD_ID)
' cmbSql = cmbSql.ToString.Replace("@RECORD_ID", CURRENT_RECORD_ID)
' cmbSql = cmbSql.ToString.Replace("@PARENTRECORD_ID", CURRENT_PARENTID)
' If LogErrorsOnly = False Then ClassLogger.Add(">> SQL Combobox: " & cmbSql, False)
' End If
' If LogErrorsOnly = False Then ClassLogger.Add(">> SQL Combobox: " & cmbSql, False)
' Dim result = DT.Rows(0).Item("VALUE")
' '22.06.2015
' If Not IsDBNull(result) Then
' Select Case DT.Rows(0).Item("CONTROL_TYPE_ID")
' Case 1 'Label
' Dim label As Label = DirectCast(control, Label)
' Dim autoValue As String = LoadControlAutoValue(ControlID, RecordID, control)
' If Not IsNothing(autoValue) Then
' label.Text = autoValue
' End If
' Case 2 ' TextBox
' Dim textbox As TextBox = DirectCast(control, TextBox)
' textbox.Text = result
' Case 10 ' CheckBox
' Dim checkbox As CheckBox = DirectCast(control, CheckBox)
' checkbox.Checked = CBool(result)
' Case 11 'RadioButton
' Dim radio As RadioButton = DirectCast(control, RadioButton)
' radio.Checked = CBool(result)
' Case 3 ' ComboBox
' Dim cmbbox As ComboBox = DirectCast(control, System.Windows.Forms.ComboBox)
' cmbbox.Text = result
' 'If LogErrorsOnly = False Then ClassLogger.Add(">> control ComboBox", False)
' 'Dim cmbSql As String = "SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = " & ControlID
' 'cmbSql = ClassDatabase.Execute_Scalar(cmbSql)
' 'If Not (cmbSql Is Nothing Or cmbSql = String.Empty) Then
' ' If cmbSql.ToString.Contains("@") Then
' ' cmbSql = cmbSql.ToString.Replace("@RECORDID", CURRENT_RECORD_ID)
' ' cmbSql = cmbSql.ToString.Replace("@RECORD_ID", CURRENT_RECORD_ID)
' ' cmbSql = cmbSql.ToString.Replace("@PARENTRECORD_ID", CURRENT_PARENTID)
' ' If LogErrorsOnly = False Then ClassLogger.Add(">> SQL Combobox: " & cmbSql, False)
' ' End If
' ' If LogErrorsOnly = False Then ClassLogger.Add(">> SQL Combobox: " & cmbSql, False)
' 'SQL-Command vorhanden also Ausführen des SQL
' Dim DT_ComboBox As DataTable = ClassDatabase.Return_Datatable(cmbSql, "LoadControlValues: Combobox")
' If DT_ComboBox Is Nothing = False Then
' cmbbox.DataSource = DT_ComboBox
' Select Case DT_ComboBox.Columns.Count
' Case 2
' cmbbox.DisplayMember = DT_ComboBox.Columns(1).ColumnName
' cmbbox.ValueMember = DT_ComboBox.Columns(0).ColumnName
' Case 1
' cmbbox.DisplayMember = DT_ComboBox.Columns(0).ColumnName
' cmbbox.ValueMember = DT_ComboBox.Columns(0).ColumnName
' End Select
' ' 'SQL-Command vorhanden also Ausführen des SQL
' ' Dim DT_ComboBox As DataTable = ClassDatabase.Return_Datatable(cmbSql, "LoadControlValues: Combobox")
' ' If DT_ComboBox Is Nothing = False Then
' ' cmbbox.DataSource = DT_ComboBox
' ' Select Case DT_ComboBox.Columns.Count
' ' Case 2
' ' cmbbox.DisplayMember = DT_ComboBox.Columns(1).ColumnName
' ' cmbbox.ValueMember = DT_ComboBox.Columns(0).ColumnName
' ' Case 1
' ' cmbbox.DisplayMember = DT_ComboBox.Columns(0).ColumnName
' ' cmbbox.ValueMember = DT_ComboBox.Columns(0).ColumnName
' ' End Select
' End If
'End If
''combobox.DataSource = Nothing
'If cmbbox.SelectedIndex = -1 Then
' cmbbox.DataSource = Nothing
' cmbbox.Text = result
'Else
' cmbbox.SelectedIndex = cmbbox.FindStringExact(result)
'End If
Case 4 'DateTimePicker
Dim datepicker As DevExpress.XtraEditors.DateEdit = DirectCast(control, DevExpress.XtraEditors.DateEdit)
' ' End If
' 'End If
' ''combobox.DataSource = Nothing
' 'If cmbbox.SelectedIndex = -1 Then
' ' cmbbox.DataSource = Nothing
' ' cmbbox.Text = result
' 'Else
' ' cmbbox.SelectedIndex = cmbbox.FindStringExact(result)
' 'End If
' Case 4 'DateTimePicker
' Dim datepicker As DevExpress.XtraEditors.DateEdit = DirectCast(control, DevExpress.XtraEditors.DateEdit)
If result = "" Or result = "00:00:00" Then
datepicker.DateTime = DateTime.MinValue
Else
datepicker.DateTime = Date.Parse(result)
End If
Case 13 ' Listbox
Dim listbox As DevExpress.XtraEditors.ListBoxControl = DirectCast(control, DevExpress.XtraEditors.ListBoxControl)
listbox.SelectedIndex = listbox.FindStringExact(result)
Case Else
If LogErrorsOnly = False Then ClassLogger.Add(">> Sub LoadControlValue - Control-Type nicht berücksichtigt: " & DT.Rows(0).Item("CONTROL_TYPE_ID"), False)
'MsgBox(DT.Rows(0).Item("CONTROL_TYPE_ID"))
End Select
Else
ClassLogger.Add(" >> Achtung, der Value für Control-ID: " & ControlID & " ist DBNull", False)
End If
' If result = "" Or result = "00:00:00" Then
' datepicker.DateTime = DateTime.MinValue
' Else
' datepicker.DateTime = Date.Parse(result)
' End If
' Case 13 ' Listbox
' Dim listbox As DevExpress.XtraEditors.ListBoxControl = DirectCast(control, DevExpress.XtraEditors.ListBoxControl)
' listbox.SelectedIndex = listbox.FindStringExact(result)
' Case Else
' If LogErrorsOnly = False Then ClassLogger.Add(">> Sub LoadControlValue - Control-Type nicht berücksichtigt: " & DT.Rows(0).Item("CONTROL_TYPE_ID"), False)
' 'MsgBox(DT.Rows(0).Item("CONTROL_TYPE_ID"))
' End Select
' Else
' ClassLogger.Add(" >> Achtung, der Value für Control-ID: " & ControlID & " ist DBNull", False)
' End If
Catch ex As Exception
MsgBox("Error in LoadControlValue:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
' Catch ex As Exception
' MsgBox("Error in LoadControlValue:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
' End Try
'End Sub
#Region "#### ClassControlValues REWRITE ####"
Public Shared Sub LoadControlValuesNeu(RecordId As Integer, FormId As Integer, controls As Control.ControlCollection)
ClearControlValues(controls)
Public Shared Sub LoadControlValuesNeu(RecordId As Integer, ParentRecordId As Integer, FormId As Integer, controls As Control.ControlCollection)
Try
' Dim SQL As String = String.Format("SELECT * FROM VWPMO_VALUES WHERE VALUE <> '' AND RECORD_ID = {0}", RecordId)
' Dim DT_ControlValues As DataTable = ClassDatabase.Return_Datatable(SQL, "LoadControlValues")
Dim SQL As String = String.Format("SELECT * FROM VWPMO_VALUES WHERE VALUE <> '' AND RECORD_ID = {0}", RecordId)
Dim DT_ControlValues As DataTable = ClassDatabase.Return_Datatable(SQL, "LoadControlValues")
If controls.Count = 0 Then
ClassLogger.Add("the control-Collection in LoadControlValuesNeu is empty!", True)
End If
' Zuerst alle Controls leeren
ClearControlValues(controls)
For Each control As Control In controls
Dim ControlId As Integer = CInt(control.Tag)
Dim SQL1 As String = String.Format("SELECT VALUE FROM VWPMO_VALUES WHERE CONTROL_ID = {0} AND VALUE <> '' AND RECORD_ID = {1}", ControlId, RecordId)
Dim value = ClassDatabase.Execute_Scalar(SQL1)
'' Wert per LINQ aus DT_ControlValues suchen der zur aktuellen controlId passt
'Dim value = (From row In DT_ControlValues.AsEnumerable()
' Where row.Item("CONTROL_ID") = ControlId
' Select row.Item("VALUE")).SingleOrDefault()
' Wert per LINQ aus DT_ControlValues suchen der zur aktuellen controlId passt
Dim value = (From row In DT_ControlValues.AsEnumerable()
Where row.Item("CONTROL_ID") = ControlId
Select row.Item("VALUE")).SingleOrDefault()
If Not IsNothing(value) Then
' Continue For
If TypeOf control Is GroupBox Then
Dim groupbox As GroupBox = DirectCast(control, GroupBox)
LoadControlValuesNeu(RecordId, FormId, groupbox.Controls)
Else
LoadControlValueNeu(RecordId, ControlId, control, value)
End If
If TypeOf control Is GroupBox Then
Dim groupbox As GroupBox = DirectCast(control, GroupBox)
LoadControlValuesNeu(RecordId, ParentRecordId, FormId, groupbox.Controls)
Else
If TypeOf control Is DevExpress.XtraEditors.CheckedListBoxControl Then
If LogErrorsOnly = False Then ClassLogger.Add(">> control DevExpress.XtraEditors.CheckedListBoxControl", False)
Dim chklbx As DevExpress.XtraEditors.CheckedListBoxControl
chklbx = DirectCast(control, DevExpress.XtraEditors.CheckedListBoxControl)
Dim chklbSql As String = "SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = " & ControlId
' chklbSql = ClassDatabase.Execute_Scalar(chklbSql)
' If Not (chklbSql Is Nothing Or chklbSql = String.Empty) Then
' If chklbSql.ToString.Contains("@") Then
' chklbSql = chklbSql.ToString.Replace("@RECORDID", CURRENT_RECORD_ID)
' chklbSql = chklbSql.ToString.Replace("@RECORD_ID", CURRENT_RECORD_ID)
' chklbSql = chklbSql.ToString.Replace("@PARENTRECORD_ID", CURRENT_PARENTID)
' If LogErrorsOnly = False Then ClassLogger.Add(">> SQL CheckedListBox: " & chklbSql, False)
' 'SQL-Command vorhanden also Ausführen des SQL
' Dim DT_ListBox As DataTable = ClassDatabase.Return_Datatable(chklbSql, "LoadControlValues: CheckedListBox")
' If DT_ListBox Is Nothing = False Then
' chklbx.DataSource = DT_ListBox
' Select Case DT_ListBox.Columns.Count
' Case 2
' chklbx.DisplayMember = DT_ListBox.Columns(1).ColumnName
' chklbx.ValueMember = DT_ListBox.Columns(0).ColumnName
' Case 1
' chklbx.DisplayMember = DT_ListBox.Columns(0).ColumnName
' chklbx.ValueMember = DT_ListBox.Columns(0).ColumnName
' End Select
' End If
' End If
' ElseIf (chklbSql = String.Empty) Then
' ' Wenn keine SQL Command ein leerer String ist,
' ' lade das Control ohne Datenbank, da es wahrscheinlich eine Static List ist
' chklbSql = "SELECT VALUE FROM VWPMO_VALUES WHERE CONTROL_ID = " & CONTROL_ID & " AND RECORD_ID = " & RecordID
' Dim result As String = ClassDatabase.Execute_Scalar(chklbSql)
' If Not IsNothing(result) Then
' If result.ToString <> String.Empty Then
' Dim entries() As String = result.Split(";")
' For Each entry As String In entries
' Dim position = chklbx.FindStringExact(entry)
' chklbx.SetItemCheckState(position, CheckState.Checked)
' Next
' End If
' End If
' Continue For
' Else
' If LogErrorsOnly = False Then ClassLogger.Add(">> chklbSql is nothing", False)
' End If
' chklbx.UnCheckAll()
' 'Recorddatensätze durchlaufen und überprüfen ob angehakt??
' Dim index As Integer = 0
' For i As Integer = 0 To chklbx.ItemCount - 1
' Dim item = chklbx.GetItem(i)
' Dim row As DataRowView = CType(item, DataRowView)
' If CInt(row(0)) > 0 Then
' 'Überprüfen ob es den Record gibt
' Dim SQL = "SELECT COUNT(*) FROM TBPMO_RECORD_CONNECT WHERE RECORD1_ID = " & CURRENT_RECORD_ID & " AND RECORD2_ID = " & CInt(row(0))
' If ClassDatabase.Execute_Scalar(SQL) = 1 Then
' chklbx.SetItemChecked(i, True)
' End If
' End If
' Next
ElseIf TypeOf control Is Label Then
LoadControlValueNeu(RecordId, ControlId, control, value)
End If
LoadControlValueNeu(RecordId, ParentRecordId, ControlId, control, value)
End If
Next
Catch ex As Exception
MsgBox("Error in LoadControlValuesNeu:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
Private Shared Sub LoadControlValueNeu(recordId As Integer, controlId As Integer, control As Control, value As Object)
Private Shared Sub LoadControlValueNeu(recordId As Integer, parentRecordId As Integer, controlId As Integer, control As Control, value As Object)
Try
Select Case control.GetType()
Case GetType(TextBox)
Dim textbox As TextBox = DirectCast(control, TextBox)
textbox.Text = value
ControlLoader.TextBox.LoadValue(textbox, value)
Case GetType(Label)
Dim label As Label = DirectCast(control, Label)
Dim autoValue As String = LoadControlAutoValue(controlId, recordId, control)
ControlLoader.Label.LoadValue(label, recordId, parentRecordId, value)
If IsNothing(autoValue) Then
label.Text = value
Else
label.Text = autoValue
End If
Case GetType(ComboBox)
Dim combobox As ComboBox = DirectCast(control, ComboBox)
combobox.Text = value
ControlLoader.Combobox.LoadValue(combobox, value)
Case GetType(CheckBox)
Dim checkbox As CheckBox = DirectCast(control, CheckBox)
checkbox.Checked = Boolean.Parse(value)
ControlLoader.Checkbox.LoadValue(checkbox, value)
Case GetType(RadioButton)
Dim radiobutton As RadioButton = DirectCast(control, RadioButton)
radiobutton.Checked = Boolean.Parse(value)
ControlLoader.RadioButton.LoadValue(radiobutton, value)
Case GetType(DevExpress.XtraEditors.DateEdit)
Dim datepicker As DevExpress.XtraEditors.DateEdit = DirectCast(control, DevExpress.XtraEditors.DateEdit)
If value = String.Empty Or value = "00:00:00" Then
datepicker.DateTime = DateTime.MinValue
Else
datepicker.DateTime = DateTime.Parse(value)
End If
ControlLoader.DateTimePicker.LoadValue(datepicker, value)
Case GetType(DevExpress.XtraEditors.ListBoxControl)
Dim listbox As DevExpress.XtraEditors.ListBoxControl = DirectCast(control, DevExpress.XtraEditors.ListBoxControl)
listbox.SelectedIndex = listbox.FindStringExact(value)
Case GetType(PictureBox)
LoadImage(recordId, controlId, control)
ControlLoader.ListBox.LoadValue(listbox, value)
Case GetType(DevExpress.XtraEditors.CheckedListBoxControl)
Dim chklbx As DevExpress.XtraEditors.CheckedListBoxControl
chklbx = DirectCast(control, DevExpress.XtraEditors.CheckedListBoxControl)
If Not IsNothing(value) Then
If value.ToString <> String.Empty Then
Dim entries() As String = value.Split(";")
For Each entry As String In entries
Dim position = chklbx.FindStringExact(entry)
chklbx.SetItemCheckState(position, CheckState.Checked)
Next
End If
End If
Dim checkedlistbox As DevExpress.XtraEditors.CheckedListBoxControl = DirectCast(control, DevExpress.XtraEditors.CheckedListBoxControl)
ControlLoader.CheckedListBox.LoadValue(checkedlistbox, value)
Case GetType(PictureBox)
Dim picturebox = DirectCast(control, PictureBox)
LoadImage(recordId, controlId, picturebox)
Case Else
If LogErrorsOnly = False Then ClassLogger.Add(">> Sub LoadControlValueNeu - Control-Type is not being worked: " & GetType(Control).ToString(), False)
If LogErrorsOnly = False Then ClassLogger.Add(">> Sub LoadControlValue - Control-Type nicht berücksichtigt: " & GetType(Control).ToString(), False)
End Select
Catch ex As Exception
MsgBox("Error in LoadControlValueNeu:" & vbNewLine & ex.Message)
MsgBox("Error in LoadControlValue:" & vbNewLine & ex.Message)
End Try
End Sub
'Private Shared Function CheckForStaticList(controlId As Integer, recordId As Integer)
' Try
' Dim SQL As String = String.Format("SELECT VALUE FROM VWPMO_VALUES WHERE CONTROL_ID = {0} AND RECORD_ID = {1}", controlId, recordId)
' Dim staticList As String = ClassDatabase.Execute_Scalar(SQL)
' If IsNothing(staticList) Then
' Return Nothing
' Else
' Return staticList
' End If
' Catch ex As Exception
' MsgBox("Error in CheckForStaticList: " & vbNewLine & ex.Message)
' End Try
'End Function
'Private Shared Function CheckForSqlCommand(controlId As Integer) As DataTable
' Try
' Dim SQL As String = String.Format("SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = {0}", controlId)
' Dim SqlCommand As String = ClassDatabase.Execute_Scalar(SQL)
' If SqlCommand Is Nothing Or SqlCommand = String.Empty Then
' Return Nothing
' End If
' If SqlCommand.Contains("@") Then
' SqlCommand = ReplaceSqlCommandPlaceholders(SqlCommand)
' End If
' Return ClassDatabase.Return_Datatable(SqlCommand)
' Catch ex As Exception
' MsgBox("Error in CheckForSqlCommand: " & vbNewLine & ex.Message)
' End Try
'End Function
'Private Shared Function ReplaceSqlCommandPlaceholders(sqlCommand As String)
' sqlCommand = sqlCommand.Replace("@RECORD_ID", CURRENT_RECORD_ID)
' sqlCommand = sqlCommand.Replace("@RECORDID", CURRENT_RECORD_ID)
' sqlCommand = sqlCommand.Replace("PARENTRECORD_ID", CURRENT_PARENTID)
' sqlCommand = sqlCommand.Replace("PARENTRECORDID", CURRENT_PARENTID)
' Return sqlCommand
'End Function
#End Region
'Public Shared Sub LoadControlValues(RecordID As Integer, FormID As Integer, controls As Control.ControlCollection)
' Try
' Dim CONTROL_ID As Integer
' ClearControlValues(controls)
' For Each control As Control In controls
' 'Überhaupt Columns in Grid?
' CONTROL_ID = GetControlID_for_RecordID(control.Name, RecordID)
' If CONTROL_ID = -1 Then
' CONTROL_ID = GetControlID_for_Name(control.Name, FormID)
' End If
' If LogErrorsOnly = False Then ClassLogger.Add(">> CONTROL_ID:" & CONTROL_ID, False)
' ClearControlValue(control)
' If TypeOf control Is ComboBox Then
' LoadControlValue_forControl(RecordID, FormID, DirectCast(control, ComboBox), CONTROL_ID)
' 'LoadControlValues(RecordID, FormID, DirectCast(control, ComboBox).Controls)
' ElseIf TypeOf control Is GroupBox Then
' 'LoadControlValue_forControl(RecordID, FormID, DirectCast(control, GroupBox), CONTROL_ID)
' LoadControlValues(RecordID, FormID, DirectCast(control, GroupBox).Controls)
' ElseIf TypeOf control Is PictureBox Then
' LoadImage(RecordID, CONTROL_ID, control)
' Else
' LoadControlValue(RecordID, CONTROL_ID, control)
' End If
' ''EINE CheckedListBoxControl
' 'If TypeOf control Is DevExpress.XtraEditors.CheckedListBoxControl Then
' ' If LogErrorsOnly = False Then ClassLogger.Add(">> control DevExpress.XtraEditors.CheckedListBoxControl", False)
' ' Dim chklbx As DevExpress.XtraEditors.CheckedListBoxControl
' ' chklbx = DirectCast(control, DevExpress.XtraEditors.CheckedListBoxControl)
' ' Dim chklbSql As String = "SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = " & CONTROL_ID
' ' chklbSql = ClassDatabase.Execute_Scalar(chklbSql)
' ' If Not (chklbSql Is Nothing Or chklbSql = String.Empty) Then
' ' If chklbSql.ToString.Contains("@") Then
' ' chklbSql = chklbSql.ToString.Replace("@RECORDID", CURRENT_RECORD_ID)
' ' chklbSql = chklbSql.ToString.Replace("@RECORD_ID", CURRENT_RECORD_ID)
' ' chklbSql = chklbSql.ToString.Replace("@PARENTRECORD_ID", CURRENT_PARENTID)
' ' If LogErrorsOnly = False Then ClassLogger.Add(">> SQL CheckedListBox: " & chklbSql, False)
' ' 'SQL-Command vorhanden also Ausführen des SQL
' ' Dim DT_ListBox As DataTable = ClassDatabase.Return_Datatable(chklbSql, "LoadControlValues: CheckedListBox")
' ' If DT_ListBox Is Nothing = False Then
' ' chklbx.DataSource = DT_ListBox
' ' Select Case DT_ListBox.Columns.Count
' ' Case 2
' ' chklbx.DisplayMember = DT_ListBox.Columns(1).ColumnName
' ' chklbx.ValueMember = DT_ListBox.Columns(0).ColumnName
' ' Case 1
' ' chklbx.DisplayMember = DT_ListBox.Columns(0).ColumnName
' ' chklbx.ValueMember = DT_ListBox.Columns(0).ColumnName
' ' End Select
' ' End If
' ' End If
' ' ElseIf (chklbSql = String.Empty) Then
' ' ' Wenn keine SQL Command ein leerer String ist,
' ' ' lade das Control ohne Datenbank, da es wahrscheinlich eine Static List ist
' ' chklbSql = "SELECT VALUE FROM VWPMO_VALUES WHERE CONTROL_ID = " & CONTROL_ID & " AND RECORD_ID = " & RecordID
' ' Dim result As String = ClassDatabase.Execute_Scalar(chklbSql)
' ' If Not IsNothing(result) Then
' ' If result.ToString <> String.Empty Then
' ' Dim entries() As String = result.Split(";")
' ' For Each entry As String In entries
' ' Dim position = chklbx.FindStringExact(entry)
' ' chklbx.SetItemCheckState(position, CheckState.Checked)
' ' Next
' ' End If
' ' End If
' ' Continue For
' ' Else
' ' If LogErrorsOnly = False Then ClassLogger.Add(">> chklbSql is nothing", False)
' ' End If
' ' chklbx.UnCheckAll()
' ' 'Recorddatensätze durchlaufen und überprüfen ob angehakt??
' ' Dim index As Integer = 0
' ' For i As Integer = 0 To chklbx.ItemCount - 1
' ' Dim item = chklbx.GetItem(i)
' ' Dim row As DataRowView = CType(item, DataRowView)
' ' If CInt(row(0)) > 0 Then
' ' 'Überprüfen ob es den Record gibt
' ' Dim SQL = "SELECT COUNT(*) FROM TBPMO_RECORD_CONNECT WHERE RECORD1_ID = " & CURRENT_RECORD_ID & " AND RECORD2_ID = " & CInt(row(0))
' ' If ClassDatabase.Execute_Scalar(SQL) = 1 Then
' ' chklbx.SetItemChecked(i, True)
' ' End If
' ' End If
' ' Next
' 'ElseIf TypeOf control Is DevExpress.XtraEditors.ListBoxControl Then
' ' If LogErrorsOnly = False Then ClassLogger.Add(">> control DevExpress.XtraEditors.ListBoxControl", False)
' ' Dim lbx As DevExpress.XtraEditors.ListBoxControl
' ' lbx = DirectCast(control, DevExpress.XtraEditors.ListBoxControl)
' ' Dim lbSql As String = "SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = " & CONTROL_ID
' ' lbSql = ClassDatabase.Execute_Scalar(lbSql)
' ' If Not (lbSql Is Nothing Or lbSql = String.Empty) Then
' ' If lbSql.ToString.Contains("@") Then
' ' lbSql = lbSql.ToString.Replace("@RECORDID".ToUpper, CURRENT_RECORD_ID)
' ' lbSql = lbSql.ToString.Replace("@RECORD_ID".ToUpper, CURRENT_RECORD_ID)
' ' lbSql = lbSql.ToString.Replace("@PARENTRECORD_ID".ToUpper, CURRENT_PARENTID)
' ' If LogErrorsOnly = False Then ClassLogger.Add(">> SQL ListBox: " & lbSql, False)
' ' 'SQL-Command vorhanden also Ausführen des SQL
' ' Dim DT_ListBox As DataTable = ClassDatabase.Return_Datatable(lbSql, "LoadControlValues: ListBoxControl")
' ' If DT_ListBox Is Nothing = False Then
' ' lbx.DataSource = DT_ListBox
' ' Select Case DT_ListBox.Columns.Count
' ' Case 2
' ' lbx.DisplayMember = DT_ListBox.Columns(1).ColumnName
' ' lbx.ValueMember = DT_ListBox.Columns(0).ColumnName
' ' Case 1
' ' lbx.DisplayMember = DT_ListBox.Columns(0).ColumnName
' ' lbx.ValueMember = DT_ListBox.Columns(0).ColumnName
' ' End Select
' ' If DT_ListBox.Columns.Count > 1 Then
' ' End If
' ' Else
' ' If LogErrorsOnly = False Then ClassLogger.Add(">> DT_ListBox is nothing", False)
' ' End If
' ' Else
' ' If LogErrorsOnly = False Then ClassLogger.Add(">> lbSql.ToString NOT Contains(@)", False)
' ' End If
' ' ElseIf (lbSql = String.Empty) Then
' ' ' Wenn keine SQL Command ein leerer String ist,
' ' ' lade das Control ohne Datenbank, da es wahrscheinlich eine Static List ist
' ' LoadControlValue(RecordID, CONTROL_ID, control)
' ' Continue For
' ' Else
' ' If LogErrorsOnly = False Then ClassLogger.Add(">> lbSql is nothing", False)
' ' End If
' 'ElseIf CONTROL_ID <> -1 Then
' ' 'If LogErrorsOnly = False Then ClassLogger.Add(">> LoadControlValues CONTROL_ID: " & CONTROL_ID, False)
' ' LoadControlValue(RecordID, CONTROL_ID, control)
' 'End If
' Next
' Catch ex As Exception
' MsgBox("Unexpected Error in LoadControlValues:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
' End Try
'End Sub
'Public Shared Sub LoadControlValue_forControl(RecordID As Integer, FormID As Integer, control As System.Windows.Forms.Control, CONTROL_ID As Integer)
' Try
' 'EINE CheckedListBoxControl
' If TypeOf control Is DevExpress.XtraEditors.CheckedListBoxControl Then
' If LogErrorsOnly = False Then ClassLogger.Add(">> control DevExpress.XtraEditors.CheckedListBoxControl", False)
' Dim chklbx As DevExpress.XtraEditors.CheckedListBoxControl
' chklbx = DirectCast(control, DevExpress.XtraEditors.CheckedListBoxControl)
' Dim chklbSql As String = "SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = " & CONTROL_ID
' chklbSql = ClassDatabase.Execute_Scalar(chklbSql)
' If Not (chklbSql Is Nothing Or chklbSql = String.Empty) Then
' If chklbSql.ToString.Contains("@") Then
' chklbSql = chklbSql.ToString.Replace("@RECORDID", CURRENT_RECORD_ID)
' chklbSql = chklbSql.ToString.Replace("@RECORD_ID", CURRENT_RECORD_ID)
' chklbSql = chklbSql.ToString.Replace("@PARENTRECORD_ID", CURRENT_PARENTID)
' If LogErrorsOnly = False Then ClassLogger.Add(">> SQL CheckedListBox: " & chklbSql, False)
' 'SQL-Command vorhanden also Ausführen des SQL
' Dim DT_ListBox As DataTable = ClassDatabase.Return_Datatable(chklbSql, "LoadControlValue_forControl: CheckedListBox")
' If DT_ListBox Is Nothing = False Then
' chklbx.DataSource = DT_ListBox
' Select Case DT_ListBox.Columns.Count
' Case 2
' chklbx.DisplayMember = DT_ListBox.Columns(1).ColumnName
' chklbx.ValueMember = DT_ListBox.Columns(0).ColumnName
' Case 1
' chklbx.DisplayMember = DT_ListBox.Columns(0).ColumnName
' chklbx.ValueMember = DT_ListBox.Columns(0).ColumnName
' End Select
' End If
' End If
' ElseIf (chklbSql = String.Empty) Then
' ' Wenn keine SQL Command ein leerer String ist,
' ' lade das Control ohne Datenbank, da es wahrscheinlich eine Static List ist
' chklbSql = "SELECT VALUE FROM VWPMO_VALUES WHERE CONTROL_ID = " & CONTROL_ID & " AND RECORD_ID = " & RecordID
' Dim result As String = ClassDatabase.Execute_Scalar(chklbSql)
' If Not IsNothing(result) Then
' If result.ToString <> String.Empty Then
' Dim entries() As String = result.Split(";")
' For Each entry As String In entries
' Dim position = chklbx.FindStringExact(entry)
' chklbx.SetItemCheckState(position, CheckState.Checked)
' Next
' End If
' End If
' Else
' If LogErrorsOnly = False Then ClassLogger.Add(">> chklbSql is nothing", False)
' End If
' chklbx.UnCheckAll()
' 'Recorddatensätze durchlaufen und überprüfen ob angehakt??
' Dim index As Integer = 0
' For i As Integer = 0 To chklbx.ItemCount - 1
' Dim item = chklbx.GetItem(i)
' Dim row As DataRowView = CType(item, DataRowView)
' If CInt(row(0)) > 0 Then
' 'Überprüfen ob es den Record gibt
' Dim SQL = "SELECT COUNT(*) FROM TBPMO_RECORD_CONNECT WHERE RECORD1_ID = " & CURRENT_RECORD_ID & " AND RECORD2_ID = " & CInt(row(0))
' If ClassDatabase.Execute_Scalar(SQL) = 1 Then
' chklbx.SetItemChecked(i, True)
' End If
' End If
' Next
' ElseIf TypeOf control Is DevExpress.XtraEditors.ListBoxControl Then
' If LogErrorsOnly = False Then ClassLogger.Add(">> control DevExpress.XtraEditors.ListBoxControl", False)
' Dim lbx As DevExpress.XtraEditors.ListBoxControl
' lbx = DirectCast(control, DevExpress.XtraEditors.ListBoxControl)
' Dim lbSql As String = "SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = " & CONTROL_ID
' lbSql = ClassDatabase.Execute_Scalar(lbSql)
' If Not (lbSql Is Nothing Or lbSql = String.Empty) Then
' If lbSql.ToString.Contains("@") Then
' lbSql = lbSql.ToString.Replace("@RECORDID".ToUpper, CURRENT_RECORD_ID)
' lbSql = lbSql.ToString.Replace("@RECORD_ID".ToUpper, CURRENT_RECORD_ID)
' lbSql = lbSql.ToString.Replace("@PARENTRECORD_ID".ToUpper, CURRENT_PARENTID)
' If LogErrorsOnly = False Then ClassLogger.Add(">> SQL ListBox: " & lbSql, False)
' 'SQL-Command vorhanden also Ausführen des SQL
' Dim DT_ListBox As DataTable = ClassDatabase.Return_Datatable(lbSql, "LoadControlValue_forControl: ListBoxControl")
' If DT_ListBox Is Nothing = False Then
' lbx.DataSource = DT_ListBox
' Select Case DT_ListBox.Columns.Count
' Case 2
' lbx.DisplayMember = DT_ListBox.Columns(1).ColumnName
' lbx.ValueMember = DT_ListBox.Columns(0).ColumnName
' Case 1
' lbx.DisplayMember = DT_ListBox.Columns(0).ColumnName
' lbx.ValueMember = DT_ListBox.Columns(0).ColumnName
' End Select
' If DT_ListBox.Columns.Count > 1 Then
' End If
' Else
' If LogErrorsOnly = False Then ClassLogger.Add(">> DT_ListBox is nothing", False)
' End If
' Else
' If LogErrorsOnly = False Then ClassLogger.Add(">> lbSql.ToString NOT Contains(@)", False)
' End If
' ElseIf (lbSql = String.Empty) Then
' ' Wenn keine SQL Command ein leerer String ist,
' ' lade das Control ohne Datenbank, da es wahrscheinlich eine Static List ist
' LoadControlValue(RecordID, CONTROL_ID, control)
' Else
' If LogErrorsOnly = False Then ClassLogger.Add(">> lbSql is nothing", False)
' End If
' ElseIf CONTROL_ID <> -1 Then
' 'If LogErrorsOnly = False Then ClassLogger.Add(">> LoadControlValue_forControl CONTROL_ID: " & CONTROL_ID, False)
' LoadControlValue(RecordID, CONTROL_ID, control)
' End If
' Catch ex As Exception
' MsgBox("Unexpected Error in LoadControlValue_forControl:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
' End Try
'End Sub
Public Shared Sub LoadControlValuesList(RecordID As Integer, FormID As Integer, controls As Control.ControlCollection)
Public Shared Sub LoadControlValuesList(RecordID As Integer, ParentRecordId As Integer, FormID As Integer, controls As Control.ControlCollection)
Try
If controls.Count = 0 Then
MsgBox("Control.ControlCollection is unexpected empty!", MsgBoxStyle.Exclamation)
@@ -641,7 +249,7 @@ Public Class ClassControlValues
'Dim DT_Combobox As DataTable = ClassDatabase.Return_Datatable(SQL2)
' Zuerst versuchen, DataTable aus dem Cache zu laden
Dim DT_Combobox As DataTable = ClassControlValueCache.LoadFromCache(FormID, controlId)
Dim DT_Combobox As DataTable = ClassControlValueCache.LoadFromCache(FormID, ControlId)
' Wenn DataTable nicht im Cache vorhanden, aus der Datenbank laden
If IsNothing(DT_Combobox) Then
DT_Combobox = ClassDatabase.Return_Datatable(SQL2)
@@ -653,7 +261,7 @@ Public Class ClassControlValues
Combobox.DisplayMember = DT_Combobox.Columns(1).ColumnName
Combobox.ValueMember = DT_Combobox.Columns(0).ColumnName
ClassControlValueCache.SaveToCache(FormID, controlId, DT_Combobox)
ClassControlValueCache.SaveToCache(FormID, ControlId, DT_Combobox)
End If
Dim iWidestWidth As Integer = 300
@@ -672,8 +280,8 @@ Public Class ClassControlValues
Combobox.DropDownWidth = Math.Max(iWidestWidth, Combobox.Width)
End If
LoadControlValue(RecordID, ControlId, Ctrl)
'LoadControlValueNeu(RecordID, ControlId, Ctrl, "")
'LoadControlValue(RecordID, ControlId, Ctrl)
LoadControlValueNeu(RecordID, ParentRecordId, ControlId, Ctrl, "")
End If
swInner.Stop()
@@ -717,6 +325,7 @@ Public Class ClassControlValues
End If
End Sub
#Region "ClearControlValue"
Public Shared Sub ClearControlValues(controls As Control.ControlCollection)
For Each control In controls
If control.GetType().Name = "GroupBox" Then
@@ -729,60 +338,58 @@ Public Class ClassControlValues
End Sub
Public Shared Sub ClearControlValue(control As Control)
Dim type = control.GetType().Name
Select Case type
Case "TextBox"
Select Case control.GetType()
Case GetType(TextBox)
DirectCast(control, TextBox).Text = String.Empty
Case "ComboBox"
Case GetType(ComboBox)
Dim combo As ComboBox = DirectCast(control, ComboBox)
combo.SelectedIndex = -1
combo.Text = String.Empty
Case "CheckBox"
Case GetType(CheckBox)
DirectCast(control, CheckBox).Checked = False
Case "RadioButton"
Case GetType(RadioButton)
DirectCast(control, RadioButton).Checked = False
Case "DateEdit"
Case GetType(DevExpress.XtraEditors.DateEdit)
DirectCast(control, DevExpress.XtraEditors.DateEdit).DateTime = Now
Case "PictureBox"
Case GetType(PictureBox)
DirectCast(control, PictureBox).BackgroundImage = Nothing
Case "CheckedListBoxControl"
Case GetType(DevExpress.XtraEditors.CheckedListBoxControl)
Dim chklbx As DevExpress.XtraEditors.CheckedListBoxControl = DirectCast(control, DevExpress.XtraEditors.CheckedListBoxControl)
'If IsNothing(chklbx.DataSource) Then
chklbx.UnCheckAll()
'End If
'Case "ListBoxControl"
' Dim lbx As DevExpress.XtraEditors.ListBoxControl
' lbx = DirectCast(control, DevExpress.XtraEditors.ListBoxControl)
' lbx.DataSource = Nothing
Case Else
Case GetType(DevExpress.XtraEditors.ListBoxControl)
Dim lb As DevExpress.XtraEditors.ListBoxControl = DirectCast(control, DevExpress.XtraEditors.ListBoxControl)
lb.SelectedIndex = -1
End Select
End Sub
#End Region
#Region "LoadDefaultValue"
Public Shared Sub LoadDefaultValues(FormID As Integer, RecordID As Integer, controls As Control.ControlCollection)
Dim CONTROL_ID As Integer
'' Zuerst alle Controls leeren
'ClearControlValues(controls)
' Zuerst alle Controls leeren
ClearControlValues(controls)
Dim i = 0
For Each control As Control In controls
CONTROL_ID = control.Tag ' GetControlID_for_Name(control.Name, FormID)
Dim CONTROL_ID = control.Tag ' GetControlID_for_Name(control.Name, FormID)
If Not (TypeOf control Is Label) Then
i += 1
End If
If TypeOf control Is GroupBox Then
LoadDefaultValues(FormID, RecordID, DirectCast(control, GroupBox).Controls)
ElseIf TypeOf control Is DevExpress.XtraEditors.CheckedListBoxControl Then
Dim chklbx As DevExpress.XtraEditors.CheckedListBoxControl
chklbx = DirectCast(control, DevExpress.XtraEditors.CheckedListBoxControl)
chklbx.UnCheckAll()
End If
If CONTROL_ID <> -1 Then
LoadDefaultValue(CONTROL_ID, RecordID, control)
End If
LoadDefaultValue(CONTROL_ID, RecordID, control)
'Den Focus auf das erste Steuerelement setzen
If i = 1 Then
control.Focus()
@@ -793,57 +400,64 @@ Public Class ClassControlValues
Public Shared Sub LoadDefaultValue(ControlID As Integer, RecordID As Integer, control As Control)
Try
Dim SQL = "SELECT * FROM VWPMO_CONTROL_SCREEN WHERE CONTROL_ID = " & ControlID
Dim DT As DataTable = ClassDatabase.Return_Datatable(SQL)
Dim result = DT.Rows(0).Item("CONTROL_DEF_VALUE")
Dim SQL = String.Format("SELECT CONTROL_DEF_VALUE FROM VWPMO_CONTROL_SCREEN WHERE CONTROL_ID = {0}", ControlID)
Dim autoValue = ClassDatabase.Execute_Scalar(SQL)
Select Case DT.Rows(0).Item("CTRLTYPE_ID")
Case 2 ' TextBox
'Dim SQL = "SELECT * FROM VWPMO_CONTROL_SCREEN WHERE CONTROL_ID = " & ControlID
'Dim DT As DataTable = ClassDatabase.Return_Datatable(SQL)
'Dim result = DT.Rows(0).Item("CONTROL_DEF_VALUE")
Select Case control.GetType()
Case GetType(TextBox)
Dim textbox As TextBox = DirectCast(control, TextBox)
If IsDBNull(result) Then
If IsDBNull(autoValue) Then
textbox.Text = ""
Else
Dim vorgabe = result
Dim vorgabe = autoValue
'Wenn der Default Wert über einen Select kommt
If vorgabe.ToString.ToLower.StartsWith("select") Then
vorgabe = result.Replace("@FORM_ID", CURRENT_FORM_ID)
vorgabe = autoValue.Replace("@FORM_ID", CURRENT_FORM_ID)
vorgabe = vorgabe.Replace("@RECORD_ID", CURRENT_RECORD_ID)
vorgabe = vorgabe.Replace("@RECORDID", CURRENT_RECORD_ID)
vorgabe = vorgabe.Replace("@PARENTRECORD_ID", CURRENT_PARENTID)
result = ClassDatabase.Execute_Scalar(vorgabe.ToString, True)
autoValue = ClassDatabase.Execute_Scalar(vorgabe.ToString, True)
If IsNothing(vorgabe) Then
textbox.Text = ""
End If
End If
textbox.Text = result
textbox.Text = autoValue
End If
Case 10 ' CheckBox
Case GetType(CheckBox)
Dim checkbox As CheckBox = DirectCast(control, CheckBox)
checkbox.Checked = StrToBool(result)
Case 11 'RadioButton
checkbox.Checked = StrToBool(autoValue)
Case GetType(RadioButton)
Dim radio As RadioButton = DirectCast(control, RadioButton)
radio.Checked = StrToBool(result)
Case 3 ' ComboBox
radio.Checked = StrToBool(autoValue)
Case GetType(ComboBox)
Dim combobox As ComboBox = DirectCast(control, ComboBox)
If IsDBNull(result) Then
If IsDBNull(autoValue) Then
combobox.SelectedIndex = -1
Else
combobox.SelectedIndex = combobox.FindStringExact(result)
combobox.SelectedIndex = combobox.FindStringExact(autoValue)
End If
Case 4 'DateTimePicker
Case GetType(DevExpress.XtraEditors.DateEdit)
Dim datepicker As DevExpress.XtraEditors.DateEdit = DirectCast(control, DevExpress.XtraEditors.DateEdit)
If IsDBNull(result) OrElse result = "" OrElse result = "False" Then
result = Now
If IsDBNull(autoValue) OrElse autoValue = "" OrElse autoValue = "False" Then
autoValue = Now
End If
datepicker.DateTime = result
datepicker.DateTime = autoValue
End Select
Catch ex As Exception
MsgBox("Unexpected Error in LoadDefaultValue:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
#End Region
Public Shared Function Get_Control_Value_for_ID(Control_ID As Integer, Record_ID As Integer)
Try
Return ClassDatabase.Execute_Scalar("SELECT VALUE FROM TBPMO_CONTROL_VALUE WHERE CONTROL_ID = " & Control_ID & " AND RECORD_ID = " & Record_ID, True)

View File

@@ -28,7 +28,6 @@ Public Class ClassInit
If dbResult = False Then
Throw New Exception("Find more information in the logfile.")
End If
Return True
Catch ex As Exception
MsgBox("Unexpected Error in Init Database:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
Return False
@@ -47,7 +46,7 @@ Public Class ClassInit
Catch ex As Exception
MsgBox("Unexpected Error in Init windream:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
@@ -127,7 +126,7 @@ Public Class ClassInit
USERS_LOGGED_IN = CInt(anzahl)
If LogErrorsOnly = False Then ClassLogger.Add(" >> Anzahl Angemeldete User: " & anzahl.ToString, False)
'####
If LICENSE_COUNT < USERS_LOGGED_IN And LICENSE_EXPIRED = False Then
MsgBox("Die Anzahl der aktuell angemeldeten User (" & USERS_LOGGED_IN.ToString & ") überschreitet die Anzahl der aktuellen Lizenzen!" & vbNewLine & "Anzahl der Lizenzen: " & LICENSE_COUNT.ToString & vbNewLine & "Bitte setzen Sie sich mit dem Systembetreuer in Verbindung!", MsgBoxStyle.Critical, "Achtung:")
ClassLogger.Add(" >> Die Anzahl der aktuell angemeldeten User (" & USERS_LOGGED_IN.ToString & ") überschreitet die Anzahl der Lizenzen (" & LICENSE_COUNT & ") für Record-Organizer!", False)

View File

@@ -0,0 +1,62 @@
Imports CommandLine
Imports CommandLine.Text
Imports System.Text.RegularExpressions
Public Class ClassJumpRecord
Private Shared ProtocolRegex As New Regex("pmo://(?<constructorId>\d+)-(?<recordId>\d+)")
'Aufruf: PMO.exe --data pmo://10-60
Class Options
<[Option]("d", "data")>
Public Property data As String
End Class
Public Shared Sub ParseArgs()
Try
Dim args() As String = Environment.GetCommandLineArgs()
Dim options As New Options()
Dim constructorId As Integer
Dim recordId As Integer
If args.Length <> 3 Then
Exit Sub
End If
If (Parser.Default.ParseArguments(args, options)) Then
Dim data As String = options.data
Dim match = ProtocolRegex.Match(data)
If Not match.Success Then
Exit Sub
End If
constructorId = match.Groups("constructorId").Value
recordId = match.Groups("recordId").Value
JumpToRecord(constructorId, recordId)
Else
Exit Sub
End If
Catch ex As Exception
MsgBox("Error in ParseArgs:" & vbNewLine & ex.Message)
Exit Sub
End Try
End Sub
Private Shared Sub JumpToRecord(constructorId As Integer, recordId As Integer)
Try
Dim constructorIdExists As Boolean = ClassDatabase.Execute_Scalar(String.Format("SELECT CONSTRUCT_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {0}", constructorId))
Dim recordIdExists As Boolean = ClassDatabase.Execute_Scalar(String.Format("SELECT GUID FROM TBPMO_RECORD WHERE GUID = {0}", recordId))
If constructorIdExists = False Or recordIdExists = False Then
MsgBox("Das angegebene Formular konnte nicht geöffnet werden. Grund: Die ConstructorID oder die RecordID wurde nicht gefunden." & vbNewLine & "constructorId: " & constructorId & ", recordId: " & recordId, MsgBoxStyle.Exclamation, "URL Handler")
Exit Sub
End If
OpenFormConstructor(constructorId, recordId)
Catch ex As Exception
MsgBox("Error in JumpToRecord:" & vbNewLine & ex.Message)
Exit Sub
End Try
End Sub
End Class

View File

@@ -78,6 +78,9 @@
<HintPath>..\..\3rdparty\lib\Windream\AxInterop.OBJECTLISTCONTROLLib.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="CommandLine">
<HintPath>..\..\3rdparty\lib\Commandline\CommandLine.dll</HintPath>
</Reference>
<Reference Include="DevExpress.BonusSkins.v15.1, Version=15.1.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<Private>True</Private>
@@ -243,9 +246,11 @@
<Import Include="System.Threading.Tasks" />
</ItemGroup>
<ItemGroup>
<Compile Include="ClassControlLoader.vb" />
<Compile Include="ClassControlValueCache.vb" />
<Compile Include="ClassControlValuesConverter.vb" />
<Compile Include="ClassFolderWatcher.vb" />
<Compile Include="ClassJumpRecord.vb" />
<Compile Include="ClassLicence.vb" />
<Compile Include="frmAbout.designer.vb">
<DependentUpon>frmAbout.vb</DependentUpon>

View File

@@ -211,23 +211,8 @@
frm3.Show()
End Sub
Public Sub OpenFormConstructor(id As Integer)
CURRENT_CONSTRUCTOR_ID = id
Dim frm As New frmForm_Constructor()
Dim activeChild As Form = MAIN_FORM.ActiveMdiChild
If activeChild IsNot Nothing Then
activeChild.WindowState = FormWindowState.Normal
End If
frm.MdiParent = MAIN_FORM
frm.Show()
' frm = frmForm_Constructor.Instance()
End Sub
' TODO: NUR FÜR WINDREAM CON!!!
Public Sub OpenFormConstructorDemo(id As Integer)
Public Sub OpenFormConstructor(id As Integer, Optional recordId As Integer = -1)
Try
CURRENT_CONSTRUCTOR_ID = id
Dim frm As New frmForm_Constructor_Main_2()
@@ -238,6 +223,11 @@
activeChild.WindowState = FormWindowState.Normal
End If
If recordId <> -1 Then
' Wenn JUMP_RECORD_ID gesetzt wurde, wird zu diesem Record gesprungen
JUMP_RECORD_ID = recordId
End If
frm.MdiParent = MAIN_FORM
frm.Show()
Catch ex As Exception
@@ -245,7 +235,6 @@
MsgBox("Fehler beim Laden des Formulars, bitte erneut versuchen")
End Try
End Sub
' TODO: NUR FÜR WINDREAM CON!!!
Public Sub OpenTaskmanagement()
Dim frm As New frmTaskmanagement

View File

@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
' übernehmen, indem Sie "*" eingeben:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("2.3.0.0")>
<Assembly: AssemblyVersion("2.4.0.0")>
<Assembly: AssemblyFileVersion("1.0.0.0")>

Binary file not shown.

After

Width:  |  Height:  |  Size: 657 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 641 B

View File

@@ -100,7 +100,7 @@ Partial Public Class frmCustomAppointment
' TODO: FormId und ConstructId herausfinden
OpenFormConstructorDemo(constructId)
OpenFormConstructor(constructId)
Me.Close()
End If
End Sub

View File

@@ -1119,8 +1119,8 @@ Public Class frmForm_Constructor
Load_Entity_Data_Only()
Search_RowHandle(CURRENT_RECORD_ID)
'Die Daten auf dem Panel laden
ClassControlValues.LoadControlValuesNeu(CURRENT_RECORD_ID, CURRENT_FORM_ID, CtrlBuilder.AllControls)
ClassControlValues.LoadControlValuesList(CURRENT_RECORD_ID, CURRENT_FORM_ID, CtrlBuilder.AllControls)
ClassControlValues.LoadControlValuesNeu(CURRENT_RECORD_ID, CURRENT_PARENTID,CURRENT_FORM_ID, CtrlBuilder.AllControls)
ClassControlValues.LoadControlValuesList(CURRENT_RECORD_ID, CURRENT_PARENTID, CURRENT_FORM_ID, CtrlBuilder.AllControls)
pnlDetails.Enabled = True
End If
Catch ex As Exception
@@ -1645,8 +1645,8 @@ Public Class frmForm_Constructor
If EDIT_STATE = "none" Then
'TabPageDetails.Text = "Detaileingabe zu '" & ACT_EBENE_STRING & "' - Record(" & SelectedRecordID & ")"
'Die Daten auf dem Panel laden
ClassControlValues.LoadControlValuesNeu(SelectedRecordID, CURRENT_FORM_ID, CtrlBuilder.AllControls)
ClassControlValues.LoadControlValuesList(SelectedRecordID, CURRENT_FORM_ID, CtrlBuilder.AllControls)
ClassControlValues.LoadControlValuesNeu(SelectedRecordID, CURRENT_PARENTID, CURRENT_FORM_ID, CtrlBuilder.AllControls)
ClassControlValues.LoadControlValuesList(SelectedRecordID, CURRENT_PARENTID, CURRENT_FORM_ID, CtrlBuilder.AllControls)
'Load_Control_Values(CtrlBuilder.AllControls)
'Refresh_Treeview_SelectedData()
RECORD_CHANGED = False
@@ -2361,8 +2361,8 @@ Public Class frmForm_Constructor
Select Case TCDetails.SelectedTabPageIndex
Case 0
If RECORD_NEEDS_REFRESH = True Then
ClassControlValues.LoadControlValuesNeu(SelectedRecordID, CURRENT_FORM_ID, CtrlBuilder.AllControls)
ClassControlValues.LoadControlValuesList(SelectedRecordID, CURRENT_FORM_ID, CtrlBuilder.AllControls)
ClassControlValues.LoadControlValuesNeu(SelectedRecordID, CURRENT_PARENTID, CURRENT_FORM_ID, CtrlBuilder.AllControls)
ClassControlValues.LoadControlValuesList(SelectedRecordID, CURRENT_PARENTID, CURRENT_FORM_ID, CtrlBuilder.AllControls)
UpdRECORD_NEEDS_REFRESH(False)
End If

View File

@@ -822,7 +822,7 @@ Public Class frmForm_Constructor_Main
Load_Entity_Data_Only()
Get_Grid_Row_Handle(CURRENT_RECORD_ID)
'Die Daten auf dem Panel laden
ClassControlValues.LoadControlValuesNeu(CURRENT_RECORD_ID, CURRENT_FORM_ID, CtrlBuilder.AllControls)
ClassControlValues.LoadControlValuesNeu(CURRENT_RECORD_ID, CURRENT_PARENTID, CURRENT_FORM_ID, CtrlBuilder.AllControls)
pnlDetails.Enabled = True
End If
@@ -859,7 +859,7 @@ Public Class frmForm_Constructor_Main
Me.tsButtonEditMode.Text = "Bearbeiten beenden"
'Funktion zum Vollständigen load der Inhalte
ClassControlValues.LoadControlValuesList(SELECTED_RECORD_ID, CURRENT_FORM_ID, CtrlBuilder.AllControls)
ClassControlValues.LoadControlValuesList(SELECTED_RECORD_ID, CURRENT_PARENTID, CURRENT_FORM_ID, CtrlBuilder.AllControls)
Else
RECORD_ENABLED = False
Me.pnlDetails.Enabled = False
@@ -1521,7 +1521,7 @@ Public Class frmForm_Constructor_Main
If EDIT_STATE = EditState.None Then
'TabPageDetails.Text = "Detaileingabe zu '" & ACT_EBENE_STRING & "' - Record(" & SelectedRecordID & ")"
'Die Daten auf dem Panel laden
ClassControlValues.LoadControlValuesNeu(SELECTED_RECORD_ID, CURRENT_FORM_ID, CtrlBuilder.AllControls)
ClassControlValues.LoadControlValuesNeu(SELECTED_RECORD_ID, CURRENT_PARENTID, CURRENT_FORM_ID, CtrlBuilder.AllControls)
'Load_Control_Values(CtrlBuilder.AllControls)
'Refresh_Treeview_SelectedData()
RECORD_CHANGED = False

View File

@@ -175,6 +175,7 @@ Partial Class frmForm_Constructor_Main_2
'
Me.grvwGrid.Appearance.EvenRow.BackColor = System.Drawing.Color.Aqua
Me.grvwGrid.Appearance.EvenRow.Options.UseBackColor = True
Me.grvwGrid.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.None
Me.grvwGrid.GridControl = Me.GridControlMain
Me.grvwGrid.GroupPanelText = "Ziehen Sie Spaltenüberschriften in diesen Bereich um nach diesen gruppieren zu la" & _
"ssen"
@@ -185,6 +186,9 @@ Partial Class frmForm_Constructor_Main_2
Me.grvwGrid.OptionsBehavior.CopyToClipboardWithColumnHeaders = False
Me.grvwGrid.OptionsBehavior.Editable = False
Me.grvwGrid.OptionsBehavior.ReadOnly = True
Me.grvwGrid.OptionsSelection.EnableAppearanceFocusedCell = False
Me.grvwGrid.OptionsSelection.EnableAppearanceFocusedRow = False
Me.grvwGrid.OptionsSelection.EnableAppearanceHideSelection = False
Me.grvwGrid.OptionsView.ColumnAutoWidth = False
Me.grvwGrid.OptionsView.EnableAppearanceEvenRow = True
Me.grvwGrid.OptionsView.EnableAppearanceOddRow = True

View File

@@ -612,11 +612,11 @@ Public Class frmForm_Constructor_Main_2
If GRID_TYPE = GridType.Grid Then
If IsTopFirstRow Then
IsTopFirstRow = False
grvwGrid.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus
grvwGrid.OptionsBehavior.Editable = Not IsTopFirstRow
grvwGrid.OptionsSelection.EnableAppearanceFocusedCell = Not IsTopFirstRow
grvwGrid.OptionsSelection.EnableAppearanceFocusedRow = Not IsTopFirstRow
grvwGrid.OptionsSelection.EnableAppearanceHideSelection = Not IsTopFirstRow
'grvwGrid.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus
'grvwGrid.OptionsBehavior.Editable = Not IsTopFirstRow
'grvwGrid.OptionsSelection.EnableAppearanceFocusedCell = Not IsTopFirstRow
'grvwGrid.OptionsSelection.EnableAppearanceFocusedRow = Not IsTopFirstRow
'grvwGrid.OptionsSelection.EnableAppearanceHideSelection = Not IsTopFirstRow
End If
ElseIf GRID_TYPE = GridType.Carousel Then
If IsTopFirstRow Then
@@ -999,7 +999,7 @@ Public Class frmForm_Constructor_Main_2
Lock_RecordControls(False)
tsButtonShowWorkflowTasks.Enabled = True
ClassControlValues.LoadDefaultValues(CURRENT_FORM_ID, SELECTED_RECORD_ID, pnlDetails.Controls)
ClassControlValues.LoadControlValuesList(SELECTED_RECORD_ID, CURRENT_FORM_ID, CtrlBuilder.AllControls)
'ClassControlValues.LoadControlValuesList(SELECTED_RECORD_ID, CURRENT_FORM_ID, CtrlBuilder.AllControls)
' Im gegensatz zu EnableEditMode muss hier nur der save button enabled werden
tsButtonSave.Enabled = True
@@ -1197,7 +1197,7 @@ Public Class frmForm_Constructor_Main_2
Me.tsButtonSave.Enabled = True
Me.tsButtonEditMode.Text = "Bearbeiten beenden"
'Funktion zum Vollständigen load der Inhalte
ClassControlValues.LoadControlValuesList(SELECTED_RECORD_ID, CURRENT_FORM_ID, CtrlBuilder.AllControls)
ClassControlValues.LoadControlValuesList(SELECTED_RECORD_ID, CURRENT_PARENTID, CURRENT_FORM_ID, CtrlBuilder.AllControls)
RECORD_ENABLED = True
pnlDetails.Focus()
'If RECORD_ENABLED = False Then
@@ -1524,9 +1524,12 @@ Public Class frmForm_Constructor_Main_2
' column.MinWidth = 100
'Next
' Wenn rows existieren, erste row laden und recordid auslesen
Dim firstRow As System.Data.DataRowView = GridControlMain.MainView.GetRow(0)
Dim firstRecordId As Integer = firstRow.Row.Item("Record-ID")
ClassControlValues.LoadControlValuesList(firstRecordId, CURRENT_FORM_ID, CtrlBuilder.MasterPanel.Controls)
If Not IsNothing(firstRow) Then
Dim firstRecordId As Integer = firstRow.Row.Item("Record-ID")
ClassControlValues.LoadControlValuesList(firstRecordId, CURRENT_PARENTID, CURRENT_FORM_ID, CtrlBuilder.MasterPanel.Controls)
End If
'Zurücksetzen
ENTITY_LOADED = True
@@ -1556,7 +1559,7 @@ Public Class frmForm_Constructor_Main_2
CURRENT_RECORD_ID = Grid_RecordID
'Daten zu Record in jedem Fall laden
'ClassControlValues.LoadControlValues(SELECTED_RECORD_ID, CURRENT_FORM_ID, CtrlBuilder.AllControls)
ClassControlValues.LoadControlValuesNeu(SELECTED_RECORD_ID, CURRENT_FORM_ID, CtrlBuilder.AllControls)
ClassControlValues.LoadControlValuesNeu(SELECTED_RECORD_ID, CURRENT_PARENTID, CURRENT_FORM_ID, CtrlBuilder.AllControls)
' Laden der Daten bedeutet nicht dass Daten vom Benutzer geändert wurden!
RECORD_CHANGED = False
Update_Record_Label(Grid_RecordID)
@@ -1683,48 +1686,80 @@ Public Class frmForm_Constructor_Main_2
End Sub
Sub Lock_RecordControls(state As Boolean)
For Each Control As System.Windows.Forms.Control In pnlDetails.Controls
If (Control.GetType() Is GetType(TextBox)) Then
Dim txt As TextBox = CType(Control, TextBox)
txt.ReadOnly = state
End If
If (Control.GetType() Is GetType(System.Windows.Forms.ComboBox)) Then
Dim cbobx As System.Windows.Forms.ComboBox = CType(Control, System.Windows.Forms.ComboBox)
If state = True Then
cbobx.Enabled = False
Else
cbobx.Enabled = True
End If
End If
If (Control.GetType() Is GetType(DevExpress.XtraEditors.DateEdit)) Then
Dim dtp As DevExpress.XtraEditors.DateEdit = CType(Control, DevExpress.XtraEditors.DateEdit)
If state = True Then
dtp.Enabled = False
Else
dtp.Enabled = True
End If
Lock_Record_Controls_Recursive(state, pnlDetails.Controls)
End Sub
End If
If (Control.GetType() Is GetType(DevExpress.XtraEditors.CheckedListBoxControl)) Then
Dim chlb As DevExpress.XtraEditors.CheckedListBoxControl = CType(Control, DevExpress.XtraEditors.CheckedListBoxControl)
If state = True Then
chlb.Enabled = False
Else
chlb.Enabled = True
End If
Sub Lock_Record_Controls_Recursive(state As Boolean, controls As System.Windows.Forms.Control.ControlCollection)
For Each Control As System.Windows.Forms.Control In controls
End If
If (Control.GetType() Is GetType(Button)) Then
Dim btn As Button = CType(Control, Button)
If state = True Then
btn.Enabled = False
Else
btn.Enabled = True
End If
End If
Select Case Control.GetType()
Case GetType(Windows.Forms.GroupBox)
Lock_Record_Controls_Recursive(state, DirectCast(Control, GroupBox).Controls)
Case GetType(Windows.Forms.TextBox)
Dim txt As TextBox = CType(Control, TextBox)
txt.ReadOnly = state
Case GetType(Windows.Forms.CheckBox)
Dim chk As CheckBox = CType(Control, CheckBox)
If state = True Then
chk.Enabled = False
Else
chk.Enabled = True
End If
Case GetType(Windows.Forms.RadioButton)
Dim rb As RadioButton = CType(Control, RadioButton)
If state = True Then
rb.Enabled = False
Else
rb.Enabled = True
End If
Case GetType(Windows.Forms.ComboBox)
Dim cbobx As System.Windows.Forms.ComboBox = CType(Control, System.Windows.Forms.ComboBox)
If state = True Then
cbobx.Enabled = False
Else
cbobx.Enabled = True
End If
Case GetType(DevExpress.XtraEditors.DateEdit)
Dim dtp As DevExpress.XtraEditors.DateEdit = CType(Control, DevExpress.XtraEditors.DateEdit)
If state = True Then
dtp.Enabled = False
Else
dtp.Enabled = True
End If
Case GetType(DevExpress.XtraEditors.CheckedListBoxControl)
Dim chlb As DevExpress.XtraEditors.CheckedListBoxControl = CType(Control, DevExpress.XtraEditors.CheckedListBoxControl)
If state = True Then
chlb.Enabled = False
Else
chlb.Enabled = True
End If
Case GetType(DevExpress.XtraEditors.ListBoxControl)
Dim lb As DevExpress.XtraEditors.ListBoxControl = CType(Control, DevExpress.XtraEditors.ListBoxControl)
If state = True Then
lb.Enabled = False
Else
lb.Enabled = True
End If
Case GetType(Windows.Forms.Button)
Dim btn As Button = CType(Control, Button)
If state = True Then
btn.Enabled = False
Else
btn.Enabled = True
End If
End Select
Next
End Sub
Private Sub Check_Record_Changed()
If EDIT_STATE <> EditState.None Then
Update_Status_Label(False, "")
@@ -2034,7 +2069,7 @@ Public Class frmForm_Constructor_Main_2
If TCDetails.SelectedTabPage.Text.StartsWith("Detail") Or TCDetails.SelectedTabPage.Text.StartsWith("Kopf") Then
'Daten zu Record in jedem Fall laden
'ClassControlValues.LoadControlValues(SELECTED_RECORD_ID, CURRENT_FORM_ID, CtrlBuilder.AllControls)
ClassControlValues.LoadControlValuesNeu(SELECTED_RECORD_ID, CURRENT_FORM_ID, CtrlBuilder.AllControls)
ClassControlValues.LoadControlValuesNeu(SELECTED_RECORD_ID, CURRENT_PARENTID, CURRENT_FORM_ID, CtrlBuilder.AllControls)
End If
If TCDetails.SelectedTabPage.Text.ToLower.StartsWith("wieder") Then
tsButtonEditMode.Enabled = False

View File

@@ -409,7 +409,7 @@ Public Class frmFormInput
' SelectedFormID = RowView.Item(1)
RefreshRecordByID(SelectedRecordID)
ClassControlValues.LoadControlValuesNeu(SelectedRecordID, thisformid, pnlView.Controls)
ClassControlValues.LoadControlValuesNeu(SelectedRecordID, CURRENT_PARENTID, thisformid, pnlView.Controls)
End If
load_Documents()
End If

View File

@@ -58,7 +58,6 @@ Partial Class frmMain
Me.pageHome = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.RibbonPageGroup2 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.groupQuickAccess = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.groupQuickAccessDemo = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.pageForms = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.pageAdmin = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.RibbonPageGroupProgram = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
@@ -341,7 +340,7 @@ Partial Class frmMain
'
'pageHome
'
Me.pageHome.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup2, Me.groupQuickAccess, Me.groupQuickAccessDemo})
Me.pageHome.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup2, Me.groupQuickAccess})
Me.pageHome.Image = Global.DD_Record_Organiser.My.Resources.Resources.HomeHS
Me.pageHome.Name = "pageHome"
Me.pageHome.Text = "Home"
@@ -354,17 +353,10 @@ Partial Class frmMain
Me.RibbonPageGroup2.ShowCaptionButton = False
Me.RibbonPageGroup2.Text = "Kalender"
'
'groupQuickAccess
'
Me.groupQuickAccess.AllowTextClipping = False
Me.groupQuickAccess.Name = "groupQuickAccess"
Me.groupQuickAccess.Text = "Schnellstart"
Me.groupQuickAccess.Visible = False
'
'groupQuickAccessDemo
'
Me.groupQuickAccessDemo.Name = "groupQuickAccessDemo"
Me.groupQuickAccessDemo.Text = "Schnellstart "
Me.groupQuickAccess.Name = "groupQuickAccessDemo"
Me.groupQuickAccess.Text = "Schnellstart "
'
'pageForms
'
@@ -514,14 +506,13 @@ Partial Class frmMain
Friend WithEvents BarButtonItem12 As DevExpress.XtraBars.BarButtonItem
Friend WithEvents RibbonPageGroupTask As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents pageHome As DevExpress.XtraBars.Ribbon.RibbonPage
Friend WithEvents groupQuickAccess As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents BarButtonItem13 As DevExpress.XtraBars.BarButtonItem
Friend WithEvents BarButtonItem14 As DevExpress.XtraBars.BarButtonItem
Friend WithEvents RibbonPageGroup1 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents BarButtonItem15 As DevExpress.XtraBars.BarButtonItem
Friend WithEvents BarButtonItem16 As DevExpress.XtraBars.BarButtonItem
Friend WithEvents BarButtonItem17 As DevExpress.XtraBars.BarButtonItem
Friend WithEvents groupQuickAccessDemo As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents groupQuickAccess As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents TimerClose3Minutes As System.Windows.Forms.Timer
End Class

View File

@@ -24,6 +24,10 @@ Public Class frmMain
LabelMachine.Caption = My.Computer.Name
Load_Connection_Dep_Data()
'Wenn Argumente übergeben wurden, wird Formular geladen und zu record gesprungen
ClassJumpRecord.ParseArgs()
Catch ex As Exception
MsgBox("Error in Load Form:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
@@ -106,6 +110,8 @@ Public Class frmMain
Dim SQL As String = "SELECT * FROM TBPMO_MENU_FORM"
Dim dtRootMenu As DataTable = ClassDatabase.Return_Datatable(SQL)
pageForms.Groups.Clear()
If dtRootMenu.Rows.Count <> 0 Then
For Each row As DataRow In dtRootMenu.Rows
@@ -155,6 +161,41 @@ Public Class frmMain
Dim dt As DataTable = ClassDatabase.Return_Datatable(SQL2)
Dim image2 As Bitmap = LoadNoImage()
'Do While 0 < groupQuickAccess.ItemLinks.Count
' groupQuickAccess.ItemLinks.Remove(groupQuickAccess.ItemLinks(0))
'Loop
'If dt.Rows.Count <> 0 Then
' For Each row As DataRow In dt.Rows
' If Not IsDBNull(row.Item("MENU_IMG")) Then
' Dim bimg() As Byte = row.Item("MENU_IMG")
' Dim bitmap As Bitmap = ByteArrayToBitmap(bimg)
' image2 = bitmap
' End If
' Dim title As String = row.Item("FORM_TITLE")
' Dim index As Integer = row.Item("SEQUENCE_MENU")
' Dim tag As Integer = row.Item("GUID")
' Dim item As New BarButtonItem(ribbonMain.Manager, title)
' item.RibbonStyle = RibbonItemStyles.Large
' item.Caption = title
' item.Tag = tag
' item.Glyph = image2
' AddHandler item.ItemClick, AddressOf ToolbarButtonItemClick
' groupQuickAccess.ItemLinks.Add(item)
' Next
'End If
Do While 0 < groupQuickAccess.ItemLinks.Count
groupQuickAccess.ItemLinks.Remove(groupQuickAccess.ItemLinks(0))
Loop
If dt.Rows.Count <> 0 Then
For Each row As DataRow In dt.Rows
@@ -174,42 +215,14 @@ Public Class frmMain
item.Glyph = image2
AddHandler item.ItemClick, AddressOf ToolbarButtonItemClick
groupQuickAccess.ItemLinks.Add(item)
Next
End If
' TODO: NUR FÜR WINDREAM CON!!!
If dt.Rows.Count <> 0 Then
For Each row As DataRow In dt.Rows
If Not IsDBNull(row.Item("MENU_IMG")) Then
Dim bimg() As Byte = row.Item("MENU_IMG")
Dim bitmap As Bitmap = ByteArrayToBitmap(bimg)
image2 = bitmap
End If
Dim title As String = row.Item("FORM_TITLE")
Dim index As Integer = row.Item("SEQUENCE_MENU")
Dim tag As Integer = row.Item("GUID")
Dim item As New BarButtonItem(ribbonMain.Manager, title)
item.RibbonStyle = RibbonItemStyles.Large
item.Caption = title
item.Tag = tag
item.Glyph = image2
AddHandler item.ItemClick, AddressOf ToolbarButtonItemClickDemo
groupQuickAccessDemo.ItemLinks.Add(item)
Next
End If
' TODO: NUR FÜR WINDREAM CON!!!
End Sub
Private Sub BarButtonItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs)
Dim formId As Integer = Integer.Parse(e.Item.Tag)
@@ -218,16 +231,6 @@ Public Class frmMain
Cursor = Cursors.Default
End Sub
' TODO: NUR FÜR WINDREAM CON!!!
Private Sub ToolbarButtonItemClickDemo(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs)
Dim formId As Integer = Integer.Parse(e.Item.Tag)
Cursor = Cursors.WaitCursor
OpenFormConstructorDemo(formId)
Cursor = Cursors.Default
End Sub
' TODO: NUR FÜR WINDREAM CON!!!
Private Sub ToolbarButtonItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs)
Dim formId As Integer = Integer.Parse(e.Item.Tag)

View File

@@ -0,0 +1,466 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class frmScanFiles
Inherits System.Windows.Forms.Form
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Wird vom Windows Form-Designer benötigt.
Private components As System.ComponentModel.IContainer
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmScanFiles))
Me.ListView1 = New System.Windows.Forms.ListView()
Me.ColumnHeader2 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
Me.ImageList1 = New System.Windows.Forms.ImageList(Me.components)
Me.Panel1 = New System.Windows.Forms.Panel()
Me.PdfViewer1 = New DevExpress.XtraPdfViewer.PdfViewer()
Me.StatusStrip2 = New System.Windows.Forms.StatusStrip()
Me.pdfstatuslblPageNumber = New System.Windows.Forms.ToolStripStatusLabel()
Me.ToolStripDropDownButton1 = New System.Windows.Forms.ToolStripDropDownButton()
Me.RibbonControl1 = New DevExpress.XtraBars.Ribbon.RibbonControl()
Me.PdfFileOpenBarItem1 = New DevExpress.XtraPdfViewer.Bars.PdfFileOpenBarItem()
Me.PdfFileSaveAsBarItem1 = New DevExpress.XtraPdfViewer.Bars.PdfFileSaveAsBarItem()
Me.PdfFilePrintBarItem1 = New DevExpress.XtraPdfViewer.Bars.PdfFilePrintBarItem()
Me.PdfPreviousPageBarItem1 = New DevExpress.XtraPdfViewer.Bars.PdfPreviousPageBarItem()
Me.PdfNextPageBarItem1 = New DevExpress.XtraPdfViewer.Bars.PdfNextPageBarItem()
Me.PdfFindTextBarItem1 = New DevExpress.XtraPdfViewer.Bars.PdfFindTextBarItem()
Me.PdfZoomOutBarItem1 = New DevExpress.XtraPdfViewer.Bars.PdfZoomOutBarItem()
Me.PdfZoomInBarItem1 = New DevExpress.XtraPdfViewer.Bars.PdfZoomInBarItem()
Me.PdfExactZoomListBarSubItem1 = New DevExpress.XtraPdfViewer.Bars.PdfExactZoomListBarSubItem()
Me.PdfZoom10CheckItem1 = New DevExpress.XtraPdfViewer.Bars.PdfZoom10CheckItem()
Me.PdfZoom25CheckItem1 = New DevExpress.XtraPdfViewer.Bars.PdfZoom25CheckItem()
Me.PdfZoom50CheckItem1 = New DevExpress.XtraPdfViewer.Bars.PdfZoom50CheckItem()
Me.PdfZoom75CheckItem1 = New DevExpress.XtraPdfViewer.Bars.PdfZoom75CheckItem()
Me.PdfZoom100CheckItem1 = New DevExpress.XtraPdfViewer.Bars.PdfZoom100CheckItem()
Me.PdfZoom125CheckItem1 = New DevExpress.XtraPdfViewer.Bars.PdfZoom125CheckItem()
Me.PdfZoom150CheckItem1 = New DevExpress.XtraPdfViewer.Bars.PdfZoom150CheckItem()
Me.PdfZoom200CheckItem1 = New DevExpress.XtraPdfViewer.Bars.PdfZoom200CheckItem()
Me.PdfZoom400CheckItem1 = New DevExpress.XtraPdfViewer.Bars.PdfZoom400CheckItem()
Me.PdfZoom500CheckItem1 = New DevExpress.XtraPdfViewer.Bars.PdfZoom500CheckItem()
Me.PdfSetActualSizeZoomModeCheckItem1 = New DevExpress.XtraPdfViewer.Bars.PdfSetActualSizeZoomModeCheckItem()
Me.PdfSetPageLevelZoomModeCheckItem1 = New DevExpress.XtraPdfViewer.Bars.PdfSetPageLevelZoomModeCheckItem()
Me.PdfSetFitWidthZoomModeCheckItem1 = New DevExpress.XtraPdfViewer.Bars.PdfSetFitWidthZoomModeCheckItem()
Me.PdfSetFitVisibleZoomModeCheckItem1 = New DevExpress.XtraPdfViewer.Bars.PdfSetFitVisibleZoomModeCheckItem()
Me.PdfExportFormDataBarItem1 = New DevExpress.XtraPdfViewer.Bars.PdfExportFormDataBarItem()
Me.PdfImportFormDataBarItem1 = New DevExpress.XtraPdfViewer.Bars.PdfImportFormDataBarItem()
Me.PdfRibbonPage1 = New DevExpress.XtraPdfViewer.Bars.PdfRibbonPage()
Me.PdfFileRibbonPageGroup1 = New DevExpress.XtraPdfViewer.Bars.PdfFileRibbonPageGroup()
Me.PdfNavigationRibbonPageGroup1 = New DevExpress.XtraPdfViewer.Bars.PdfNavigationRibbonPageGroup()
Me.PdfZoomRibbonPageGroup1 = New DevExpress.XtraPdfViewer.Bars.PdfZoomRibbonPageGroup()
Me.PdfFormDataRibbonPage1 = New DevExpress.XtraPdfViewer.Bars.PdfFormDataRibbonPage()
Me.PdfFormDataBarPageGroup1 = New DevExpress.XtraPdfViewer.Bars.PdfFormDataBarPageGroup()
Me.btnrefresh = New System.Windows.Forms.Button()
Me.PdfBarController1 = New DevExpress.XtraPdfViewer.Bars.PdfBarController()
Me.PdfBarController2 = New DevExpress.XtraPdfViewer.Bars.PdfBarController()
Me.btndelete = New System.Windows.Forms.Button()
Me.ImageListBoxControl1 = New DevExpress.XtraEditors.ImageListBoxControl()
Me.Panel1.SuspendLayout()
Me.StatusStrip2.SuspendLayout()
CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.PdfBarController1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.PdfBarController2, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.ImageListBoxControl1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'ListView1
'
Me.ListView1.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.ColumnHeader2})
Me.ListView1.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.ListView1.FullRowSelect = True
Me.ListView1.GridLines = True
Me.ListView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable
Me.ListView1.LargeImageList = Me.ImageList1
Me.ListView1.Location = New System.Drawing.Point(12, 12)
Me.ListView1.MultiSelect = False
Me.ListView1.Name = "ListView1"
Me.ListView1.Size = New System.Drawing.Size(319, 209)
Me.ListView1.SmallImageList = Me.ImageList1
Me.ListView1.TabIndex = 0
Me.ListView1.UseCompatibleStateImageBehavior = False
Me.ListView1.View = System.Windows.Forms.View.Details
'
'ColumnHeader2
'
Me.ColumnHeader2.Text = "Datei - Drag and Drop fähig"
Me.ColumnHeader2.Width = 315
'
'ImageList1
'
Me.ImageList1.ImageStream = CType(resources.GetObject("ImageList1.ImageStream"), System.Windows.Forms.ImageListStreamer)
Me.ImageList1.TransparentColor = System.Drawing.Color.Transparent
Me.ImageList1.Images.SetKeyName(0, "doc_pdf.png")
'
'Panel1
'
Me.Panel1.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.Panel1.Controls.Add(Me.PdfViewer1)
Me.Panel1.Controls.Add(Me.StatusStrip2)
Me.Panel1.Controls.Add(Me.RibbonControl1)
Me.Panel1.Location = New System.Drawing.Point(337, 12)
Me.Panel1.Name = "Panel1"
Me.Panel1.Size = New System.Drawing.Size(591, 553)
Me.Panel1.TabIndex = 3
'
'PdfViewer1
'
Me.PdfViewer1.Dock = System.Windows.Forms.DockStyle.Fill
Me.PdfViewer1.Location = New System.Drawing.Point(0, 140)
Me.PdfViewer1.Name = "PdfViewer1"
Me.PdfViewer1.Size = New System.Drawing.Size(591, 391)
Me.PdfViewer1.TabIndex = 5
'
'StatusStrip2
'
Me.StatusStrip2.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.pdfstatuslblPageNumber, Me.ToolStripDropDownButton1})
Me.StatusStrip2.Location = New System.Drawing.Point(0, 531)
Me.StatusStrip2.Name = "StatusStrip2"
Me.StatusStrip2.Size = New System.Drawing.Size(591, 22)
Me.StatusStrip2.TabIndex = 3
Me.StatusStrip2.Text = "StatusStrip2"
'
'pdfstatuslblPageNumber
'
Me.pdfstatuslblPageNumber.Font = New System.Drawing.Font("Segoe UI Semibold", 9.0!, CType((System.Drawing.FontStyle.Bold Or System.Drawing.FontStyle.Italic), System.Drawing.FontStyle), System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.pdfstatuslblPageNumber.Image = Global.DD_Record_Organiser.My.Resources.Resources.page_red
Me.pdfstatuslblPageNumber.Name = "pdfstatuslblPageNumber"
Me.pdfstatuslblPageNumber.Size = New System.Drawing.Size(50, 17)
Me.pdfstatuslblPageNumber.Text = "Page"
'
'ToolStripDropDownButton1
'
Me.ToolStripDropDownButton1.Image = Global.DD_Record_Organiser.My.Resources.Resources.magifier_zoom_out
Me.ToolStripDropDownButton1.ImageTransparentColor = System.Drawing.Color.Magenta
Me.ToolStripDropDownButton1.Name = "ToolStripDropDownButton1"
Me.ToolStripDropDownButton1.Size = New System.Drawing.Size(153, 20)
Me.ToolStripDropDownButton1.Text = "Seitenansicht Minimal"
'
'RibbonControl1
'
Me.RibbonControl1.ExpandCollapseItem.Id = 0
Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.PdfFileOpenBarItem1, Me.PdfFileSaveAsBarItem1, Me.PdfFilePrintBarItem1, Me.PdfPreviousPageBarItem1, Me.PdfNextPageBarItem1, Me.PdfFindTextBarItem1, Me.PdfZoomOutBarItem1, Me.PdfZoomInBarItem1, Me.PdfExactZoomListBarSubItem1, Me.PdfZoom10CheckItem1, Me.PdfZoom25CheckItem1, Me.PdfZoom50CheckItem1, Me.PdfZoom75CheckItem1, Me.PdfZoom100CheckItem1, Me.PdfZoom125CheckItem1, Me.PdfZoom150CheckItem1, Me.PdfZoom200CheckItem1, Me.PdfZoom400CheckItem1, Me.PdfZoom500CheckItem1, Me.PdfSetActualSizeZoomModeCheckItem1, Me.PdfSetPageLevelZoomModeCheckItem1, Me.PdfSetFitWidthZoomModeCheckItem1, Me.PdfSetFitVisibleZoomModeCheckItem1, Me.PdfExportFormDataBarItem1, Me.PdfImportFormDataBarItem1})
Me.RibbonControl1.Location = New System.Drawing.Point(0, 0)
Me.RibbonControl1.MaxItemId = 26
Me.RibbonControl1.Name = "RibbonControl1"
Me.RibbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.PdfRibbonPage1, Me.PdfFormDataRibbonPage1})
Me.RibbonControl1.RibbonStyle = DevExpress.XtraBars.Ribbon.RibbonControlStyle.Office2010
Me.RibbonControl1.Size = New System.Drawing.Size(591, 140)
Me.RibbonControl1.ToolbarLocation = DevExpress.XtraBars.Ribbon.RibbonQuickAccessToolbarLocation.Above
'
'PdfFileOpenBarItem1
'
Me.PdfFileOpenBarItem1.Id = 1
Me.PdfFileOpenBarItem1.ItemShortcut = New DevExpress.XtraBars.BarShortcut((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.O))
Me.PdfFileOpenBarItem1.Name = "PdfFileOpenBarItem1"
'
'PdfFileSaveAsBarItem1
'
Me.PdfFileSaveAsBarItem1.Id = 2
Me.PdfFileSaveAsBarItem1.ItemShortcut = New DevExpress.XtraBars.BarShortcut((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.S))
Me.PdfFileSaveAsBarItem1.Name = "PdfFileSaveAsBarItem1"
'
'PdfFilePrintBarItem1
'
Me.PdfFilePrintBarItem1.Id = 3
Me.PdfFilePrintBarItem1.ItemShortcut = New DevExpress.XtraBars.BarShortcut((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.P))
Me.PdfFilePrintBarItem1.Name = "PdfFilePrintBarItem1"
'
'PdfPreviousPageBarItem1
'
Me.PdfPreviousPageBarItem1.Id = 4
Me.PdfPreviousPageBarItem1.Name = "PdfPreviousPageBarItem1"
'
'PdfNextPageBarItem1
'
Me.PdfNextPageBarItem1.Id = 5
Me.PdfNextPageBarItem1.Name = "PdfNextPageBarItem1"
'
'PdfFindTextBarItem1
'
Me.PdfFindTextBarItem1.Id = 6
Me.PdfFindTextBarItem1.ItemShortcut = New DevExpress.XtraBars.BarShortcut((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.F))
Me.PdfFindTextBarItem1.Name = "PdfFindTextBarItem1"
'
'PdfZoomOutBarItem1
'
Me.PdfZoomOutBarItem1.Id = 7
Me.PdfZoomOutBarItem1.Name = "PdfZoomOutBarItem1"
'
'PdfZoomInBarItem1
'
Me.PdfZoomInBarItem1.Id = 8
Me.PdfZoomInBarItem1.Name = "PdfZoomInBarItem1"
'
'PdfExactZoomListBarSubItem1
'
Me.PdfExactZoomListBarSubItem1.Id = 9
Me.PdfExactZoomListBarSubItem1.LinksPersistInfo.AddRange(New DevExpress.XtraBars.LinkPersistInfo() {New DevExpress.XtraBars.LinkPersistInfo(Me.PdfZoom10CheckItem1, True), New DevExpress.XtraBars.LinkPersistInfo(Me.PdfZoom25CheckItem1), New DevExpress.XtraBars.LinkPersistInfo(Me.PdfZoom50CheckItem1), New DevExpress.XtraBars.LinkPersistInfo(Me.PdfZoom75CheckItem1), New DevExpress.XtraBars.LinkPersistInfo(Me.PdfZoom100CheckItem1), New DevExpress.XtraBars.LinkPersistInfo(Me.PdfZoom125CheckItem1), New DevExpress.XtraBars.LinkPersistInfo(Me.PdfZoom150CheckItem1), New DevExpress.XtraBars.LinkPersistInfo(Me.PdfZoom200CheckItem1), New DevExpress.XtraBars.LinkPersistInfo(Me.PdfZoom400CheckItem1), New DevExpress.XtraBars.LinkPersistInfo(Me.PdfZoom500CheckItem1), New DevExpress.XtraBars.LinkPersistInfo(Me.PdfSetActualSizeZoomModeCheckItem1, True), New DevExpress.XtraBars.LinkPersistInfo(Me.PdfSetPageLevelZoomModeCheckItem1), New DevExpress.XtraBars.LinkPersistInfo(Me.PdfSetFitWidthZoomModeCheckItem1), New DevExpress.XtraBars.LinkPersistInfo(Me.PdfSetFitVisibleZoomModeCheckItem1)})
Me.PdfExactZoomListBarSubItem1.Name = "PdfExactZoomListBarSubItem1"
Me.PdfExactZoomListBarSubItem1.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionInMenu
'
'PdfZoom10CheckItem1
'
Me.PdfZoom10CheckItem1.Id = 10
Me.PdfZoom10CheckItem1.Name = "PdfZoom10CheckItem1"
'
'PdfZoom25CheckItem1
'
Me.PdfZoom25CheckItem1.Id = 11
Me.PdfZoom25CheckItem1.Name = "PdfZoom25CheckItem1"
'
'PdfZoom50CheckItem1
'
Me.PdfZoom50CheckItem1.Id = 12
Me.PdfZoom50CheckItem1.Name = "PdfZoom50CheckItem1"
'
'PdfZoom75CheckItem1
'
Me.PdfZoom75CheckItem1.Id = 13
Me.PdfZoom75CheckItem1.Name = "PdfZoom75CheckItem1"
'
'PdfZoom100CheckItem1
'
Me.PdfZoom100CheckItem1.Id = 14
Me.PdfZoom100CheckItem1.Name = "PdfZoom100CheckItem1"
'
'PdfZoom125CheckItem1
'
Me.PdfZoom125CheckItem1.Id = 15
Me.PdfZoom125CheckItem1.Name = "PdfZoom125CheckItem1"
'
'PdfZoom150CheckItem1
'
Me.PdfZoom150CheckItem1.Id = 16
Me.PdfZoom150CheckItem1.Name = "PdfZoom150CheckItem1"
'
'PdfZoom200CheckItem1
'
Me.PdfZoom200CheckItem1.Id = 17
Me.PdfZoom200CheckItem1.Name = "PdfZoom200CheckItem1"
'
'PdfZoom400CheckItem1
'
Me.PdfZoom400CheckItem1.Id = 18
Me.PdfZoom400CheckItem1.Name = "PdfZoom400CheckItem1"
'
'PdfZoom500CheckItem1
'
Me.PdfZoom500CheckItem1.Id = 19
Me.PdfZoom500CheckItem1.Name = "PdfZoom500CheckItem1"
'
'PdfSetActualSizeZoomModeCheckItem1
'
Me.PdfSetActualSizeZoomModeCheckItem1.Id = 20
Me.PdfSetActualSizeZoomModeCheckItem1.Name = "PdfSetActualSizeZoomModeCheckItem1"
'
'PdfSetPageLevelZoomModeCheckItem1
'
Me.PdfSetPageLevelZoomModeCheckItem1.Id = 21
Me.PdfSetPageLevelZoomModeCheckItem1.Name = "PdfSetPageLevelZoomModeCheckItem1"
'
'PdfSetFitWidthZoomModeCheckItem1
'
Me.PdfSetFitWidthZoomModeCheckItem1.Id = 22
Me.PdfSetFitWidthZoomModeCheckItem1.Name = "PdfSetFitWidthZoomModeCheckItem1"
'
'PdfSetFitVisibleZoomModeCheckItem1
'
Me.PdfSetFitVisibleZoomModeCheckItem1.Id = 23
Me.PdfSetFitVisibleZoomModeCheckItem1.Name = "PdfSetFitVisibleZoomModeCheckItem1"
'
'PdfExportFormDataBarItem1
'
Me.PdfExportFormDataBarItem1.Id = 24
Me.PdfExportFormDataBarItem1.Name = "PdfExportFormDataBarItem1"
'
'PdfImportFormDataBarItem1
'
Me.PdfImportFormDataBarItem1.Id = 25
Me.PdfImportFormDataBarItem1.Name = "PdfImportFormDataBarItem1"
'
'PdfRibbonPage1
'
Me.PdfRibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.PdfFileRibbonPageGroup1, Me.PdfNavigationRibbonPageGroup1, Me.PdfZoomRibbonPageGroup1})
Me.PdfRibbonPage1.Name = "PdfRibbonPage1"
'
'PdfFileRibbonPageGroup1
'
Me.PdfFileRibbonPageGroup1.ItemLinks.Add(Me.PdfFileOpenBarItem1)
Me.PdfFileRibbonPageGroup1.ItemLinks.Add(Me.PdfFileSaveAsBarItem1)
Me.PdfFileRibbonPageGroup1.ItemLinks.Add(Me.PdfFilePrintBarItem1)
Me.PdfFileRibbonPageGroup1.Name = "PdfFileRibbonPageGroup1"
'
'PdfNavigationRibbonPageGroup1
'
Me.PdfNavigationRibbonPageGroup1.ItemLinks.Add(Me.PdfPreviousPageBarItem1)
Me.PdfNavigationRibbonPageGroup1.ItemLinks.Add(Me.PdfNextPageBarItem1)
Me.PdfNavigationRibbonPageGroup1.ItemLinks.Add(Me.PdfFindTextBarItem1)
Me.PdfNavigationRibbonPageGroup1.Name = "PdfNavigationRibbonPageGroup1"
'
'PdfZoomRibbonPageGroup1
'
Me.PdfZoomRibbonPageGroup1.ItemLinks.Add(Me.PdfZoomOutBarItem1)
Me.PdfZoomRibbonPageGroup1.ItemLinks.Add(Me.PdfZoomInBarItem1)
Me.PdfZoomRibbonPageGroup1.ItemLinks.Add(Me.PdfExactZoomListBarSubItem1)
Me.PdfZoomRibbonPageGroup1.Name = "PdfZoomRibbonPageGroup1"
'
'PdfFormDataRibbonPage1
'
Me.PdfFormDataRibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.PdfFormDataBarPageGroup1})
Me.PdfFormDataRibbonPage1.Name = "PdfFormDataRibbonPage1"
Me.PdfFormDataRibbonPage1.Visible = False
'
'PdfFormDataBarPageGroup1
'
Me.PdfFormDataBarPageGroup1.ItemLinks.Add(Me.PdfExportFormDataBarItem1)
Me.PdfFormDataBarPageGroup1.ItemLinks.Add(Me.PdfImportFormDataBarItem1)
Me.PdfFormDataBarPageGroup1.Name = "PdfFormDataBarPageGroup1"
'
'btnrefresh
'
Me.btnrefresh.Image = Global.DD_Record_Organiser.My.Resources.Resources.refresh_16xLG
Me.btnrefresh.ImageAlign = System.Drawing.ContentAlignment.MiddleRight
Me.btnrefresh.Location = New System.Drawing.Point(12, 227)
Me.btnrefresh.Name = "btnrefresh"
Me.btnrefresh.Size = New System.Drawing.Size(98, 23)
Me.btnrefresh.TabIndex = 1
Me.btnrefresh.Text = "Aktualisieren"
Me.btnrefresh.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
Me.btnrefresh.UseVisualStyleBackColor = True
'
'PdfBarController2
'
Me.PdfBarController2.BarItems.Add(Me.PdfFileOpenBarItem1)
Me.PdfBarController2.BarItems.Add(Me.PdfFileSaveAsBarItem1)
Me.PdfBarController2.BarItems.Add(Me.PdfFilePrintBarItem1)
Me.PdfBarController2.BarItems.Add(Me.PdfPreviousPageBarItem1)
Me.PdfBarController2.BarItems.Add(Me.PdfNextPageBarItem1)
Me.PdfBarController2.BarItems.Add(Me.PdfFindTextBarItem1)
Me.PdfBarController2.BarItems.Add(Me.PdfZoomOutBarItem1)
Me.PdfBarController2.BarItems.Add(Me.PdfZoomInBarItem1)
Me.PdfBarController2.BarItems.Add(Me.PdfExactZoomListBarSubItem1)
Me.PdfBarController2.BarItems.Add(Me.PdfZoom10CheckItem1)
Me.PdfBarController2.BarItems.Add(Me.PdfZoom25CheckItem1)
Me.PdfBarController2.BarItems.Add(Me.PdfZoom50CheckItem1)
Me.PdfBarController2.BarItems.Add(Me.PdfZoom75CheckItem1)
Me.PdfBarController2.BarItems.Add(Me.PdfZoom100CheckItem1)
Me.PdfBarController2.BarItems.Add(Me.PdfZoom125CheckItem1)
Me.PdfBarController2.BarItems.Add(Me.PdfZoom150CheckItem1)
Me.PdfBarController2.BarItems.Add(Me.PdfZoom200CheckItem1)
Me.PdfBarController2.BarItems.Add(Me.PdfZoom400CheckItem1)
Me.PdfBarController2.BarItems.Add(Me.PdfZoom500CheckItem1)
Me.PdfBarController2.BarItems.Add(Me.PdfSetActualSizeZoomModeCheckItem1)
Me.PdfBarController2.BarItems.Add(Me.PdfSetPageLevelZoomModeCheckItem1)
Me.PdfBarController2.BarItems.Add(Me.PdfSetFitWidthZoomModeCheckItem1)
Me.PdfBarController2.BarItems.Add(Me.PdfSetFitVisibleZoomModeCheckItem1)
Me.PdfBarController2.BarItems.Add(Me.PdfExportFormDataBarItem1)
Me.PdfBarController2.BarItems.Add(Me.PdfImportFormDataBarItem1)
Me.PdfBarController2.Control = Me.PdfViewer1
'
'btndelete
'
Me.btndelete.Image = Global.DD_Record_Organiser.My.Resources.Resources.delete
Me.btndelete.ImageAlign = System.Drawing.ContentAlignment.MiddleRight
Me.btndelete.Location = New System.Drawing.Point(116, 227)
Me.btndelete.Name = "btndelete"
Me.btndelete.Size = New System.Drawing.Size(75, 23)
Me.btndelete.TabIndex = 4
Me.btndelete.Text = "Löschen"
Me.btndelete.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
Me.btndelete.UseVisualStyleBackColor = True
'
'ImageListBoxControl1
'
Me.ImageListBoxControl1.Location = New System.Drawing.Point(26, 269)
Me.ImageListBoxControl1.Name = "ImageListBoxControl1"
Me.ImageListBoxControl1.Size = New System.Drawing.Size(293, 194)
Me.ImageListBoxControl1.TabIndex = 5
'
'frmScanFiles
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(934, 577)
Me.Controls.Add(Me.ImageListBoxControl1)
Me.Controls.Add(Me.btndelete)
Me.Controls.Add(Me.Panel1)
Me.Controls.Add(Me.btnrefresh)
Me.Controls.Add(Me.ListView1)
Me.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.Name = "frmScanFiles"
Me.Text = "Inbox - Scanned Files"
Me.TopMost = True
Me.Panel1.ResumeLayout(False)
Me.Panel1.PerformLayout()
Me.StatusStrip2.ResumeLayout(False)
Me.StatusStrip2.PerformLayout()
CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.PdfBarController1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.PdfBarController2, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.ImageListBoxControl1, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
End Sub
Friend WithEvents ListView1 As System.Windows.Forms.ListView
Friend WithEvents ColumnHeader2 As System.Windows.Forms.ColumnHeader
Friend WithEvents ImageList1 As System.Windows.Forms.ImageList
Friend WithEvents btnrefresh As System.Windows.Forms.Button
Friend WithEvents Panel1 As System.Windows.Forms.Panel
Friend WithEvents StatusStrip2 As System.Windows.Forms.StatusStrip
Friend WithEvents pdfstatuslblPageNumber As System.Windows.Forms.ToolStripStatusLabel
Friend WithEvents ToolStripDropDownButton1 As System.Windows.Forms.ToolStripDropDownButton
Friend WithEvents PdfBarController1 As DevExpress.XtraPdfViewer.Bars.PdfBarController
Friend WithEvents PdfViewer1 As DevExpress.XtraPdfViewer.PdfViewer
Friend WithEvents RibbonControl1 As DevExpress.XtraBars.Ribbon.RibbonControl
Friend WithEvents PdfFileOpenBarItem1 As DevExpress.XtraPdfViewer.Bars.PdfFileOpenBarItem
Friend WithEvents PdfFileSaveAsBarItem1 As DevExpress.XtraPdfViewer.Bars.PdfFileSaveAsBarItem
Friend WithEvents PdfFilePrintBarItem1 As DevExpress.XtraPdfViewer.Bars.PdfFilePrintBarItem
Friend WithEvents PdfPreviousPageBarItem1 As DevExpress.XtraPdfViewer.Bars.PdfPreviousPageBarItem
Friend WithEvents PdfNextPageBarItem1 As DevExpress.XtraPdfViewer.Bars.PdfNextPageBarItem
Friend WithEvents PdfFindTextBarItem1 As DevExpress.XtraPdfViewer.Bars.PdfFindTextBarItem
Friend WithEvents PdfZoomOutBarItem1 As DevExpress.XtraPdfViewer.Bars.PdfZoomOutBarItem
Friend WithEvents PdfZoomInBarItem1 As DevExpress.XtraPdfViewer.Bars.PdfZoomInBarItem
Friend WithEvents PdfExactZoomListBarSubItem1 As DevExpress.XtraPdfViewer.Bars.PdfExactZoomListBarSubItem
Friend WithEvents PdfZoom10CheckItem1 As DevExpress.XtraPdfViewer.Bars.PdfZoom10CheckItem
Friend WithEvents PdfZoom25CheckItem1 As DevExpress.XtraPdfViewer.Bars.PdfZoom25CheckItem
Friend WithEvents PdfZoom50CheckItem1 As DevExpress.XtraPdfViewer.Bars.PdfZoom50CheckItem
Friend WithEvents PdfZoom75CheckItem1 As DevExpress.XtraPdfViewer.Bars.PdfZoom75CheckItem
Friend WithEvents PdfZoom100CheckItem1 As DevExpress.XtraPdfViewer.Bars.PdfZoom100CheckItem
Friend WithEvents PdfZoom125CheckItem1 As DevExpress.XtraPdfViewer.Bars.PdfZoom125CheckItem
Friend WithEvents PdfZoom150CheckItem1 As DevExpress.XtraPdfViewer.Bars.PdfZoom150CheckItem
Friend WithEvents PdfZoom200CheckItem1 As DevExpress.XtraPdfViewer.Bars.PdfZoom200CheckItem
Friend WithEvents PdfZoom400CheckItem1 As DevExpress.XtraPdfViewer.Bars.PdfZoom400CheckItem
Friend WithEvents PdfZoom500CheckItem1 As DevExpress.XtraPdfViewer.Bars.PdfZoom500CheckItem
Friend WithEvents PdfSetActualSizeZoomModeCheckItem1 As DevExpress.XtraPdfViewer.Bars.PdfSetActualSizeZoomModeCheckItem
Friend WithEvents PdfSetPageLevelZoomModeCheckItem1 As DevExpress.XtraPdfViewer.Bars.PdfSetPageLevelZoomModeCheckItem
Friend WithEvents PdfSetFitWidthZoomModeCheckItem1 As DevExpress.XtraPdfViewer.Bars.PdfSetFitWidthZoomModeCheckItem
Friend WithEvents PdfSetFitVisibleZoomModeCheckItem1 As DevExpress.XtraPdfViewer.Bars.PdfSetFitVisibleZoomModeCheckItem
Friend WithEvents PdfExportFormDataBarItem1 As DevExpress.XtraPdfViewer.Bars.PdfExportFormDataBarItem
Friend WithEvents PdfImportFormDataBarItem1 As DevExpress.XtraPdfViewer.Bars.PdfImportFormDataBarItem
Friend WithEvents PdfRibbonPage1 As DevExpress.XtraPdfViewer.Bars.PdfRibbonPage
Friend WithEvents PdfFileRibbonPageGroup1 As DevExpress.XtraPdfViewer.Bars.PdfFileRibbonPageGroup
Friend WithEvents PdfNavigationRibbonPageGroup1 As DevExpress.XtraPdfViewer.Bars.PdfNavigationRibbonPageGroup
Friend WithEvents PdfZoomRibbonPageGroup1 As DevExpress.XtraPdfViewer.Bars.PdfZoomRibbonPageGroup
Friend WithEvents PdfFormDataRibbonPage1 As DevExpress.XtraPdfViewer.Bars.PdfFormDataRibbonPage
Friend WithEvents PdfFormDataBarPageGroup1 As DevExpress.XtraPdfViewer.Bars.PdfFormDataBarPageGroup
Friend WithEvents PdfBarController2 As DevExpress.XtraPdfViewer.Bars.PdfBarController
Friend WithEvents btndelete As System.Windows.Forms.Button
Friend WithEvents ImageListBoxControl1 As DevExpress.XtraEditors.ImageListBoxControl
End Class

View File

@@ -0,0 +1,623 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="ImageList1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<data name="ImageList1.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADm
BwAAAk1TRnQBSQFMAwEBAAGQAQABkAEAARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA
AUADAAEQAwABAQEAAQgGAAEEGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA
AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA
AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm
AwABmQMAAcwCAAEzAwACMwIAATMBZgIAATMBmQIAATMBzAIAATMB/wIAAWYDAAFmATMCAAJmAgABZgGZ
AgABZgHMAgABZgH/AgABmQMAAZkBMwIAAZkBZgIAApkCAAGZAcwCAAGZAf8CAAHMAwABzAEzAgABzAFm
AgABzAGZAgACzAIAAcwB/wIAAf8BZgIAAf8BmQIAAf8BzAEAATMB/wIAAf8BAAEzAQABMwEAAWYBAAEz
AQABmQEAATMBAAHMAQABMwEAAf8BAAH/ATMCAAMzAQACMwFmAQACMwGZAQACMwHMAQACMwH/AQABMwFm
AgABMwFmATMBAAEzAmYBAAEzAWYBmQEAATMBZgHMAQABMwFmAf8BAAEzAZkCAAEzAZkBMwEAATMBmQFm
AQABMwKZAQABMwGZAcwBAAEzAZkB/wEAATMBzAIAATMBzAEzAQABMwHMAWYBAAEzAcwBmQEAATMCzAEA
ATMBzAH/AQABMwH/ATMBAAEzAf8BZgEAATMB/wGZAQABMwH/AcwBAAEzAv8BAAFmAwABZgEAATMBAAFm
AQABZgEAAWYBAAGZAQABZgEAAcwBAAFmAQAB/wEAAWYBMwIAAWYCMwEAAWYBMwFmAQABZgEzAZkBAAFm
ATMBzAEAAWYBMwH/AQACZgIAAmYBMwEAA2YBAAJmAZkBAAJmAcwBAAFmAZkCAAFmAZkBMwEAAWYBmQFm
AQABZgKZAQABZgGZAcwBAAFmAZkB/wEAAWYBzAIAAWYBzAEzAQABZgHMAZkBAAFmAswBAAFmAcwB/wEA
AWYB/wIAAWYB/wEzAQABZgH/AZkBAAFmAf8BzAEAAcwBAAH/AQAB/wEAAcwBAAKZAgABmQEzAZkBAAGZ
AQABmQEAAZkBAAHMAQABmQMAAZkCMwEAAZkBAAFmAQABmQEzAcwBAAGZAQAB/wEAAZkBZgIAAZkBZgEz
AQABmQEzAWYBAAGZAWYBmQEAAZkBZgHMAQABmQEzAf8BAAKZATMBAAKZAWYBAAOZAQACmQHMAQACmQH/
AQABmQHMAgABmQHMATMBAAFmAcwBZgEAAZkBzAGZAQABmQLMAQABmQHMAf8BAAGZAf8CAAGZAf8BMwEA
AZkBzAFmAQABmQH/AZkBAAGZAf8BzAEAAZkC/wEAAcwDAAGZAQABMwEAAcwBAAFmAQABzAEAAZkBAAHM
AQABzAEAAZkBMwIAAcwCMwEAAcwBMwFmAQABzAEzAZkBAAHMATMBzAEAAcwBMwH/AQABzAFmAgABzAFm
ATMBAAGZAmYBAAHMAWYBmQEAAcwBZgHMAQABmQFmAf8BAAHMAZkCAAHMAZkBMwEAAcwBmQFmAQABzAKZ
AQABzAGZAcwBAAHMAZkB/wEAAswCAALMATMBAALMAWYBAALMAZkBAAPMAQACzAH/AQABzAH/AgABzAH/
ATMBAAGZAf8BZgEAAcwB/wGZAQABzAH/AcwBAAHMAv8BAAHMAQABMwEAAf8BAAFmAQAB/wEAAZkBAAHM
ATMCAAH/AjMBAAH/ATMBZgEAAf8BMwGZAQAB/wEzAcwBAAH/ATMB/wEAAf8BZgIAAf8BZgEzAQABzAJm
AQAB/wFmAZkBAAH/AWYBzAEAAcwBZgH/AQAB/wGZAgAB/wGZATMBAAH/AZkBZgEAAf8CmQEAAf8BmQHM
AQAB/wGZAf8BAAH/AcwCAAH/AcwBMwEAAf8BzAFmAQAB/wHMAZkBAAH/AswBAAH/AcwB/wEAAv8BMwEA
AcwB/wFmAQAC/wGZAQAC/wHMAQACZgH/AQABZgH/AWYBAAFmAv8BAAH/AmYBAAH/AWYB/wEAAv8BZgEA
ASEBAAGlAQADXwEAA3cBAAOGAQADlgEAA8sBAAOyAQAD1wEAA90BAAPjAQAD6gEAA/EBAAP4AQAB8AH7
Af8BAAGkAqABAAOAAwAB/wIAAf8DAAL/AQAB/wMAAf8BAAH/AQAC/wIAA/8DAAEHDBIBBzIAARIM/wES
MAAKIAP0AfMB/wHqMAAKIAH0A/MB/wHqMAACIAG9AW8GIATzAf8BbTAAAiABRgH0AZQBbwGUAb0CIATz
Af8BbTAAAyABFwGUAUYBvQEXAiAE8wH/AeswAAQgApQBFgMgBPMB/wHrMAAEIAFHAf8EIATzAf8B7DAA
BfkB/wT5A/MB8gH/AewwAAr5Bf8B7DAACvkB/wLyAfMB7QG8MgAB7QH/A/MD8gH/AfIB8wHtAfAzAAGS
Af8B8wXyAf8B8wGSAfA0AAGSCP8BkgHwNQAB8Aj3AfA0AAFCAU0BPgcAAT4DAAEoAwABQAMAARADAAEB
AQABAQUAAYAXAAP/AQABwAcAAcBXAAHAAQEGAAHAAQMGAAHAAQcGAAHAAQ8GAAs=
</value>
</data>
<metadata name="StatusStrip2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>1212, 173</value>
</metadata>
<metadata name="PdfBarController1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 212</value>
</metadata>
<metadata name="PdfBarController2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>165, 212</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABycnIOcHBwi4qKivKEhIT1ZGRkiG5ubhEAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZCQ
kF6EhITmubm5/MvLy/7Jycn/tbW1/4CAgO5ra2t4c3NzCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACfn58tkJCQwqqqqv3k5OT79vb2/e7v7/3U1NT8v7+//sHB
wf+qqqr/enp65Wpqamlzc3MFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAp6enDKCg
oIyioqL61tbW+/b29vz09fX/3N3e/8XDv//Z2tz/6err/c3Nzfy3t7f+uLi4/56env90dHTbdXV1WQAA
AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7u7tSpqam4sbGxvzz8/P79/f3/uTk5P/Ewb7/5djG///w
z//r2Lf/zMS2/9TW2f/j5eb9x8fH/LCwsP6wsLD/k5OT/3V1dc9ycnJKAAAAAAAAAAAAAAAAAAAAALu7
u6e8vLz96enp+/n5+f7r6+v/wcHD/9vX0f//+ej///DZ///szP//58D//+Oz/+fGmv/HtqX/0dPW/9/h
4/3BwcL8qKio/qenp/+Kior+dHR0wXBwcDoAAAAAAAAAAMXFxfz39/f9+vr6/8DAwP/MzMz////////+
9f//9eX//+/Y///qy///57///eCz//HMnP/mtIL/0pxt/7+jj//P0tT/2dze/bi4uf2hoaH+np6f/3h4
ePoAAAAAAAAAAMjIyEfExMSpy8vL9Nvb2//Ly8v/ysnJ/93Y0v//9uX///LZ///rzP//5b7//d+y//DJ
nP/js4P/1pxr/8qBTv+5ZzP/tYx0/9HU1f/W2dr9s7i5/YOHif8AAAAAAAAAAAAAAAAAAAAAv7+/DMXF
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
AP//wAH//4AD//8AB//+AA///AAf//gA///8H/////////////8oAAAAIAAAAEAAAAABACAAAAAAAIAQ
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAenp6Pm5ubrl7e3vya2tr2mhoaF5XV1cDAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAioqKG35+fqaFhYX9v7+//s/Pz//Gxsb/lZWV/21t
bdNycnJRAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQBoyMjHaEhITyq6ur/uPj4/nY2Nj7xMTE/sPD
w//FxcX/vr6+/46Ojv9ubm7Id3d3QwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCgoEaKiorXoKCg/tbW1vrx8fH68vLy/vPz
8//t7e3809PT+729vf69vb3/v7+//7a2tv+Hh4f+bGxsu3R0dDYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK+vrx6cnJysm5ub/sXFxfzv7+/58vLy/vLy
8v/y8vL/zs/R/9PU1f/w8fL/6urq/M7Ozvy4uLj9uLi4/7u7u/+srKz/goKC/WxsbK50dHQqAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK2trQWqqqp3n5+f87m5uf3m5ub69fX1/fPz
8//09PT/1NXW/7Syrv/l1sL/4tO5/7u2rv/MztD/6+zt/+bm5vzKysr7srKy/rKysv+1tbX/pKSk/3t7
e/xtbW2gcXFxIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCwsI+pqam07CwsP7b29v69fX1+/T0
9P/19fX/3Nzd/7Oxsf/c1Mf///Td///u0///68n//+rA/+rTr//At6n/yMvN/+fo6v/i4uL9xcXF/K2t
rf6srKz/rq6u/5ubm/92dnb3b29vkmpqahgAAAAAAAAAAAAAAAAAAAAAvr6+hbGxsf3Ozs778vLy+vb2
9v729vb/4uLi/7Kysv/T0Mz///zv///25P//79n//+zQ///px///5cD//+W2//rYp//jwJb/v62d/8XI
y//h5OX/3+Dg/MHBwfyoqKj9p6en/6qqqv+Tk5P/c3Nz829vb4RlZWUQAAAAAAAAAAC9vb378PDw+vn5
+f319fX/6Ojo/7a2tv/Pz8/////////99///9+z///Pi///v2f//7ND//+jH///lvv//4rb/99Sm/+3E
lf/ms4L/1aF0/7yhjP/Fx8n/3ODi/9vc3P29vb38oqKi/qKiov+kpKT/jo6O/21tbdYAAAAAAAAAAMnJ
yZ3Gxsb62tra//Dw8P/Y2Nj/tLS0/8jIyP/28/P////4///57f//9OL//+/Y///sz///6Mb//+W9//3i
tP/106X/7MKU/+Kyg//aoXL/0JBe/8R/Tv+2j3f/xMLC/9ja2//Y2Nj9ubm5/J2dnf6fn5//d3d38wAA
AAAAAAAAAAAAANXV1RPHx8dlwcHBvMTExPra2tr/5ubm/8LCwv+5ubf/0s3F//3x3v//89r//+zP///p
x///5r3//eGz//TSpf/rwZP/4rGB/9igcP/Qj1//xn1K/7tkLf+vXzH/tqqk/9LS0//b3N3/0NXW/aWr
r/16fHz9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMzMGMPDw2q+vr7AxMTE/NfX1//c3N3/vb/A/8G8
tf/g073//+rF///nvf//4rP/9dKi/+vAkf/ir3//2J5q/8uOX/+7k3j/wLSt/9DW2v/V29//wcnP/6qe
mP+aakv/ljoN/4AoEbkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLy8sbwcHBbb29
vcXCwsL80tPT/9HS1P+/vr7/y8Cw/+rTrv/40aD/6r6P/82rjP/Bs6f/yM3T/9Xc4v/Gz9b/saeg/6R1
T/+jTQ7/pTsA/6A5AP+MIwD9hRkATwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAMvLyx68vLxyurq6yb+/v/3Nzs//yczP/8G/vf/Dxsr/09nh/8vS2/+4rab/roFT/7Fe
Df+zTwD/r00A/6xLAP+nRAD/jygA/pIeAHUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTEIre4uners7zNwaqV/sakgP+3j1n/vnAP/8Ji
AP++YAD/uV0A/7dYAP+zVAD/rEsA/5EqAP+VIACIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOBqAGnNZQD70HcA/810
AP/JcAD/xWoA/8BlAP+8YAD/uVwA/7JTAP+ULQD/kiQAmgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALxeAAPldQCO1HMC/taE
AP/SfgD/zngA/8pzAP/GbgD/wmoA/79mAP+3WwD/lTAA/4smAKdaAAADAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/dwAM3HIAsdd9
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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4eHgfcnJyWG9v
b1pxcXEcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAg4ODKnh4
eLFycnL7iYmJ/oODg/5paWn2bm5ujnBwcBcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiI
iBGBgYGOdnZ2+JKSkv3MzMz9zc3N/83Nzf6/v7/+i4uL/mhoaPFubm6Dd3d3EQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACRkZEEiYmJZX19feiFhYX+srKy/szMzP3IyMj/xsbG/8XFxf/ExMT/x8fH/ri4uP6FhYX+aGho7G9v
b3h5eXkMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAJqamjyFhYXLhISE/qWlpf7Ozs786enp9u/v7/jZ2dn5xMTE/cPDw//Dw8P/wcHB/8HB
wf/ExMT+sbGx/n9/f/5paWnlb29vbWtrawgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAACdnZ0Yk5OToIiIiPybm5v+w8PD/uDg4Pfy8vL58PDw/+/v7//w8PD+7Ozs+9XV
1frAwMD9v7+//7+/v/+9vb3/vr6+/8DAwP6rq6v+enp6/mdnZ95xcXFidHR0BQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAsLCwBZubm26QkJDtl5eX/ru7u/7a2tr48PDw9/Ly8v7w8PD/7u7u/+/v
7//x8fH/7+/v/+7u7v7p6en809PT+r29vf27u7v/u7u7/7u7u/+6urr/vLy8/qSkpP53d3f+aWlp1nBw
cFdeXl4DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsrKw+l5eXz5WVlf6wsLD+1NTU+uzs7Pfz8/P98fHx/+/v
7//v7+//8/Pz/+jo6P+ztbb/w8TG/+vr7P/u7u7/7Ozs/+np6fvR0dH6urq6/Li4uP+3t7f/t7e3/7a2
tv+4uLj+nZ2d/nNzc/5paWnNeXl5TAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAu7u7Gaenp6Kbm5v8qamp/srKyvzo6Oj38/Pz+/Ly
8v/x8fH/8PDw//Ly8v/s7O3/tbW3/6OgnP/m18D/18q2/6Oinv+7vcD/5ebm/+vr6//p6en/5+fn+87O
zvu3t7f8tLS0/7S0tP+zs7P/tLS0/7S0tP6Wlpb+cHBw/m5ubsR2dnZCAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK2trQWysrJvoqKi7qWlpf/BwcH+4ODg+PPz
8/ny8vL/8vLy//Hx8f/z8/P/8PDw/7u7vP+dnJr/3tTE///02f//79H//+zM///sxv/fzrL/q6eg/7a4
vP/f4OH/6erq/+fn5//k5OT8zs7O+rOzs/2wsLD/sLCw/7CwsP+wsLD/sLCw/pCQkP5ubm79bm5uunZ2
djgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwsLCPaysrM+mpqb+ubm5/9nZ
2fnw8PD49PT0/vLy8v/y8vL/8/Pz//Pz8//CwsL/mZmX/9fQxv//+eX///Pc///v1v//7M///+nJ///o
w///57///+e5/+jQrP+yqp//s7a4/9na3P/m5+f/5OTk/+Li4vzJycn6sLCw/a2trf+srKz/rKys/62t
rf+qqqr+jIyM/mxsbPxvb2+vd3d3LgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL6+vg29vb2bra2t/LKy
sv/Pz8/77Ozs+PX19f3z8/P/8vLy//T09P/19fX/xsbH/5aWl//Oy8j///zw///36f//8+H///Da///u
1P//687//+nJ///nw///5b3//+S3///gsf/61qX/5MKa/7iqm/+xtLb/09XX/+Pk5P/i4uL/4eHh/MbG
xvqurq78qamp/6mpqf+oqKj/qamp/6ampv6Ghob+ampq+29vb6RxcXEmAAAAAAAAAAAAAAAAAAAAALS0
tJu0tLT+xsbG/ebm5vj29vb79PT0//Pz8//09PT/9vb2/83Nzf+VlZX/x8fG/////P///fX///js///0
5f//8uD///Da///t1P//687//+nI///nwv//5b3//+S3//vdr//106T/8MmZ/+2+jf/esYX/u6aT/7K0
tf/O0dP/4eLi/+Hh4f/e3t79xcXF+qurq/ympqb/paWl/6Wlpf+lpaX/oaGh/oKCgv5qamr4cXFxmW9v
bxsAAAAAAAAAALe3t+zf39/59/f3+vf39/709PT/8vLy//T09P/W1tb/mZmZ/8DAwP/////////////8
+P//+fH///br///05f//8t///+/Z///t0///687//+nI///nwv//5Lz//+K4//zesP/10qT/7seZ/+i8
jf/jsYL/3qd2/9Scbf+7nIb/s7Kz/8rN0P/d3t7/3t7e/9zc3P3ExMT6qKio/KKiov+ioqL/oaGh/6Ki
ov+bm5v+fHx8/mtra60AAAAAAAAAALu7u67Gxsb+2dnZ/u/v7/729vb+9PT0/+jo6P+Dg4P/ra2t/+zs
7P/////////////99///+vD///br///05f//8t///+/Z///t0///683//+nH///nwv//5Lz//uK2//rc
rv/00aP/7saY/+i7jf/isYH/26Z2/9aba//QkF7/yoRT/7qQdP+1r63/yM3Q/9nb2//b29z/2tra/cLC
wvujo6P8nZ2d/56env+enp7/lJSU/mtra8EAAAAAAAAAAM/PzwTJyclTxsbGp7m5ufHDw8P+2NjY/u3t
7f76+vr+29vb/6urq/+Xl5f/wMC///Pv6/////f///nt///15f//8d7//+/Y///t0///683//+nH///m
wf//5Lv//uK3//vbrf/00KL/7saX/+e7jP/hsIH/26V2/9Waav/Pj1//yIRU/8N4Rv+7azf/tH1d/7Wp
o//Gycv/1dbW/9nZ2f/Y2Nj9v7+/+6GhofycnJz/lZWV/29vb9EAAAAAAAAAAAAAAAAAAAAAAAAAANvb
2wzIyMhVxcXFqre3t/LAwMD+2NjY/u/v7/7z8/T+0NDQ/6Wmpv+hoJ7/z8vC//zw4v//9uP///La///u
0///68z//+jH///mwf//5Lv//uK1//ncrP/z0KH/7cWW/+e6i//hr4D/26R1/9SZav/Oj1//yINT/8F4
R/+7azf/tFoj/65fMv+zopn/vr+//9bW1v/W1tb/2NjZ/9PV1v2vs7X7lpqb/nR2duAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAANzc3AzExMRYwcHBrbW1tfTAwMD+1dXV/uzs7P7s7Oz+x8jI/6Ok
pf+uqqX/29HA///u0///7s///+rH///nwP//5Lv//uO2//narf/zz6H/7cSV/+e5iv/grn//2qN0/9SZ
af/PjVz/yIBN/799T/+3kHb/uK+s/8XLzv/S1NX/2dnZ/9PU1v/EyMv/rbS3/5uRjf+XZUv/iCsO/3hk
XZUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANDQ0A7Dw8NawMDAsbOz
s/a+vr7+09PT/unp6f7k5OX+wcLD/6Slpf+6sqn/5dW7///qwv//57v//+K1//rZq//yzqD/7MOV/+e4
iv/hrn3/3aNw/9KXav/Am37/tqqg/7/EyP/Q09X/29zd/9bY2f/IzM7/sLa8/5+Vj/+aakz/nkUP/580
AP+bMwD+hh4A/n8XADoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAANfX1w/ExMRbvr6+s7Gxsfe8vLz+0dHR/ubm5v7c3d7+vL2//6mnp//HvKn/79ew//7c
qv/1z5//8MSU/+e3iP/NrIz/tqmd/7m7v//LztH/3N3e/9ja3P/JzdH/tLm//6KYkv+gcU3/plEP/6k/
AP+lQAD/oz8A/585AP6MJwD+gRsAxIgAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM7OzhG+vr5fvLy8tbCwsPm7u7v+zs7O/uLi
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
Z//4qz3/9JkZ/+6HAP/nfQD/3XUA/9VuAP7MZQD80GIA4M9gAK7IWgB7yFcARcBRABUAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD/mwBY74UA+vCIAP/ogQD/4XkA/Od5AOPldQCy4HAAedlsAETsbgAVAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA/5QAJ/WFAFzzhQBE+4MAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD///////8AAP///////wAA///5////
AAD//+B///8AAP//gB///wAA//4AB///AAD//AAB//8AAP/wAAB//wAA/8AAAB//AAD/gAAAD/8AAP4A
AAAD/wAA+AAAAAD/AADwAAAAAD8AAMAAAAAADwAAgAAAAAADAACAAAAAAAEAAIAAAAAAAQAAwAAAAAAB
AAD4AAAAAAEAAP8AAAAAAQAA/+AAAAADAAD//AAAAAMAAP//gAAABwAA///wAAAPAAD///4AAB8AAP//
/4AAPwAA////AAB/AAD///4AAP8AAP///AAB/wAA///4AAH/AAD///AAA/8AAP//wAAH/wAA//+AAA//
AAD//wAAH/8AAP/+AAA//wAA//wAAH//AAD/+AAA//8AAP/gAAH//wAA/8AAA///AAD/gAAP//8AAP8A
AD///wAA/wAH////AAD/AP////8AAP/f/////wAA////////AAD///////8AAP///////wAA
</value>
</data>
</root>

View File

@@ -0,0 +1,144 @@
Imports System.IO
Public Class frmScanFiles
Dim DragID
Dim MouseIsDown As Boolean = False
Private Sub frmScanFiles_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
ClassWindowLocation.SaveFormLocationSize(Me, 9999, CURRENT_SCREEN_ID, Me.Name)
End Sub
Private Sub frmScanFiles_Load(sender As Object, e As EventArgs) Handles Me.Load
Load_Files()
ClassWindowLocation.LoadFormLocationSize(Me, 9999, CURRENT_SCREEN_ID, Me.Name)
End Sub
Sub Load_Files()
Try
Dim sql1 As String = String.Format("select * from TBPMO_FILES_USER where HANDLE_TYPE = 'SCAN' and WORKED = 0 AND UPPER(USER_WORK) = '{0}'", Environment.UserName)
Dim DT As DataTable = ClassDatabase.Return_Datatable(sql1, "Load ScanFiles")
If Not IsNothing(DT) Then
ListView1.Items.Clear()
Dim i = 0
For Each row As DataRow In DT.Rows
Dim extension = Path.GetExtension(row.Item("FILENAME2WORK").ToString)
Dim filename = row.Item("FILENAME_ONLY").ToString
Dim ID = row.Item("GUID").ToString
'We can only find associated exes by extension, so don't show any files that have no extension
If IsNothing(extension) Then
Else
If extension.Contains("pdf") Then
'Add the file to the ListView, with the executable path as the key to the ImageList's image
ListView1.Items.Add(filename, 0)
Else
ListView1.Items.Add(filename)
End If
ListView1.Items(i).Tag = ID
i += 1
End If
Next
If DT.Rows.Count = 0 Then
Me.Close()
End If
End If
Catch ex As Exception
MsgBox("unexpected Error in Load Scanfiles:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
Private Sub btnrefresh_Click(sender As Object, e As EventArgs) Handles btnrefresh.Click
Load_Files()
End Sub
Private Sub PdfViewer1_CurrentPageChanged(sender As Object, e As DevExpress.XtraPdfViewer.PdfCurrentPageChangedEventArgs) Handles PdfViewer1.CurrentPageChanged
PDF_Pagenumber()
End Sub
Sub PDF_Pagenumber()
Try
pdfstatuslblPageNumber.Text = "Page " & PdfViewer1.CurrentPageNumber & "/" & PdfViewer1.PageCount
Catch ex As Exception
End Try
End Sub
Private Sub ListView1_ItemSelectionChanged(sender As Object, e As ListViewItemSelectionChangedEventArgs) Handles ListView1.ItemSelectionChanged
If ListView1.SelectedItems.Count = 1 Then
Dim i = ListView1.FocusedItem
Dim i1 = i.Text
If Not IsNothing(i) Then
If i.Text.ToLower.EndsWith("pdf") Then
Panel1.Visible = True
Dim docpath = CURRENT_SCAN_FOLDERWATCH & "\" & i.Text
PdfViewer1.LoadDocument(docpath)
'PdfViewer1.HorizontalScroll.Visible = True
Else
Panel1.Visible = False
PdfViewer1.DocumentFilePath = ""
End If
End If
End If
End Sub
Private Sub ToolStripDropDownButton1_Click(sender As Object, e As EventArgs) Handles ToolStripDropDownButton1.Click
PdfViewer1.ZoomFactor = 30
End Sub
'Private Sub ListView1_MouseDown(sender As Object, e As MouseEventArgs) Handles ListView1.MouseDown
' If ListView1.SelectedItems.Count = 1 Then
' Dim i = ListView1.FocusedItem
' Dim i1 = i.Text
' If Not IsNothing(i) Then
' MouseIsDown = True
' DragID = i.Tag
' Console.WriteLine("Mouse Down")
' End If
' End If
'End Sub
Private Sub ListView1_MouseMove(sender As Object, e As MouseEventArgs) Handles ListView1.MouseMove
If MouseIsDown Then
'Initiate dragging.
ListView1.DoDragDrop(DragID, DragDropEffects.Copy)
Console.WriteLine("Dragging")
End If
MouseIsDown = False
End Sub
Private Sub ListView1_ItemDrag(sender As Object, e As ItemDragEventArgs) Handles ListView1.ItemDrag
If ListView1.SelectedItems.Count = 1 Then
Dim i = ListView1.FocusedItem
Dim i1 = i.Text
If Not IsNothing(i) Then
MouseIsDown = True
DragID = i.Tag
Console.WriteLine("Mouse Down")
ListView1.DoDragDrop("SCAN;" & DragID.ToString, DragDropEffects.Copy)
End If
End If
End Sub
Private Sub ListView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListView1.SelectedIndexChanged
End Sub
Private Sub PdfViewer1_DocumentChanged(sender As Object, e As DevExpress.XtraPdfViewer.PdfDocumentChangedEventArgs) Handles PdfViewer1.DocumentChanged
PDF_Pagenumber()
End Sub
Private Sub btndelete_Click(sender As Object, e As EventArgs) Handles btndelete.Click
Try
If ListView1.SelectedItems.Count = 1 Then
Dim i = ListView1.FocusedItem
Dim i1 = i.Text
If Not IsNothing(i) Then
Dim del = "DELETE FROM TBPMO_FILES_USER where GUID = " & i.Tag
If ClassDatabase.Execute_non_Query(del, True) Then
Load_Files()
End If
End If
End If
Catch ex As Exception
MsgBox("Unexpected Error in Delete Scanfile:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
End Class

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Product Name="Record Organizer" Id="*" UpgradeCode="{6387325E-F6D7-46BE-BBA8-D0E37BEEF800}" Version="2.2.0.0" Manufacturer="Digital Data" Language="1031" Codepage="1252">
<Product Name="Record Organizer" Id="*" UpgradeCode="{6387325E-F6D7-46BE-BBA8-D0E37BEEF800}" Version="2.4.0.0" Manufacturer="Digital Data" Language="1031" Codepage="1252">
<Package Id="*" Keywords="Installer" Description="Digital Data Record Organizer Setup" Comments="Record Organizer is a registered Trademark of Digital Data" Manufacturer="Digital Data" InstallerVersion="100" Languages="1031" Compressed="yes" SummaryCodepage="1252"/>
<!-- Nicht entfernen! -->
@@ -82,6 +82,10 @@
<Component Id="Oracle" Guid="CF76DB5D-3263-450F-96C6-F02F5447A0A1">
<File Id="Oracle.ManagedDataAccess" Name="Oracle.ManagedDataAccess.dll" Source="D:\Programme\DB\Oracle\ora12.1\Client\ODP.NET\managed\common\Oracle.ManagedDataAccess.dll" KeyPath="yes" />
</Component>
<Component Id="Commandline" Guid="53F9734C-F020-4885-96DC-D8CD880E8446">
<File Id="Commandline" Name="Commandline.dll" Source="Commandline.dll" KeyPath="yes" />
</Component>
<!-- DD Bibliotheken -->
<Component Id="DDLibs" Guid="BA2979E3-3778-48B8-B0D8-4B77825B9293">
@@ -137,6 +141,9 @@
<!-- Wird bei Deinstallation gelöscht -->
<RegistryValue Root="HKCU" Key="Software\[Manufacturer]\[ProductName]" Type="string" Value="[DD]" Name="Path" />
<RegistryValue Root="HKCU" Key="Software\Classes\pmo" Type="string" Name="URL Protocol" Value="" />
<RegistryValue Root="HKCU" Key="Software\Classes\pmo\DefaultIcon" Type="string" Value="&quot;[INSTALLDIR]DD-Record-Organiser.exe,0&quot;" />
<RegistryValue Root="HKCU" Key="Software\Classes\pmo\shell\open\command" Type="string" Value="&quot;[INSTALLDIR]DD-Record-Organiser.exe&quot; --data %1" />
</Component>
</Directory>
</Directory>
@@ -156,6 +163,7 @@
<ComponentRef Id="ProgramMenuDir"/>
<ComponentRef Id="RegistryEntries"/>
<ComponentRef Id="Oracle" />
<ComponentRef Id="Commandline" />
</Feature>
<!-- Legt das Standard-Installationsverzeichnis fest-->