Erweitere CockpitConfig um Benutzer- und Gruppenverwaltung

Füge ein neues `XtraTabControl` mit zwei Tabs hinzu:
- Tab 1: Verwaltung von Benutzern (zugeordnet/nicht zugeordnet)
- Tab 2: Verwaltung von Gruppen (zugeordnet/nicht zugeordnet)

Implementiere Drag-and-Drop-Funktionalität für Benutzer- und
Gruppenzuweisungen, einschließlich Validierung und Datenbank-
operationen (Einfügen/Löschen).

Ergänze Methoden zum Laden von Benutzern und Gruppen:
- `Load_Assigned_User_2_Cockpit`, `Load_Free_User_2_Cockpit`
- `Load_Assigned_Groups_2_Cockpit`, `Load_Free_Groups_2_Cockpit`

Füge ein Dropdown für die Reihenfolge-Spalte hinzu und validiere
deren Werte. Zeige Statusmeldungen über ein neues `BarStaticItem`
(`bsitm_info`) an.

Passe die Benutzeroberfläche an (Größe, Layout) und aktualisiere
SQL-Abfragen für korrekte Sortierung. Integriere neue Ressourcen
(SVG-Bilder) für die Statusanzeige.
This commit is contained in:
Developer01
2026-08-18 17:03:38 +02:00
parent bea7ccebf8
commit 15295ba3f5
3 changed files with 783 additions and 8 deletions

View File

@@ -34,6 +34,7 @@ Partial Class frmCockpitConfig
Me.bbtnitm_NodeOverviewAdd = New DevExpress.XtraBars.BarButtonItem()
Me.bbtnitm_NodeProfilAdd = New DevExpress.XtraBars.BarButtonItem()
Me.bbtnitmCopy = New DevExpress.XtraBars.BarButtonItem()
Me.bsitm_info = New DevExpress.XtraBars.BarStaticItem()
Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonPageGroup2 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
@@ -63,6 +64,23 @@ Partial Class frmCockpitConfig
Me.LabelControl_Chart = New DevExpress.XtraEditors.LabelControl()
Me.LookUpEditMonitor = New DevExpress.XtraEditors.LookUpEdit()
Me.LabelControl_Monitor = New DevExpress.XtraEditors.LabelControl()
Me.XtraTabControl1 = New DevExpress.XtraTab.XtraTabControl()
Me.XtraTabPage1 = New DevExpress.XtraTab.XtraTabPage()
Me.gridAssignedUsers = New DevExpress.XtraGrid.GridControl()
Me.viewAssignedUsers = New DevExpress.XtraGrid.Views.Grid.GridView()
Me.gridAvailableUsers = New DevExpress.XtraGrid.GridControl()
Me.viewAvailableUsers = New DevExpress.XtraGrid.Views.Grid.GridView()
Me.PanelControl1 = New DevExpress.XtraEditors.PanelControl()
Me.LabelControl9 = New DevExpress.XtraEditors.LabelControl()
Me.LabelControl8 = New DevExpress.XtraEditors.LabelControl()
Me.XtraTabPage2 = New DevExpress.XtraTab.XtraTabPage()
Me.PanelControl2 = New DevExpress.XtraEditors.PanelControl()
Me.LabelControl10 = New DevExpress.XtraEditors.LabelControl()
Me.LabelControl11 = New DevExpress.XtraEditors.LabelControl()
Me.GridAvailableGroups = New DevExpress.XtraGrid.GridControl()
Me.ViewAvailableGroups = New DevExpress.XtraGrid.Views.Grid.GridView()
Me.GridAssignedGroups = New DevExpress.XtraGrid.GridControl()
Me.ViewAssignedGroups = New DevExpress.XtraGrid.Views.Grid.GridView()
CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.LookUpEdit1.Properties, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.CheckEdit_Cockpit_Active.Properties, System.ComponentModel.ISupportInitialize).BeginInit()
@@ -78,6 +96,22 @@ Partial Class frmCockpitConfig
CType(Me.LookUpEditProfil.Properties, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.LookUpEditChart.Properties, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.LookUpEditMonitor.Properties, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.XtraTabControl1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.XtraTabControl1.SuspendLayout()
Me.XtraTabPage1.SuspendLayout()
CType(Me.gridAssignedUsers, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.viewAssignedUsers, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.gridAvailableUsers, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.viewAvailableUsers, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.PanelControl1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.PanelControl1.SuspendLayout()
Me.XtraTabPage2.SuspendLayout()
CType(Me.PanelControl2, System.ComponentModel.ISupportInitialize).BeginInit()
Me.PanelControl2.SuspendLayout()
CType(Me.GridAvailableGroups, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.ViewAvailableGroups, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.GridAssignedGroups, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.ViewAssignedGroups, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'RibbonControl1
@@ -85,10 +119,10 @@ Partial Class frmCockpitConfig
Me.RibbonControl1.EmptyAreaImageOptions.ImagePadding = New System.Windows.Forms.Padding(35, 39, 35, 39)
Me.RibbonControl1.ExpandCollapseItem.Id = 0
Me.RibbonControl1.Font = New System.Drawing.Font("Segoe UI", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.BarButtonItem1, Me.BarButtonItem2, Me.bbtnSQL_Data, Me.bbtnSQL_Count, Me.bbtnitm_Save, Me.BarButtonItem4, Me.bbtnitm_NodeOverviewAdd, Me.bbtnitm_NodeProfilAdd, Me.bbtnitmCopy})
Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.BarButtonItem1, Me.BarButtonItem2, Me.bbtnSQL_Data, Me.bbtnSQL_Count, Me.bbtnitm_Save, Me.BarButtonItem4, Me.bbtnitm_NodeOverviewAdd, Me.bbtnitm_NodeProfilAdd, Me.bbtnitmCopy, Me.bsitm_info})
Me.RibbonControl1.Location = New System.Drawing.Point(0, 0)
Me.RibbonControl1.Margin = New System.Windows.Forms.Padding(4)
Me.RibbonControl1.MaxItemId = 10
Me.RibbonControl1.MaxItemId = 11
Me.RibbonControl1.Name = "RibbonControl1"
Me.RibbonControl1.OptionsMenuMinWidth = 385
Me.RibbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1})
@@ -159,6 +193,13 @@ Partial Class frmCockpitConfig
Me.bbtnitmCopy.ImageOptions.SvgImage = CType(resources.GetObject("bbtnitmCopy.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.bbtnitmCopy.Name = "bbtnitmCopy"
'
'bsitm_info
'
Me.bsitm_info.Id = 10
Me.bsitm_info.ImageOptions.SvgImage = CType(resources.GetObject("bsitm_info.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.bsitm_info.Name = "bsitm_info"
Me.bsitm_info.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph
'
'RibbonPage1
'
Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1, Me.RibbonPageGroup2})
@@ -188,7 +229,8 @@ Partial Class frmCockpitConfig
'
'RibbonStatusBar1
'
Me.RibbonStatusBar1.Location = New System.Drawing.Point(0, 566)
Me.RibbonStatusBar1.ItemLinks.Add(Me.bsitm_info)
Me.RibbonStatusBar1.Location = New System.Drawing.Point(0, 711)
Me.RibbonStatusBar1.Margin = New System.Windows.Forms.Padding(4)
Me.RibbonStatusBar1.Name = "RibbonStatusBar1"
Me.RibbonStatusBar1.Ribbon = Me.RibbonControl1
@@ -240,8 +282,6 @@ Partial Class frmCockpitConfig
'
'TreeList_Cockpit
'
Me.TreeList_Cockpit.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
Me.TreeList_Cockpit.Font = New System.Drawing.Font("Tahoma", 9.75!)
Me.TreeList_Cockpit.ImageIndexFieldName = "ICON_ID"
Me.TreeList_Cockpit.KeyFieldName = "PK_CFG_COCKPIT_DEFINITION_ID"
@@ -264,7 +304,7 @@ Partial Class frmCockpitConfig
Me.TreeList_Cockpit.OptionsView.TreeLineStyle = DevExpress.XtraTreeList.LineStyle.Dark
Me.TreeList_Cockpit.ParentFieldName = "PARENT_ID"
Me.TreeList_Cockpit.SelectImageList = Me.ImageCollection1
Me.TreeList_Cockpit.Size = New System.Drawing.Size(383, 339)
Me.TreeList_Cockpit.Size = New System.Drawing.Size(383, 236)
Me.TreeList_Cockpit.TabIndex = 24
'
'LabelControl2
@@ -465,12 +505,183 @@ Partial Class frmCockpitConfig
Me.LabelControl_Monitor.TabIndex = 46
Me.LabelControl_Monitor.Text = "Monitor-Definition"
'
'XtraTabControl1
'
Me.XtraTabControl1.AllowDrop = True
Me.XtraTabControl1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.XtraTabControl1.Location = New System.Drawing.Point(12, 462)
Me.XtraTabControl1.Name = "XtraTabControl1"
Me.XtraTabControl1.SelectedTabPage = Me.XtraTabPage1
Me.XtraTabControl1.Size = New System.Drawing.Size(921, 242)
Me.XtraTabControl1.TabIndex = 50
Me.XtraTabControl1.TabPages.AddRange(New DevExpress.XtraTab.XtraTabPage() {Me.XtraTabPage1, Me.XtraTabPage2})
'
'XtraTabPage1
'
Me.XtraTabPage1.Controls.Add(Me.gridAssignedUsers)
Me.XtraTabPage1.Controls.Add(Me.gridAvailableUsers)
Me.XtraTabPage1.Controls.Add(Me.PanelControl1)
Me.XtraTabPage1.Name = "XtraTabPage1"
Me.XtraTabPage1.Size = New System.Drawing.Size(919, 219)
Me.XtraTabPage1.Text = "User zu Cockpit"
'
'gridAssignedUsers
'
Me.gridAssignedUsers.AllowDrop = True
Me.gridAssignedUsers.Dock = System.Windows.Forms.DockStyle.Fill
Me.gridAssignedUsers.Location = New System.Drawing.Point(406, 33)
Me.gridAssignedUsers.MainView = Me.viewAssignedUsers
Me.gridAssignedUsers.Name = "gridAssignedUsers"
Me.gridAssignedUsers.Size = New System.Drawing.Size(513, 186)
Me.gridAssignedUsers.TabIndex = 7
Me.gridAssignedUsers.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.viewAssignedUsers})
'
'viewAssignedUsers
'
Me.viewAssignedUsers.DetailHeight = 295
Me.viewAssignedUsers.GridControl = Me.gridAssignedUsers
Me.viewAssignedUsers.Name = "viewAssignedUsers"
Me.viewAssignedUsers.OptionsView.ShowAutoFilterRow = True
Me.viewAssignedUsers.OptionsView.ShowGroupPanel = False
'
'gridAvailableUsers
'
Me.gridAvailableUsers.AllowDrop = True
Me.gridAvailableUsers.Dock = System.Windows.Forms.DockStyle.Left
Me.gridAvailableUsers.Location = New System.Drawing.Point(0, 33)
Me.gridAvailableUsers.MainView = Me.viewAvailableUsers
Me.gridAvailableUsers.Name = "gridAvailableUsers"
Me.gridAvailableUsers.Size = New System.Drawing.Size(406, 186)
Me.gridAvailableUsers.TabIndex = 6
Me.gridAvailableUsers.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.viewAvailableUsers})
'
'viewAvailableUsers
'
Me.viewAvailableUsers.DetailHeight = 295
Me.viewAvailableUsers.GridControl = Me.gridAvailableUsers
Me.viewAvailableUsers.Name = "viewAvailableUsers"
Me.viewAvailableUsers.OptionsBehavior.Editable = False
Me.viewAvailableUsers.OptionsBehavior.ReadOnly = True
Me.viewAvailableUsers.OptionsView.ShowAutoFilterRow = True
Me.viewAvailableUsers.OptionsView.ShowGroupPanel = False
'
'PanelControl1
'
Me.PanelControl1.Controls.Add(Me.LabelControl9)
Me.PanelControl1.Controls.Add(Me.LabelControl8)
Me.PanelControl1.Dock = System.Windows.Forms.DockStyle.Top
Me.PanelControl1.Location = New System.Drawing.Point(0, 0)
Me.PanelControl1.Name = "PanelControl1"
Me.PanelControl1.Size = New System.Drawing.Size(919, 33)
Me.PanelControl1.TabIndex = 0
'
'LabelControl9
'
Me.LabelControl9.Appearance.Font = New System.Drawing.Font("Segoe UI", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.LabelControl9.Appearance.Options.UseFont = True
Me.LabelControl9.Location = New System.Drawing.Point(409, 5)
Me.LabelControl9.Name = "LabelControl9"
Me.LabelControl9.Size = New System.Drawing.Size(106, 17)
Me.LabelControl9.TabIndex = 1
Me.LabelControl9.Text = "Zugeordnete User"
'
'LabelControl8
'
Me.LabelControl8.Appearance.Font = New System.Drawing.Font("Segoe UI", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.LabelControl8.Appearance.Options.UseFont = True
Me.LabelControl8.Location = New System.Drawing.Point(5, 5)
Me.LabelControl8.Name = "LabelControl8"
Me.LabelControl8.Size = New System.Drawing.Size(139, 17)
Me.LabelControl8.TabIndex = 0
Me.LabelControl8.Text = "Nicht zugeordnete User"
'
'XtraTabPage2
'
Me.XtraTabPage2.Controls.Add(Me.GridAssignedGroups)
Me.XtraTabPage2.Controls.Add(Me.GridAvailableGroups)
Me.XtraTabPage2.Controls.Add(Me.PanelControl2)
Me.XtraTabPage2.Name = "XtraTabPage2"
Me.XtraTabPage2.Size = New System.Drawing.Size(919, 219)
Me.XtraTabPage2.Text = "Gruppe zu Cockpit"
'
'PanelControl2
'
Me.PanelControl2.Controls.Add(Me.LabelControl10)
Me.PanelControl2.Controls.Add(Me.LabelControl11)
Me.PanelControl2.Dock = System.Windows.Forms.DockStyle.Top
Me.PanelControl2.Location = New System.Drawing.Point(0, 0)
Me.PanelControl2.Name = "PanelControl2"
Me.PanelControl2.Size = New System.Drawing.Size(919, 33)
Me.PanelControl2.TabIndex = 1
'
'LabelControl10
'
Me.LabelControl10.Appearance.Font = New System.Drawing.Font("Segoe UI", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.LabelControl10.Appearance.Options.UseFont = True
Me.LabelControl10.Location = New System.Drawing.Point(409, 5)
Me.LabelControl10.Name = "LabelControl10"
Me.LabelControl10.Size = New System.Drawing.Size(130, 17)
Me.LabelControl10.TabIndex = 1
Me.LabelControl10.Text = "Zugeordnete Gruppen"
'
'LabelControl11
'
Me.LabelControl11.Appearance.Font = New System.Drawing.Font("Segoe UI", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.LabelControl11.Appearance.Options.UseFont = True
Me.LabelControl11.Location = New System.Drawing.Point(5, 5)
Me.LabelControl11.Name = "LabelControl11"
Me.LabelControl11.Size = New System.Drawing.Size(163, 17)
Me.LabelControl11.TabIndex = 0
Me.LabelControl11.Text = "Nicht zugeordnete Gruppen"
'
'GridAvailableGroups
'
Me.GridAvailableGroups.AllowDrop = True
Me.GridAvailableGroups.Dock = System.Windows.Forms.DockStyle.Left
Me.GridAvailableGroups.Location = New System.Drawing.Point(0, 33)
Me.GridAvailableGroups.MainView = Me.ViewAvailableGroups
Me.GridAvailableGroups.Name = "GridAvailableGroups"
Me.GridAvailableGroups.Size = New System.Drawing.Size(406, 186)
Me.GridAvailableGroups.TabIndex = 7
Me.GridAvailableGroups.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.ViewAvailableGroups})
'
'ViewAvailableGroups
'
Me.ViewAvailableGroups.DetailHeight = 295
Me.ViewAvailableGroups.GridControl = Me.GridAvailableGroups
Me.ViewAvailableGroups.Name = "ViewAvailableGroups"
Me.ViewAvailableGroups.OptionsBehavior.Editable = False
Me.ViewAvailableGroups.OptionsBehavior.ReadOnly = True
Me.ViewAvailableGroups.OptionsView.ShowAutoFilterRow = True
Me.ViewAvailableGroups.OptionsView.ShowGroupPanel = False
'
'GridAssignedGroups
'
Me.GridAssignedGroups.AllowDrop = True
Me.GridAssignedGroups.Dock = System.Windows.Forms.DockStyle.Fill
Me.GridAssignedGroups.Location = New System.Drawing.Point(406, 33)
Me.GridAssignedGroups.MainView = Me.ViewAssignedGroups
Me.GridAssignedGroups.Name = "GridAssignedGroups"
Me.GridAssignedGroups.Size = New System.Drawing.Size(513, 186)
Me.GridAssignedGroups.TabIndex = 8
Me.GridAssignedGroups.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.ViewAssignedGroups})
'
'ViewAssignedGroups
'
Me.ViewAssignedGroups.DetailHeight = 295
Me.ViewAssignedGroups.GridControl = Me.GridAssignedGroups
Me.ViewAssignedGroups.Name = "ViewAssignedGroups"
Me.ViewAssignedGroups.OptionsView.ShowAutoFilterRow = True
Me.ViewAssignedGroups.OptionsView.ShowGroupPanel = False
'
'frmCockpitConfig
'
Me.Appearance.Options.UseFont = True
Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 17.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(974, 588)
Me.ClientSize = New System.Drawing.Size(974, 733)
Me.Controls.Add(Me.XtraTabControl1)
Me.Controls.Add(Me.LookUpEditMonitor)
Me.Controls.Add(Me.LabelControl_Monitor)
Me.Controls.Add(Me.LookUpEditChart)
@@ -518,6 +729,24 @@ Partial Class frmCockpitConfig
CType(Me.LookUpEditProfil.Properties, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.LookUpEditChart.Properties, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.LookUpEditMonitor.Properties, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.XtraTabControl1, System.ComponentModel.ISupportInitialize).EndInit()
Me.XtraTabControl1.ResumeLayout(False)
Me.XtraTabPage1.ResumeLayout(False)
CType(Me.gridAssignedUsers, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.viewAssignedUsers, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.gridAvailableUsers, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.viewAvailableUsers, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.PanelControl1, System.ComponentModel.ISupportInitialize).EndInit()
Me.PanelControl1.ResumeLayout(False)
Me.PanelControl1.PerformLayout()
Me.XtraTabPage2.ResumeLayout(False)
CType(Me.PanelControl2, System.ComponentModel.ISupportInitialize).EndInit()
Me.PanelControl2.ResumeLayout(False)
Me.PanelControl2.PerformLayout()
CType(Me.GridAvailableGroups, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.ViewAvailableGroups, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.GridAssignedGroups, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.ViewAssignedGroups, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
Me.PerformLayout()
@@ -562,4 +791,22 @@ Partial Class frmCockpitConfig
Friend WithEvents LookUpEditMonitor As DevExpress.XtraEditors.LookUpEdit
Friend WithEvents LabelControl_Monitor As DevExpress.XtraEditors.LabelControl
Friend WithEvents bbtnitmCopy As DevExpress.XtraBars.BarButtonItem
Friend WithEvents XtraTabControl1 As DevExpress.XtraTab.XtraTabControl
Friend WithEvents XtraTabPage1 As DevExpress.XtraTab.XtraTabPage
Friend WithEvents XtraTabPage2 As DevExpress.XtraTab.XtraTabPage
Friend WithEvents gridAvailableUsers As DevExpress.XtraGrid.GridControl
Friend WithEvents viewAvailableUsers As DevExpress.XtraGrid.Views.Grid.GridView
Friend WithEvents PanelControl1 As DevExpress.XtraEditors.PanelControl
Friend WithEvents LabelControl9 As DevExpress.XtraEditors.LabelControl
Friend WithEvents LabelControl8 As DevExpress.XtraEditors.LabelControl
Friend WithEvents gridAssignedUsers As DevExpress.XtraGrid.GridControl
Friend WithEvents viewAssignedUsers As DevExpress.XtraGrid.Views.Grid.GridView
Friend WithEvents bsitm_info As DevExpress.XtraBars.BarStaticItem
Friend WithEvents PanelControl2 As DevExpress.XtraEditors.PanelControl
Friend WithEvents LabelControl10 As DevExpress.XtraEditors.LabelControl
Friend WithEvents LabelControl11 As DevExpress.XtraEditors.LabelControl
Friend WithEvents GridAssignedGroups As DevExpress.XtraGrid.GridControl
Friend WithEvents ViewAssignedGroups As DevExpress.XtraGrid.Views.Grid.GridView
Friend WithEvents GridAvailableGroups As DevExpress.XtraGrid.GridControl
Friend WithEvents ViewAvailableGroups As DevExpress.XtraGrid.Views.Grid.GridView
End Class

View File

@@ -297,6 +297,27 @@
MC41LDAsMS0wLjUsMS0xdi01aDVjMC41LDAsMS0wLjUsMS0xICAgVjlMMjEsMnogTTIwLDI4SDZWMTBo
OHY1YzAsMC41LDAuNSwxLDEsMWg1VjI4eiBNMjYsMjJoLTR2LTdsLTctN2gtM1Y0aDh2NWMwLDAuNSww
LjUsMSwxLDFoNVYyMnoiIGNsYXNzPSJCbGFjayIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
</value>
</data>
<data name="bsitm_info.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAABsDAAAC77u/
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD
MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
Y2l0eTowLjU7fQoJLnN0MXtkaXNwbGF5Om5vbmU7fQoJLnN0MntkaXNwbGF5OmlubGluZTtmaWxsOiMw
MzlDMjM7fQoJLnN0M3tkaXNwbGF5OmlubGluZTtmaWxsOiNEMTFDMUM7fQoJLnN0NHtkaXNwbGF5Omlu
bGluZTtmaWxsOiM3MjcyNzI7fQo8L3N0eWxlPg0KICA8ZyBpZD0iQWJvdXQiPg0KICAgIDxwYXRoIGQ9
Ik0xNiwyQzguMywyLDIsOC4zLDIsMTZzNi4zLDE0LDE0LDE0czE0LTYuMywxNC0xNFMyMy43LDIsMTYs
MnogTTE2LDZjMS4xLDAsMiwwLjksMiwycy0wLjksMi0yLDJzLTItMC45LTItMiAgIFMxNC45LDYsMTYs
NnogTTIwLDI0aC04di0yaDJ2LThoLTJ2LTJoMmg0djEwaDJWMjR6IiBjbGFzcz0iQmx1ZSIgLz4NCiAg
PC9nPg0KPC9zdmc+Cw==
</value>
</data>
<metadata name="ImageCollection1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">

View File

@@ -1,5 +1,6 @@
Imports DevExpress.XtraBars.Ribbon
Imports DigitalData.GUIs.Common
Imports taskFLOW.DD_DMSLiteDataSetTableAdapters
Public Class frmCockpitConfig
Private Selected_Cockpit_ID As Integer
@@ -203,6 +204,8 @@ Public Class frmCockpitConfig
Selected_Cockpit_ID = LookUpEdit1.EditValue
CheckEdit_Cockpit_Active.Checked = LookUpEdit1.Properties.GetDataSourceValue("ACTIVE", LookUpEdit1.ItemIndex)
Load_TBTF_CFG_COCKPIT_DEFINITION()
Load_Free_User_2_Cockpit()
Load_Assigned_User_2_Cockpit()
Catch ex As Exception
LOGGER.Error($"Error in LookUpEdit1_EditValueChanged: {ex.Message}")
End Try
@@ -503,6 +506,10 @@ Public Class frmCockpitConfig
Else
LOGGER.Debug("No TreeList nodes found - falling back to Decide_Load")
End If
' ===== DRAG & DROP INITIALISIEREN =====
Initialize_DragDrop_User()
Initialize_DragDrop_Groups()
End Sub
Private Sub SimpleButton1_Click(sender As Object, e As EventArgs)
@@ -564,7 +571,7 @@ Public Class frmCockpitConfig
End Sub
Private Sub Load_Monitor_LookUp()
Try
Dim oSQL = "SELECT 0 ID UNION SELECT DISTINCT COCKPIT_ID ID FROM TBPM_MONITOR_KONFIG WITH (NOLOCK) ORDER BY COCKPIT_ID"
Dim oSQL = "SELECT 0 ID UNION SELECT DISTINCT COCKPIT_ID ID FROM TBPM_MONITOR_KONFIG WITH (NOLOCK) ORDER BY ID"
Dim oDT = DatabaseFallback.GetDatatableECM(oSQL)
LookUpEditMonitor.Properties.DataSource = oDT
@@ -928,4 +935,504 @@ Public Class frmCockpitConfig
LOGGER.Error(ex)
End Try
End Sub
Private Sub Load_Assigned_User_2_Cockpit()
Try
Dim oSQL = $"SELECT
CP_MAP.PK_MAP_COCKPIT_ID
,FK_CFG_USER_ID
,USR.USERNAME [Username]
,USR.EMAIL [Email]
,[SEQUENCE] [Reihenfolge]
FROM
TBTF_MAP_COCKPIT CP_MAP (NOLOCK) INNER JOIN
TBTF_CFG_COCKPIT CP_CONF (NOLOCK) ON CP_MAP.FK_CFG_COCKPIT_ID = CP_CONF.PK_CFG_COCKPIT_ID
INNER JOIN TBDD_USER USR (NOLOCK) ON CP_MAP.FK_CFG_USER_ID = USR.GUID
WHERE
CP_MAP.FK_CFG_COCKPIT_ID = {Selected_Cockpit_ID}"
Dim oDT As DataTable = DatabaseFallback.GetDatatableECM(oSQL)
viewAssignedUsers.Columns.Clear()
gridAssignedUsers.DataSource = oDT
' Spalten ausblenden
If viewAssignedUsers.Columns("PK_MAP_COCKPIT_ID") IsNot Nothing Then
viewAssignedUsers.Columns("PK_MAP_COCKPIT_ID").Visible = False
End If
If viewAssignedUsers.Columns("FK_CFG_USER_ID") IsNot Nothing Then
viewAssignedUsers.Columns("FK_CFG_USER_ID").Visible = False
End If
' ===== DROPDOWN FÜR REIHENFOLGE KONFIGURIEREN =====
Setup_Sequence_Dropdown(viewAssignedUsers)
Catch ex As Exception
LOGGER.Error($"Error in Load_User_2_Cockpit: {ex.Message}")
End Try
End Sub
Private Sub Load_Free_User_2_Cockpit()
Try
Dim oSQL = $"SELECT
USR.GUID AS USR_ID
,USR.USERNAME [Username]
,USR.NAME + ', ' + USR.PRENAME AS [Name, Vorname]
,USR.EMAIL [Email]
FROM
TBDD_USER USR (NOLOCK) WHERE
USR.GUID NOT IN (
SELECT
CP_MAP.FK_CFG_USER_ID
FROM
TBTF_MAP_COCKPIT CP_MAP (NOLOCK)
WHERE
CP_MAP.FK_CFG_COCKPIT_ID = {Selected_Cockpit_ID} AND CP_MAP.FK_CFG_USER_ID IS NOT NULL)"
Dim oDT As DataTable = DatabaseFallback.GetDatatableECM(oSQL)
viewAvailableUsers.Columns.Clear()
gridAvailableUsers.DataSource = oDT
' Spalten ausblenden
If viewAvailableUsers.Columns("USR_ID") IsNot Nothing Then
viewAvailableUsers.Columns("USR_ID").Visible = False
End If
Catch ex As Exception
LOGGER.Error($"Error in Load_FreeUser_2_Cockpit: {ex.Message}")
End Try
End Sub
Private Sub Load_Assigned_Groups_2_Cockpit()
Try
Dim oSQL = $"SELECT
CP_MAP.PK_MAP_COCKPIT_ID, FK_CFG_GROUP_ID, GRP.NAME [Groupname], [SEQUENCE] [Reihenfolge]
FROM
TBTF_MAP_COCKPIT CP_MAP (NOLOCK) INNER JOIN
TBTF_CFG_COCKPIT CP_CONF (NOLOCK) ON CP_MAP.FK_CFG_COCKPIT_ID = CP_CONF.PK_CFG_COCKPIT_ID
INNER JOIN TBDD_GROUPS GRP (NOLOCK) ON CP_MAP.FK_CFG_GROUP_ID = GRP.GUID
WHERE
CP_MAP.FK_CFG_COCKPIT_ID = {Selected_Cockpit_ID}"
Dim oDT As DataTable = DatabaseFallback.GetDatatableECM(oSQL)
ViewAssignedGroups.Columns.Clear()
GridAssignedGroups.DataSource = oDT
' Spalten ausblenden
If ViewAssignedGroups.Columns("PK_MAP_COCKPIT_ID") IsNot Nothing Then
ViewAssignedGroups.Columns("PK_MAP_COCKPIT_ID").Visible = False
End If
If ViewAssignedGroups.Columns("FK_CFG_GROUP_ID") IsNot Nothing Then
ViewAssignedGroups.Columns("FK_CFG_GROUP_ID").Visible = False
End If
' ===== DROPDOWN FÜR REIHENFOLGE KONFIGURIEREN =====
Setup_Sequence_Dropdown(ViewAssignedGroups)
Catch ex As Exception
LOGGER.Error($"Error in Load_Assigned_Groups_2_Cockpit: {ex.Message}")
End Try
End Sub
Private Sub Load_Free_Groups_2_Cockpit()
Try
Dim oSQL = $"SELECT
GRP.GUID AS GRP_ID
,GRP.NAME [Groupname]
FROM
TBDD_GROUPS GRP (NOLOCK) WHERE
GRP.GUID NOT IN (
SELECT
CP_MAP.FK_CFG_GROUP_ID
FROM
TBTF_MAP_COCKPIT CP_MAP (NOLOCK)
WHERE
CP_MAP.FK_CFG_COCKPIT_ID = {Selected_Cockpit_ID} AND CP_MAP.FK_CFG_GROUP_ID IS NOT NULL)
ORDER BY [Groupname]"
Dim oDT As DataTable = DatabaseFallback.GetDatatableECM(oSQL)
ViewAvailableGroups.Columns.Clear()
GridAvailableGroups.DataSource = oDT
' Spalten ausblenden
If ViewAvailableGroups.Columns("GRP_ID") IsNot Nothing Then
ViewAvailableGroups.Columns("GRP_ID").Visible = False
End If
Catch ex As Exception
LOGGER.Error($"Error in Load_Free_Groups_2_Cockpit: {ex.Message}")
End Try
End Sub
' ===== DROPDOWN FÜR REIHENFOLGE-SPALTE EINRICHTEN =====
Private Sub Setup_Sequence_Dropdown(pGridView As DevExpress.XtraGrid.Views.Grid.GridView)
Try
If pGridView.Columns("Reihenfolge") Is Nothing Then
LOGGER.Warn("Spalte 'Reihenfolge' nicht gefunden")
Exit Sub
End If
' ComboBox-Editor erstellen
Dim comboEdit As New DevExpress.XtraEditors.Repository.RepositoryItemComboBox()
' Werte 1-10 hinzufügen
For i As Integer = 1 To 10
comboEdit.Items.Add(i)
Next
' ComboBox-Eigenschaften
comboEdit.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor ' Nur Auswahl, keine manuelle Eingabe
comboEdit.DropDownRows = 10 ' Alle Werte auf einmal anzeigen
' Editor der Spalte zuweisen
pGridView.Columns("Reihenfolge").ColumnEdit = comboEdit
' Spalte editierbar machen
pGridView.OptionsBehavior.Editable = True
pGridView.Columns("Reihenfolge").OptionsColumn.AllowEdit = True
If pGridView.Name = "viewAssignedUsers" Then
If pGridView.Columns("Username") IsNot Nothing Then
pGridView.Columns("Username").OptionsColumn.AllowEdit = False
End If
If pGridView.Columns("Email") IsNot Nothing Then
pGridView.Columns("Email").OptionsColumn.AllowEdit = False
End If
Else
If pGridView.Columns("Groupname") IsNot Nothing Then
pGridView.Columns("Groupname").OptionsColumn.AllowEdit = False
End If
End If
LOGGER.Debug("Reihenfolge-Dropdown erfolgreich konfiguriert")
Catch ex As Exception
LOGGER.Error($"Error in Setup_Sequence_Dropdown: {ex.Message}")
End Try
End Sub
' ===== EVENT-HANDLER FÜR WERTVALIDIERUNG IN DER GRID-ZELLE =====
Private Sub ValidateSequenceEditor(sender As Object, e As DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgs) Handles viewAssignedUsers.ValidatingEditor, ViewAssignedGroups.ValidatingEditor
Try
Dim view As DevExpress.XtraGrid.Views.Grid.GridView = CType(sender, DevExpress.XtraGrid.Views.Grid.GridView)
' Nur bei Änderung der Reihenfolge-Spalte reagieren
If view.FocusedColumn.FieldName <> "Reihenfolge" Then
Exit Sub
End If
' PK_MAP_COCKPIT_ID aus der aktuellen Zeile holen
Dim mapId As Object = view.GetFocusedRowCellValue("PK_MAP_COCKPIT_ID")
If mapId Is Nothing OrElse IsDBNull(mapId) Then
LOGGER.Warn("PK_MAP_COCKPIT_ID ist NULL - Update abgebrochen")
e.Valid = False
e.ErrorText = "Ungültige Zeile"
Exit Sub
End If
' Alten Wert holen
Dim oldValue As Object = view.GetFocusedRowCellValue("Reihenfolge")
' Neuen Reihenfolge-Wert validieren
Dim newSequence As Integer
If Not Integer.TryParse(e.Value?.ToString(), newSequence) Then
LOGGER.Warn($"Ungültiger Reihenfolge-Wert: {e.Value}")
e.Valid = False
e.ErrorText = "Bitte geben Sie eine gültige Zahl ein (1-10)"
Exit Sub
End If
' Prüfen ob Wert im erlaubten Bereich liegt
If newSequence < 1 OrElse newSequence > 10 Then
e.Valid = False
e.ErrorText = "Reihenfolge muss zwischen 1 und 10 liegen"
Exit Sub
End If
' UPDATE-Statement ausführen
Dim updateSQL = $"UPDATE TBTF_MAP_COCKPIT
SET SEQUENCE = {newSequence},
CHANGED_WHO = '{Environment.UserName}',
CHANGED_WHEN = GETDATE()
WHERE PK_MAP_COCKPIT_ID = {mapId}"
If DatabaseFallback.ExecuteNonQueryECM(updateSQL) Then
bsitm_info_Display($"Reihenfolge für MAP_ID={mapId} auf {newSequence} aktualisiert (alter Wert: {oldValue})")
e.Valid = True
Else
LOGGER.Error($"Fehler beim Update der Reihenfolge für MAP_ID={mapId}")
bsitm_info_Display($"Fehler beim Update der Reihenfolge für MAP_ID={mapId}", True)
e.Valid = False
e.ErrorText = "Fehler beim Speichern in der Datenbank. Prüfen Sie das Log."
End If
Catch ex As Exception
LOGGER.Error($"Error in ValidateSequenceEditor: {ex.Message}")
LOGGER.Error(ex)
bsitm_info_Display($"Fehler: {ex.Message}", True)
e.Valid = False
e.ErrorText = $"Fehler: {ex.Message}"
End Try
End Sub
Sub bsitm_info_Display(msg As String, Optional err As Boolean = False)
If msg IsNot Nothing Then
bsitm_info.Caption = msg
bsitm_info.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
bsitm_info.ItemAppearance.Normal.ForeColor = Color.White
Else
bsitm_info.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
End If
End Sub
' ===== DRAG & DROP INITIALISIERUNG (im Form_Load oder Shown) =====
Private Sub Initialize_DragDrop_User()
' Ziel-Grids müssen Drop erlauben
gridAssignedUsers.AllowDrop = True
gridAvailableUsers.AllowDrop = True
' Event-Handler für Drag-Start registrieren
AddHandler viewAvailableUsers.MouseDown, AddressOf viewAvailableUsers_MouseDown
AddHandler viewAvailableUsers.MouseMove, AddressOf viewAvailableUsers_MouseMove
AddHandler viewAssignedUsers.MouseDown, AddressOf viewAssignedUsers_MouseDown
AddHandler viewAssignedUsers.MouseMove, AddressOf viewAssignedUsers_MouseMove
' Event-Handler für Drag-Over registrieren
AddHandler gridAssignedUsers.DragOver, AddressOf gridAssignedUsers_DragOver
AddHandler gridAvailableUsers.DragOver, AddressOf gridAvailableUsers_DragOver
End Sub
Private Sub Initialize_DragDrop_Groups()
' Ziel-Grids müssen Drop erlauben
GridAssignedGroups.AllowDrop = True
GridAvailableGroups.AllowDrop = True
' Event-Handler für Drag-Start registrieren
AddHandler ViewAvailableGroups.MouseDown, AddressOf viewAvailableGroups_MouseDown
AddHandler ViewAvailableGroups.MouseMove, AddressOf viewAvailableGroups_MouseMove
AddHandler ViewAssignedGroups.MouseDown, AddressOf viewAssignedGroups_MouseDown
AddHandler ViewAssignedGroups.MouseMove, AddressOf viewAssignedGroups_MouseMove
' Event-Handler für Drag-Over registrieren
AddHandler GridAssignedGroups.DragOver, AddressOf gridAssignedGroups_DragOver
AddHandler GridAvailableGroups.DragOver, AddressOf gridAvailableGroups_DragOver
End Sub
' ===== DRAG-START VON AVAILABLE USERS =====
Private dragStartPoint As Point
Private isDragging As Boolean = False
Private Sub viewAvailableUsers_MouseDown(sender As Object, e As MouseEventArgs)
If e.Button = MouseButtons.Left Then
dragStartPoint = e.Location
isDragging = False
End If
End Sub
Private Sub viewAvailableGroups_MouseDown(sender As Object, e As MouseEventArgs)
If e.Button = MouseButtons.Left Then
dragStartPoint = e.Location
isDragging = False
End If
End Sub
Private Sub viewAvailableUsers_MouseMove(sender As Object, e As MouseEventArgs)
If e.Button = MouseButtons.Left AndAlso Not isDragging Then
Dim dragDistance = Math.Abs(e.Location.X - dragStartPoint.X) + Math.Abs(e.Location.Y - dragStartPoint.Y)
If dragDistance > 5 Then ' Mindestbewegung 5 Pixel
isDragging = True
Dim hitInfo = viewAvailableUsers.CalcHitInfo(dragStartPoint)
If hitInfo.RowHandle >= 0 Then
Dim userId = viewAvailableUsers.GetRowCellValue(hitInfo.RowHandle, "USR_ID")
Dim userName = viewAvailableUsers.GetRowCellValue(hitInfo.RowHandle, "USERNAME")
If userId IsNot Nothing Then
Dim dragData = $"{userId}|{userName}"
gridAvailableUsers.DoDragDrop(dragData, DragDropEffects.Move)
End If
End If
End If
End If
End Sub
Private Sub viewAvailableGroups_MouseMove(sender As Object, e As MouseEventArgs)
If e.Button = MouseButtons.Left AndAlso Not isDragging Then
Dim dragDistance = Math.Abs(e.Location.X - dragStartPoint.X) + Math.Abs(e.Location.Y - dragStartPoint.Y)
If dragDistance > 5 Then ' Mindestbewegung 5 Pixel
isDragging = True
Dim hitInfo = ViewAvailableGroups.CalcHitInfo(dragStartPoint)
If hitInfo.RowHandle >= 0 Then
Dim groupId = ViewAvailableGroups.GetRowCellValue(hitInfo.RowHandle, "GRP_ID")
Dim groupName = ViewAvailableGroups.GetRowCellValue(hitInfo.RowHandle, "Groupname")
If groupId IsNot Nothing Then
Dim dragData = $"{groupId}|{groupName}"
GridAvailableGroups.DoDragDrop(dragData, DragDropEffects.Move)
End If
End If
End If
End If
End Sub
' ===== DRAG-START VON ASSIGNED 272|ENVELOPE-ADMINUSERS =====
Private Sub viewAssignedUsers_MouseDown(sender As Object, e As MouseEventArgs)
If e.Button = MouseButtons.Left Then
dragStartPoint = e.Location
isDragging = False
End If
End Sub
Private Sub viewAssignedGroups_MouseDown(sender As Object, e As MouseEventArgs)
If e.Button = MouseButtons.Left Then
dragStartPoint = e.Location
isDragging = False
End If
End Sub
Private Sub viewAssignedUsers_MouseMove(sender As Object, e As MouseEventArgs)
If e.Button = MouseButtons.Left AndAlso Not isDragging Then
Dim dragDistance = Math.Abs(e.Location.X - dragStartPoint.X) + Math.Abs(e.Location.Y - dragStartPoint.Y)
If dragDistance > 5 Then
isDragging = True
Dim hitInfo = viewAssignedUsers.CalcHitInfo(dragStartPoint)
If hitInfo.RowHandle >= 0 Then
Dim mapId = viewAssignedUsers.GetRowCellValue(hitInfo.RowHandle, "PK_MAP_COCKPIT_ID")
Dim userName = viewAssignedUsers.GetRowCellValue(hitInfo.RowHandle, "USERNAME")
If mapId IsNot Nothing Then
Dim dragData = $"{mapId}|{userName}"
gridAssignedUsers.DoDragDrop(dragData, DragDropEffects.Move)
End If
End If
End If
End If
End Sub
Private Sub viewAssignedGroups_MouseMove(sender As Object, e As MouseEventArgs)
If e.Button = MouseButtons.Left AndAlso Not isDragging Then
Dim dragDistance = Math.Abs(e.Location.X - dragStartPoint.X) + Math.Abs(e.Location.Y - dragStartPoint.Y)
If dragDistance > 5 Then
isDragging = True
Dim hitInfo = ViewAssignedGroups.CalcHitInfo(dragStartPoint)
If hitInfo.RowHandle >= 0 Then
Dim mapId = ViewAssignedGroups.GetRowCellValue(hitInfo.RowHandle, "PK_MAP_COCKPIT_ID")
Dim groupName = ViewAssignedGroups.GetRowCellValue(hitInfo.RowHandle, "Groupname")
If mapId IsNot Nothing Then
Dim dragData = $"{mapId}|{groupName}"
gridAssignedUsers.DoDragDrop(dragData, DragDropEffects.Move)
End If
End If
End If
End If
End Sub
' ===== DRAG-OVER EVENTS (visuelles Feedback) =====
Private Sub gridAssignedUsers_DragOver(sender As Object, e As DragEventArgs)
If e.Data.GetDataPresent(DataFormats.Text) Then
e.Effect = DragDropEffects.Move
Else
e.Effect = DragDropEffects.None
End If
End Sub
Private Sub gridAssignedGroups_DragOver(sender As Object, e As DragEventArgs)
If e.Data.GetDataPresent(DataFormats.Text) Then
e.Effect = DragDropEffects.Move
Else
e.Effect = DragDropEffects.None
End If
End Sub
Private Sub gridAvailableUsers_DragOver(sender As Object, e As DragEventArgs)
If e.Data.GetDataPresent(DataFormats.Text) Then
e.Effect = DragDropEffects.Move
Else
e.Effect = DragDropEffects.None
End If
End Sub
Private Sub gridAvailableGroups_DragOver(sender As Object, e As DragEventArgs)
If e.Data.GetDataPresent(DataFormats.Text) Then
e.Effect = DragDropEffects.Move
Else
e.Effect = DragDropEffects.None
End If
End Sub
Private Sub gridAssignedUsers_DragDrop(sender As Object, e As DragEventArgs) Handles gridAssignedUsers.DragDrop
Try
Dim data As String = e.Data.GetData(DataFormats.Text)
Dim userId As Integer = data.Split("|")(0)
Dim oInsert = $"INSERT INTO [dbo].[TBTF_MAP_COCKPIT]
([FK_CFG_COCKPIT_ID]
,[FK_CFG_USER_ID]
,[SEQUENCE]
,[ADDED_WHO])
VALUES
({Selected_Cockpit_ID}, {userId}, 0, '{USER_USERNAME}')"
If DatabaseFallback.ExecuteNonQueryECM(oInsert) Then
Load_Free_User_2_Cockpit()
Load_Assigned_User_2_Cockpit()
Else
MsgBox("Fehler beim Hinzufügen des Benutzers. Prüfen Sie Ihr Log", MsgBoxStyle.Exclamation)
End If
Catch ex As Exception
LOGGER.Error(ex)
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error adding users:")
End Try
End Sub
Private Sub gridAssignedGroups_DragDrop(sender As Object, e As DragEventArgs) Handles GridAssignedGroups.DragDrop
Try
Dim data As String = e.Data.GetData(DataFormats.Text)
Dim groupID As Integer = data.Split("|")(0)
Dim oInsert = $"INSERT INTO [dbo].[TBTF_MAP_COCKPIT]
(FK_CFG_COCKPIT_ID
,FK_CFG_GROUP_ID
,[SEQUENCE]
,ADDED_WHO)
VALUES
({Selected_Cockpit_ID}, {groupID}, 0, '{USER_USERNAME}')"
If DatabaseFallback.ExecuteNonQueryECM(oInsert) Then
Load_Free_Groups_2_Cockpit()
Load_Assigned_Groups_2_Cockpit()
Else
MsgBox("Fehler beim Hinzufügen der Gruppe. Prüfen Sie Ihr Log", MsgBoxStyle.Exclamation)
End If
Catch ex As Exception
LOGGER.Error(ex)
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error adding groups:")
End Try
End Sub
Private Sub gridAvailableUsers_DragDrop(sender As Object, e As DragEventArgs) Handles gridAvailableUsers.DragDrop
Try
Dim data As String = e.Data.GetData(DataFormats.Text)
Dim MAPID As Integer = data.Split("|")(0)
Dim oDelete = $"DELETE FROM [dbo].[TBTF_MAP_COCKPIT]
WHERE PK_MAP_COCKPIT_ID = {MAPID}"
If DatabaseFallback.ExecuteNonQueryECM(oDelete) Then
Dim omsg = "Benutzer erfolgreich entfernt."
bsitm_info_Display(omsg)
Load_Free_User_2_Cockpit()
Load_Assigned_User_2_Cockpit()
Else
MsgBox("Fehler beim Entfernen des Benutzers. Prüfen Sie Ihr Log", MsgBoxStyle.Exclamation)
End If
Catch ex As Exception
LOGGER.Error(ex)
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error removing user:")
End Try
End Sub
Private Sub gridAvailableGroups_DragDrop(sender As Object, e As DragEventArgs) Handles GridAvailableGroups.DragDrop
Try
Dim data As String = e.Data.GetData(DataFormats.Text)
Dim MAPID As Integer = data.Split("|")(0)
Dim oDelete = $"DELETE FROM [dbo].[TBTF_MAP_COCKPIT]
WHERE PK_MAP_COCKPIT_ID = {MAPID}"
If DatabaseFallback.ExecuteNonQueryECM(oDelete) Then
Dim omsg = "Gruppe erfolgreich entfernt."
bsitm_info_Display(omsg)
Load_Free_Groups_2_Cockpit()
Load_Assigned_Groups_2_Cockpit()
Else
MsgBox("Fehler beim Entfernen der Gruppe. Prüfen Sie Ihr Log", MsgBoxStyle.Exclamation)
End If
Catch ex As Exception
LOGGER.Error(ex)
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error removing group:")
End Try
End Sub
Private Sub XtraTabControl1_SelectedPageChanged(sender As Object, e As DevExpress.XtraTab.TabPageChangedEventArgs) Handles XtraTabControl1.SelectedPageChanged
Select Case XtraTabControl1.SelectedTabPageIndex
Case 0
Load_Assigned_User_2_Cockpit()
Load_Free_User_2_Cockpit()
Case 1
Load_Assigned_Groups_2_Cockpit()
Load_Free_Groups_2_Cockpit()
End Select
bsitm_info_Display("")
End Sub
End Class