BugFix und WMFileCreate
This commit is contained in:
@@ -27,10 +27,12 @@ Public Class frmMain
|
||||
|
||||
Private RefreshHelper As RefreshHelper
|
||||
Dim DT_CHARTS As DataTable
|
||||
Private formopenClose As Boolean = False
|
||||
'Private _windream As New ClassWindream_allgemein
|
||||
|
||||
Private Sub frmMain_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
|
||||
Try
|
||||
formopenClose = True
|
||||
' Position und Größe speichern
|
||||
My.Settings.frmMainSize = Me.Size
|
||||
My.Settings.frmMainPosition = Me.Location
|
||||
@@ -66,7 +68,8 @@ Public Class frmMain
|
||||
End Sub
|
||||
|
||||
Private Sub frmMain_Load(sender As Object, e As System.EventArgs) Handles Me.Load
|
||||
LOGGER.Debug("Initializing MainForm....", False)
|
||||
formopenClose = True
|
||||
LOGGER.Debug("Initializing MainForm....")
|
||||
Try
|
||||
UserLookAndFeel.Default.SetSkinStyle("VS2010")
|
||||
Catch ex As Exception
|
||||
@@ -96,7 +99,7 @@ Public Class frmMain
|
||||
If Refresh_ConnectionString() = True Then
|
||||
Try
|
||||
tslblLicenses.Text = "Anzahl Lizenzen: " & LICENSE_COUNT
|
||||
LOGGER.Debug("Initializing MainForm....", False)
|
||||
LOGGER.Debug("Initializing MainForm....")
|
||||
If ERROR_STATE = "NO USER" Then
|
||||
MsgBox("Achtung: Sie sind nicht in der Userverwaltung hinterlegt!" & vbNewLine & "Bitte setzen Sie sich mit dem Systembetreuer in Verbindung!", MsgBoxStyle.Critical, "Achtung:")
|
||||
Me.Close()
|
||||
@@ -127,15 +130,8 @@ Public Class frmMain
|
||||
LOGGER.Error(ex)
|
||||
MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Fehler bei User Check:")
|
||||
End Try
|
||||
tsstlblUser.Text = Environment.UserName
|
||||
|
||||
Try
|
||||
tsstlblUser.Text = Environment.UserName
|
||||
Decide_Load()
|
||||
|
||||
Catch ex As Exception
|
||||
LOGGER.Error(ex)
|
||||
MsgBox("Fehler bei Laden des Formulars: " & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Achtung:")
|
||||
End Try
|
||||
|
||||
Try
|
||||
If VIEWER_UNIVERSAL = "" And VIEWER_ALL = "uviewer" Then
|
||||
@@ -149,7 +145,6 @@ Public Class frmMain
|
||||
LOGGER.Error(ex)
|
||||
MsgBox("Unexpected Error in LoadForm - Step 4: " & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Attention:")
|
||||
End Try
|
||||
|
||||
Load_Profile_items()
|
||||
Try
|
||||
|
||||
@@ -165,6 +160,7 @@ Public Class frmMain
|
||||
End Try
|
||||
Check_Timer_Notification()
|
||||
Restore_Form_Position()
|
||||
|
||||
Try
|
||||
WINDREAM = New ClassPMWindream
|
||||
WINDREAM.Start_WMCC_andCo()
|
||||
@@ -180,9 +176,9 @@ Public Class frmMain
|
||||
MsgBox("Unexpected Error in windream-login - Step 5: " & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Attention:")
|
||||
End Try
|
||||
|
||||
LOGGER.Debug("MainForm initialized!", False)
|
||||
LOGGER.Debug("MainForm initialized!")
|
||||
End If
|
||||
|
||||
formopenClose = False
|
||||
End Sub
|
||||
Sub Check_Timer_Notification()
|
||||
Try
|
||||
@@ -202,17 +198,22 @@ Public Class frmMain
|
||||
End Sub
|
||||
Sub Restore_Form_Position()
|
||||
Try
|
||||
' Sind Werte hinterlegt?
|
||||
'Sind Werte hinterlegt?
|
||||
If My.Settings.frmMainPosition.IsEmpty = False Then
|
||||
If My.Settings.frmMainPosition.X > 0 And My.Settings.frmMainPosition.Y > 0 Then
|
||||
' Gespeicherte Werte verwenden
|
||||
Me.Location = My.Settings.frmMainPosition
|
||||
End If
|
||||
End If
|
||||
' Sind Werte hinterlegt?
|
||||
'Sind Werte hinterlegt?
|
||||
If Not My.Settings.frmMainSize.IsEmpty Then
|
||||
' Gespeicherte Werte verwenden
|
||||
Me.Size = My.Settings.frmMainSize
|
||||
Try
|
||||
Me.Size = My.Settings.frmMainSize
|
||||
Catch ex As Exception
|
||||
|
||||
End Try
|
||||
|
||||
End If
|
||||
Catch ex As Exception
|
||||
LOGGER.Error(ex)
|
||||
@@ -285,11 +286,10 @@ Public Class frmMain
|
||||
GridView_Docs.Columns("Last edited").DisplayFormat.FormatType = FormatType.DateTime
|
||||
GridView_Docs.Columns("Last edited").DisplayFormat.FormatString = "dd.MM.yyyy HH:MM:ss"
|
||||
Try
|
||||
GridView_Docs.Columns.Item("PROFILE_GROUP_TEXT").Visible = False
|
||||
GridView_Docs.Columns.Item("PROFILE_GROUP_COLOR").Visible = False
|
||||
Catch ex As Exception
|
||||
GridView_Docs.Columns.Item("GROUP_TEXT").Visible = False
|
||||
GridView_Docs.Columns.Item("GROUP_COLOR").Visible = False
|
||||
Catch ex As Exception
|
||||
|
||||
End Try
|
||||
End If
|
||||
|
||||
@@ -300,7 +300,7 @@ Public Class frmMain
|
||||
End Sub
|
||||
|
||||
Sub Load_Profile_items()
|
||||
Cursor = Cursors.WaitCursor
|
||||
|
||||
Dim profileGroupOpen As Boolean = False
|
||||
|
||||
Try
|
||||
@@ -349,7 +349,7 @@ Public Class frmMain
|
||||
LOGGER.Info("Load_Profile_items - Error: " & ex.Message)
|
||||
MsgBox("Unexpected Error in Load_Profile_items - Error: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
||||
End Try
|
||||
Cursor = Cursors.Default
|
||||
|
||||
End Sub
|
||||
Private Sub navBar_LinkClicked(ByVal sender As Object, ByVal e As NavBarLinkEventArgs)
|
||||
' Das aktuelle Layout speichern, bevor das neue geladen wird
|
||||
@@ -666,11 +666,10 @@ Public Class frmMain
|
||||
GridView_Docs.Columns("Last edited").DisplayFormat.FormatType = FormatType.DateTime
|
||||
GridView_Docs.Columns("Last edited").DisplayFormat.FormatString = "dd.MM.yyyy HH:MM:ss"
|
||||
Try
|
||||
GridView_Docs.Columns.Item("PROFILE_GROUP_TEXT").Visible = False
|
||||
GridView_Docs.Columns.Item("PROFILE_GROUP_COLOR").Visible = False
|
||||
Catch ex As Exception
|
||||
GridView_Docs.Columns.Item("GROUP_TEXT").Visible = False
|
||||
GridView_Docs.Columns.Item("GROUP_COLOR").Visible = False
|
||||
Catch ex As Exception
|
||||
|
||||
End Try
|
||||
|
||||
|
||||
@@ -743,13 +742,11 @@ Public Class frmMain
|
||||
|
||||
Try
|
||||
Try
|
||||
GridView_Docs.Columns.Item("PROFILE_GROUP_TEXT").GroupIndex = 0
|
||||
GridView_Docs.Columns.Item("PROFILE_GROUP_TEXT").Visible = False
|
||||
GridView_Docs.Columns.Item("PROFILE_GROUP_COLOR").Visible = False
|
||||
Catch ex As Exception
|
||||
GridView_Docs.Columns.Item("GROUP_TEXT").GroupIndex = 0
|
||||
GridView_Docs.Columns.Item("GROUP_TEXT").Visible = False
|
||||
GridView_Docs.Columns.Item("GROUP_COLOR").Visible = False
|
||||
Catch ex As Exception
|
||||
|
||||
End Try
|
||||
|
||||
For I = 0 To GridView_Docs.GroupCount - 1
|
||||
@@ -809,12 +806,15 @@ Public Class frmMain
|
||||
End Sub
|
||||
|
||||
Private Sub Timer_Tick(sender As System.Object, e As EventArgs) Handles TimerRefresh.Tick
|
||||
RefreshHelper.SaveViewInfo()
|
||||
If TimerRefresh.Enabled = False Then
|
||||
Exit Sub
|
||||
End If
|
||||
If GridControl_Docs.Visible = True And formopenClose = False Then RefreshHelper.SaveViewInfo()
|
||||
SaveGridLayout()
|
||||
Load_Profile_items()
|
||||
Decide_Load()
|
||||
tsslblLastSysnc.Text = "Letzte Synchronisation: " & Now.ToLongTimeString
|
||||
RefreshHelper.LoadViewInfo()
|
||||
If GridControl_Docs.Visible = True And formopenClose = False Then RefreshHelper.LoadViewInfo()
|
||||
End Sub
|
||||
|
||||
Private Sub NotifyIcon1_Click(sender As System.Object, e As EventArgs) Handles NotifyIcon1.Click
|
||||
@@ -854,11 +854,14 @@ Public Class frmMain
|
||||
End Sub
|
||||
|
||||
Private Sub ToolStripButton2_Click_1(sender As Object, e As EventArgs) Handles tsbtnrefresh.Click
|
||||
RefreshHelper.SaveViewInfo()
|
||||
SaveGridLayout()
|
||||
If GridControl_Docs.Visible = True And formopenClose = False Then
|
||||
RefreshHelper.SaveViewInfo()
|
||||
SaveGridLayout()
|
||||
End If
|
||||
|
||||
Load_Profile_items()
|
||||
Decide_Load()
|
||||
RefreshHelper.LoadViewInfo()
|
||||
If GridControl_Docs.Visible = True And formopenClose = False Then RefreshHelper.LoadViewInfo()
|
||||
End Sub
|
||||
|
||||
Private Sub ToolStripButton2_Click_2(sender As Object, e As EventArgs)
|
||||
@@ -973,10 +976,9 @@ Public Class frmMain
|
||||
Dim PROFIL_TITLE
|
||||
If GRID_LOAD_TYPE = "OVERVIEW" Then
|
||||
Try
|
||||
groupRowText = LTrim(RTrim(groupRowText.ToString.Replace("PROFILE_GROUP_TEXT: ", "")))
|
||||
groupRowText = LTrim(RTrim(groupRowText.ToString.Replace("GROUP_TEXT: ", "")))
|
||||
Catch ex As Exception
|
||||
groupRowText = LTrim(RTrim(groupRowText.ToString.Replace("GROUP_TEXT: ", "")))
|
||||
|
||||
End Try
|
||||
|
||||
Dim _SPLIT As String()
|
||||
@@ -1044,7 +1046,7 @@ Public Class frmMain
|
||||
WINDREAM = New ClassPMWindream()
|
||||
WINDREAM.Create_Session()
|
||||
|
||||
LOGGER.Debug("windream initialized", False)
|
||||
LOGGER.Debug("windream initialized")
|
||||
Return True
|
||||
Catch ex As Exception
|
||||
LOGGER.Error(ex)
|
||||
@@ -1089,14 +1091,18 @@ Public Class frmMain
|
||||
End If
|
||||
|
||||
|
||||
Dim dt As New DataTable
|
||||
dt.Columns.Add("DOC_ID")
|
||||
dt.Columns.Add("DOC_GUID")
|
||||
dt.Columns.Add("FULL_PATH")
|
||||
Dim NewDatatable As New DataTable
|
||||
NewDatatable.Columns.Add("DOC_ID")
|
||||
NewDatatable.Columns.Add("DOC_GUID")
|
||||
NewDatatable.Columns.Add("FULL_PATH")
|
||||
|
||||
For Each oRowHandle As Integer In oSelectedRows
|
||||
Dim R As DataRow = dt.NewRow
|
||||
|
||||
Dim DOC_ID = GridView_Docs.GetRowCellValue(oRowHandle, "DOC_ID")
|
||||
If IsNothing(DOC_ID) Then
|
||||
Continue For
|
||||
End If
|
||||
Dim R As DataRow = NewDatatable.NewRow
|
||||
CURRENT_DOC_ID = DOC_ID
|
||||
Dim DOC_PATH = GridView_Docs.GetRowCellValue(oRowHandle, "FULL_FILE_PATH")
|
||||
CURRENT_DOC_PATH = DOC_PATH
|
||||
@@ -1104,14 +1110,13 @@ Public Class frmMain
|
||||
R("DOC_ID") = CURRENT_DOC_ID
|
||||
R("FULL_PATH") = CURRENT_DOC_PATH
|
||||
R("DOC_GUID") = GridView_Docs.GetRowCellValue(oRowHandle, "GUID")
|
||||
dt.Rows.Add(R)
|
||||
NewDatatable.Rows.Add(R)
|
||||
Next
|
||||
|
||||
CURRENT_DT_MASS_CHANGE_DOCS = Nothing
|
||||
CURRENT_DT_MASS_CHANGE_DOCS = dt
|
||||
|
||||
frmMassValidator.Show()
|
||||
|
||||
CURRENT_DT_MASS_CHANGE_DOCS = NewDatatable
|
||||
TimerRefresh.Enabled = False
|
||||
frmMassValidator.ShowDialog()
|
||||
Load_Profile_items()
|
||||
Decide_Load()
|
||||
Else
|
||||
@@ -1143,7 +1148,7 @@ Public Class frmMain
|
||||
GRID_LOAD_TYPE = "OVERVIEW"
|
||||
CURRENT_CLICKED_PROFILE_ID = 0
|
||||
ToolStripLabelViewTape.Text = "Gesamtübersicht"
|
||||
Cursor = Cursors.WaitCursor
|
||||
|
||||
Try
|
||||
Dim sel = String.Format("SELECT * FROM VWPM_PROFILE_USER WHERE USER_ID ={0}", USER_ID)
|
||||
CURRENT_DT_VW_PROFILE_USER = ClassDatabase.Return_Datatable(sel, True)
|
||||
@@ -1153,29 +1158,29 @@ Public Class frmMain
|
||||
LOGGER.Info(" >> no profiles for user: '" & Environment.UserName & "' configured!", False)
|
||||
NO_WORKFLOWITEMS = True
|
||||
tslblmessage.Text = "Keine Profile für Ihren User hinterlegt"
|
||||
Cursor = Cursors.Default
|
||||
|
||||
Exit Sub
|
||||
End If
|
||||
Load_Profiles_for_User()
|
||||
PROFILE_COUNT = 0
|
||||
ClassInit.InitBasics()
|
||||
Dim sql = CURRENT_DT_CONFIG.Rows(0).Item("SQL_PROFILE_MAIN_VIEW")
|
||||
Dim oSQLOverview = CURRENT_DT_CONFIG.Rows(0).Item("SQL_PROFILE_MAIN_VIEW")
|
||||
|
||||
|
||||
If IsDBNull(sql) Then
|
||||
If IsDBNull(oSQLOverview) Then
|
||||
tslblmessage.Text = "No GROUP-CONFIG (SQL_PROFILE_MAIN_VIEW) in Baseconfig"
|
||||
Exit Sub
|
||||
End If
|
||||
sql = sql.Replace("@USER_ID", USER_ID)
|
||||
sql = sql.Replace("@USERNAME", Environment.UserName)
|
||||
sql = sql.Replace("@MACHINE_NAME", Environment.MachineName)
|
||||
sql = sql.Replace("@DATE", Now.ToShortDateString)
|
||||
sql = sql.Replace("@PROFILE_ID", CURRENT_CLICKED_PROFILE_ID)
|
||||
oSQLOverview = oSQLOverview.Replace("@USER_ID", USER_ID)
|
||||
oSQLOverview = oSQLOverview.Replace("@USERNAME", Environment.UserName)
|
||||
oSQLOverview = oSQLOverview.Replace("@MACHINE_NAME", Environment.MachineName)
|
||||
oSQLOverview = oSQLOverview.Replace("@DATE", Now.ToShortDateString)
|
||||
oSQLOverview = oSQLOverview.Replace("@PROFILE_ID", CURRENT_CLICKED_PROFILE_ID)
|
||||
|
||||
'String.Format("SELECT '1' TL_STATE,T.PROFIL_ID,T1.TITLE, T.DOC_ID, T.FILE_PATH, T.DMS_ERSTELLT_DATE,[dbo].[FNPM_LAST_WORKUSER_DOC] (T.PROFIL_ID,T.DOC_ID) AS 'Last User',[dbo].[FNPM_LAST_EDITED_DOC] (T.PROFIL_ID,T.DOC_ID) as 'Last edited' FROM TBPM_PROFILE_FILES T, VWPM_PROFILE_USER T1 " &
|
||||
' "WHERE T.PROFIL_ID = T1.PROFIL_ID " &
|
||||
' "AND T1.ACTIVE = 1 And (UPPER(T1.USERNAME) = UPPER('{0}')) Order By T1.PRIORITY", Environment.UserName)
|
||||
CURR_DT_PROFILEGRID = ClassDatabase.Return_Datatable(sql, True)
|
||||
CURR_DT_PROFILEGRID = ClassDatabase.Return_Datatable(oSQLOverview, True)
|
||||
Dim DTGRID_GROUPS As DataTable
|
||||
Try
|
||||
DTGRID_GROUPS = ClassDatabase.Return_Datatable($"SELECT * FROM TBPM_MAIN_VIEW_GROUPS WHERE ACTIVE = 1", True)
|
||||
@@ -1194,8 +1199,7 @@ Public Class frmMain
|
||||
|
||||
'MsgBox("Aktuell keine Workflowdaten vorhanden!", MsgBoxStyle.Information)
|
||||
GridControl_Docs.Visible = False
|
||||
BindingNavigator1.Visible = False
|
||||
BindingNavigator1.Dock = DockStyle.None
|
||||
bindsourcegrid.DataSource = Nothing
|
||||
GridControl_Docs.DataSource = Nothing
|
||||
Try
|
||||
GridView_Docs.Columns.Clear()
|
||||
@@ -1203,9 +1207,10 @@ Public Class frmMain
|
||||
LOGGER.Error(ex)
|
||||
|
||||
End Try
|
||||
Cursor = Cursors.Default
|
||||
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
BindingNavigator1.Visible = True
|
||||
BindingNavigator1.Dock = DockStyle.Top
|
||||
|
||||
@@ -1254,31 +1259,23 @@ Public Class frmMain
|
||||
Dim oindex As Integer = 0
|
||||
If Not IsNothing(DTGRID_GROUPS) Then
|
||||
For Each oGridGroup As DataRow In DTGRID_GROUPS.Rows
|
||||
LOGGER.Debug($"Addig group [{oGridGroup.Item("GROUPNAME")}] for Grid...", False)
|
||||
LOGGER.Debug($"Addig group [{oGridGroup.Item("GROUPNAME")}] for Grid...")
|
||||
GridView_Docs.Columns.Item(oGridGroup.Item("GROUPNAME")).GroupIndex = oindex
|
||||
oindex += 1
|
||||
Next
|
||||
Else
|
||||
Try
|
||||
GridView_Docs.Columns.Item("PROFILE_GROUP_TEXT").GroupIndex = oindex
|
||||
Catch ex As Exception
|
||||
GridView_Docs.Columns.Item("GROUP_TEXT").GroupIndex = oindex
|
||||
End Try
|
||||
|
||||
End If
|
||||
|
||||
Try
|
||||
GridView_Docs.Columns.Item("PROFILE_GROUP_TEXT").Visible = False
|
||||
GridView_Docs.Columns.Item("PROFILE_GROUP_COLOR").Visible = False
|
||||
Catch ex As Exception
|
||||
GridView_Docs.Columns.Item("GROUP_TEXT").Visible = False
|
||||
GridView_Docs.Columns.Item("GROUP_COLOR").Visible = False
|
||||
Catch ex As Exception
|
||||
|
||||
End Try
|
||||
|
||||
|
||||
For index = 0 To GridView_Docs.GroupCount - 1
|
||||
Dim v = GridView_Docs.GroupedColumns(index).ToString
|
||||
LOGGER.Debug($"Addig tag [{GridView_Docs.Columns.Item("PROFILE_ID")}] for group...", False)
|
||||
LOGGER.Debug($"Addig tag [{GridView_Docs.Columns.Item("PROFILE_ID")}] for group...")
|
||||
Dim sd = GridView_Docs.GroupedColumns(index).GetTextCaption
|
||||
GridView_Docs.GroupedColumns(index).Tag = GridView_Docs.Columns.Item("PROFILE_ID")
|
||||
|
||||
@@ -1335,7 +1332,10 @@ Public Class frmMain
|
||||
Reset_GridLayout()
|
||||
End If
|
||||
|
||||
|
||||
|
||||
Else
|
||||
|
||||
NO_WORKFLOWITEMS = True
|
||||
GridControl_Docs.Visible = False
|
||||
BindingNavigator1.Visible = False
|
||||
@@ -1351,10 +1351,10 @@ Public Class frmMain
|
||||
End If
|
||||
Catch ex As Exception
|
||||
LOGGER.Error(ex)
|
||||
LOGGER.Info("Load_Grid_Overview - Fehler: " & ex.Message)
|
||||
MsgBox("Fehler Load_Grid_Overview - Fehler: " & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Achtung:")
|
||||
LOGGER.Info("Load_Grid_Overview - Fehler: " & ex.Message)
|
||||
MsgBox("Fehler Load_Grid_Overview - Fehler: " & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Achtung:")
|
||||
End Try
|
||||
Cursor = Cursors.Default
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub tsmiValidationProfil_Click(sender As Object, e As EventArgs) Handles tsmiValidationProfil.Click
|
||||
@@ -1377,7 +1377,7 @@ Public Class frmMain
|
||||
|
||||
End Sub
|
||||
Sub Reset_GridLayout()
|
||||
RefreshHelper.SaveViewInfo()
|
||||
If GridControl_Docs.Visible = True And formopenClose = False Then RefreshHelper.SaveViewInfo()
|
||||
|
||||
' Layout zurücksetzen
|
||||
ResetLayout()
|
||||
@@ -1476,9 +1476,9 @@ Public Class frmMain
|
||||
Dim groupRowButtonClicked = (hi.HitTest = GridHitTest.RowGroupButton)
|
||||
GridCursorLocation = e.Location
|
||||
|
||||
If e.Button = MouseButtons.Left Then
|
||||
' wenn in eine Group Row Doppelt geklickt wurde..
|
||||
If hi.InGroupRow And Not groupRowButtonClicked Then
|
||||
'If e.Button = MouseButtons.Left Then
|
||||
' wenn in eine Group Row Doppelt geklickt wurde..
|
||||
If hi.InGroupRow And Not groupRowButtonClicked Then
|
||||
' Ein/Ausklappen verhindern
|
||||
DXMouseEventArgs.GetMouseArgs(e).Handled = True
|
||||
GridViewItem_Clicked = "GROUP"
|
||||
@@ -1489,7 +1489,7 @@ Public Class frmMain
|
||||
Else
|
||||
GridViewItem_Clicked = Nothing
|
||||
End If
|
||||
End If
|
||||
'End If
|
||||
End Sub
|
||||
|
||||
Private Sub GridView_Docs_ColumnWidthChanged(sender As Object, e As Views.Base.ColumnEventArgs) Handles GridView_Docs.ColumnWidthChanged
|
||||
@@ -1502,6 +1502,12 @@ Public Class frmMain
|
||||
|
||||
Private Sub GridView_Docs_LostFocus(sender As Object, e As EventArgs) Handles GridView_Docs.LostFocus
|
||||
' Save expanded GroupRows
|
||||
RefreshHelper.SaveViewInfo()
|
||||
If GridControl_Docs.Visible = True And formopenClose = False Then RefreshHelper.SaveViewInfo()
|
||||
End Sub
|
||||
|
||||
Private Sub frmMain_Shown(sender As Object, e As EventArgs) Handles Me.Shown
|
||||
|
||||
Decide_Load()
|
||||
|
||||
End Sub
|
||||
End Class
|
||||
Reference in New Issue
Block a user