diff --git a/Aviso/My Project/AssemblyInfo.vb b/Aviso/My Project/AssemblyInfo.vb index b58c535..d5272ff 100644 --- a/Aviso/My Project/AssemblyInfo.vb +++ b/Aviso/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - - + + diff --git a/Aviso/frmAddSendungsvermerkShort.vb b/Aviso/frmAddSendungsvermerkShort.vb index ef2ef22..6a0dfea 100644 --- a/Aviso/frmAddSendungsvermerkShort.vb +++ b/Aviso/frmAddSendungsvermerkShort.vb @@ -17,10 +17,12 @@ Public Class frmAddSendungsvermerkShort Dim aktChanged As Boolean = False Private ReadOnly _anforderungCheckboxes As New List(Of CheckBox) Private ReadOnly _anhangsartIdByCheckbox As New Dictionary(Of CheckBox, Integer) + Private ReadOnly _backendBezeichnungByCodeId As New Dictionary(Of Integer, String) Private ReadOnly _selectedAnhangsartIdByCodeId As New Dictionary(Of Integer, Integer) Private ReadOnly _documentCustomNameByCodeId As New Dictionary(Of Integer, String) Private ReadOnly _documentBaseTextByCodeId As New Dictionary(Of Integer, String) Private ReadOnly _anhangsartenOptions As New List(Of AnhangsartOption) + Private ReadOnly _bereichByCodeId As New Dictionary(Of Integer, Integer) Private _selectedDocumentCodeId As Integer = 0 Private _isLoadingDocumentEditor As Boolean = False Private pnlDocumentEditor As Panel @@ -157,16 +159,25 @@ Public Class frmAddSendungsvermerkShort Private Sub SetupDynamicAnforderungCheckboxes() _anforderungCheckboxes.Clear() _anhangsartIdByCheckbox.Clear() + _backendBezeichnungByCodeId.Clear() _selectedAnhangsartIdByCodeId.Clear() _documentCustomNameByCodeId.Clear() _documentBaseTextByCodeId.Clear() + _bereichByCodeId.Clear() _selectedDocumentCodeId = 0 + If flpDocumentTabs IsNot Nothing Then + flpDocumentTabs.Controls.Clear() + End If Dim dt As DataTable = Nothing Try - dt = AvisoDAL.loadDataTableBySQL("SELECT [VermerkCodeId],[Bezeichnung],[AvisoAnhangsartId],[AnforderungBereich] FROM [VermerkeCodes] WHERE [Anforderung]=1 ORDER BY [Bezeichnung]") + dt = AvisoDAL.loadDataTableBySQL("SELECT [VermerkCodeId],[Bezeichnung],[FrontendBezeichnung],[AvisoAnhangsartId],[AnforderungBereich] FROM [VermerkeCodes] WHERE [Anforderung]=1 ORDER BY [Bezeichnung]") Catch - Return + Try + dt = AvisoDAL.loadDataTableBySQL("SELECT [VermerkCodeId],[Bezeichnung],[AvisoAnhangsartId],[AnforderungBereich] FROM [VermerkeCodes] WHERE [Anforderung]=1 ORDER BY [Bezeichnung]") + Catch + Return + End Try End Try If dt Is Nothing OrElse dt.Rows.Count = 0 Then @@ -179,6 +190,8 @@ Public Class frmAddSendungsvermerkShort Dim docsWidth = PictureBox1.Width - (docsLeft * 2) Dim docsMainHeight = Math.Max(10, cbxSonstDok.Top - docsTop - 6) Dim docsMainPanel = CreateAnforderungFlowPanel("flpDokumenteFehlenMain", docsLeft, docsTop, docsWidth, docsMainHeight, Color.WhiteSmoke) + docsMainPanel.FlowDirection = FlowDirection.LeftToRight + docsMainPanel.WrapContents = True Dim docsExtraFound = pnlSendungsVermker.Controls.Find("flpDokumenteFehlenExtra", True) If docsExtraFound IsNot Nothing AndAlso docsExtraFound.Length > 0 Then @@ -189,10 +202,26 @@ Public Class frmAddSendungsvermerkShort End If End If + PositionDocumentEditorAndUpload() + + Dim lblSonstigeVermerke As Label = TryCast(pnlSendungsVermker.Controls.Find("lblSonstigeVermerke", True).FirstOrDefault(), Label) + If lblSonstigeVermerke Is Nothing Then + lblSonstigeVermerke = New Label() + lblSonstigeVermerke.Name = "lblSonstigeVermerke" + lblSonstigeVermerke.Text = "Sonstige Vermerke:" + lblSonstigeVermerke.Font = New Font("Microsoft Sans Serif", 10.0!, FontStyle.Bold) + lblSonstigeVermerke.AutoSize = True + lblSonstigeVermerke.BackColor = Color.White + pnlSendungsVermker.Controls.Add(lblSonstigeVermerke) + End If + lblSonstigeVermerke.Left = docsLeft + lblSonstigeVermerke.Top = PictureBox1.Bottom + 8 + lblSonstigeVermerke.BringToFront() + Dim anforderungLeft = docsLeft - Dim anforderungTop = PictureBox1.Bottom + 2 + Dim anforderungTop = lblSonstigeVermerke.Bottom + 6 Dim anforderungWidth = pnlSendungsVermker.Width - (anforderungLeft * 2) - Dim anforderungHeight = Math.Max(10, Label13.Top - anforderungTop - 10) + Dim anforderungHeight = 198 Dim anforderungPanel = CreateAnforderungFlowPanel("flpAngefordert", anforderungLeft, anforderungTop, anforderungWidth, anforderungHeight, Color.White) For Each row As DataRow In dt.Rows @@ -205,9 +234,16 @@ Public Class frmAddSendungsvermerkShort Dim bezeichnung = If(IsDBNull(row("Bezeichnung")), "", CStr(row("Bezeichnung"))).Trim() If bezeichnung = "" Then Continue For + _backendBezeichnungByCodeId(id) = bezeichnung + + Dim frontendBezeichnung = bezeichnung + If dt.Columns.Contains("FrontendBezeichnung") Then + frontendBezeichnung = If(IsDBNull(row("FrontendBezeichnung")), "", CStr(row("FrontendBezeichnung"))).Trim() + If frontendBezeichnung = "" Then frontendBezeichnung = bezeichnung + End If Dim cb As New CheckBox() - cb.Text = bezeichnung + cb.Text = frontendBezeichnung cb.Tag = id cb.Margin = New Padding(0, 0, 8, 2) AddHandler cb.CheckedChanged, AddressOf DynamicAnforderungCheckboxChanged @@ -235,6 +271,7 @@ Public Class frmAddSendungsvermerkShort End If Catch End Try + _bereichByCodeId(id) = bereich If bereich = BereichDokumentMain Then cb.BackColor = Color.WhiteSmoke @@ -300,10 +337,75 @@ Public Class frmAddSendungsvermerkShort cb.Height = 20 Dim cols As Integer = 2 + Dim colGap As Integer = 14 + Dim minCbWidth As Integer = 120 + If String.Equals(container.Name, "flpDokumenteFehlenMain", StringComparison.OrdinalIgnoreCase) Then + cols = 3 + colGap = 8 + minCbWidth = 150 + End If Dim usableWidth = Math.Max(120, container.Width - 12) - Dim colGap = 14 Dim cbWidth = CInt(Math.Floor((usableWidth - ((cols - 1) * colGap)) / cols)) - cb.Width = Math.Max(120, cbWidth) + cb.Width = Math.Max(minCbWidth, cbWidth) + End Sub + + Private Sub PositionDocumentEditorAndUpload() + EnsureDocumentEditorControls() + + Dim topSectionBottom = Math.Max(cbxSonstDok.Bottom, lblErrDokument.Bottom) + + pnlDocumentEditor.Left = 8 + pnlDocumentEditor.Top = topSectionBottom + 12 + pnlDocumentEditor.Width = pnlSendungsVermker.Width - 16 + pnlDocumentEditor.Height = 152 + pnlDocumentEditor.BackColor = Color.WhiteSmoke + pnlDocumentEditor.BringToFront() + + Label5.Top = pnlDocumentEditor.Bottom + 8 + Label5.BackColor = Color.WhiteSmoke + Label5.BringToFront() + + Label20.Left = Label5.Right + 10 + Label20.Top = Label5.Top + 2 + Label20.BackColor = Color.WhiteSmoke + Label20.AutoSize = True + Label20.ForeColor = Color.FromArgb(0, 102, 153) + Label20.Text = "Bitte zuerst Dokument(e) oben auswählen." + Label20.BringToFront() + + lblCustomerUploadLanguage.Top = Label5.Bottom + 10 + lblCustomerUploadLanguage.BackColor = Color.WhiteSmoke + lblCustomerUploadLanguage.BringToFront() + cmbCustomerUploadLanguage.Top = lblCustomerUploadLanguage.Top - 3 + cmbCustomerUploadLanguage.BringToFront() + + lblCustomerUploadValidityHours.Top = lblCustomerUploadLanguage.Top + lblCustomerUploadValidityHours.BackColor = Color.WhiteSmoke + lblCustomerUploadValidityHours.BringToFront() + nudCustomerUploadValidityHours.Top = lblCustomerUploadLanguage.Top - 2 + nudCustomerUploadValidityHours.BringToFront() + + btnCustomerUploadLink.Top = lblCustomerUploadLanguage.Top - 4 + btnCustomerUploadLink.BringToFront() + + lblCustomerUploadEmail.Top = lblCustomerUploadLanguage.Top + 26 + lblCustomerUploadEmail.BackColor = Color.WhiteSmoke + lblCustomerUploadEmail.BringToFront() + txtCustomerUploadEmail.Top = lblCustomerUploadEmail.Top - 3 + txtCustomerUploadEmail.BringToFront() + + btnCustomerUploadEmail.Top = txtCustomerUploadEmail.Top - 2 + btnCustomerUploadEmail.BringToFront() + + lblCustomerUploadEmailText.Top = lblCustomerUploadEmail.Top + 22 + lblCustomerUploadEmailText.BackColor = Color.WhiteSmoke + lblCustomerUploadEmailText.BringToFront() + txtCustomerUploadEmailText.Top = lblCustomerUploadEmailText.Top - 3 + txtCustomerUploadEmailText.BringToFront() + + pnlCustomerUploadSeparator.Visible = False + + PictureBox1.Height = txtCustomerUploadEmailText.Bottom + 12 End Sub Private Sub ArrangeSections(docsMainPanel As FlowLayoutPanel, anforderungPanel As FlowLayoutPanel) @@ -331,34 +433,7 @@ Public Class frmAddSendungsvermerkShort PictureBox4.Height = (optFremd_ATB.Bottom + 12) - PictureBox4.Top - EnsureDocumentEditorControls() - pnlDocumentEditor.Left = 8 - pnlDocumentEditor.Top = PictureBox4.Bottom + 8 - pnlDocumentEditor.Width = pnlSendungsVermker.Width - 16 - pnlDocumentEditor.Height = 102 - - Label5.Top = pnlDocumentEditor.Bottom + 8 - Label20.Left = Label5.Right + 10 - Label20.Top = Label5.Top + 2 - Label20.AutoSize = True - Label20.ForeColor = Color.FromArgb(0, 102, 153) - Label20.Text = "Bitte zuerst Dokument(e) oben auswählen." - - lblCustomerUploadLanguage.Top = Label5.Bottom + 10 - cmbCustomerUploadLanguage.Top = lblCustomerUploadLanguage.Top - 3 - lblCustomerUploadValidityHours.Top = lblCustomerUploadLanguage.Top - nudCustomerUploadValidityHours.Top = lblCustomerUploadLanguage.Top - 2 - btnCustomerUploadLink.Top = lblCustomerUploadLanguage.Top - 4 - - lblCustomerUploadEmail.Top = lblCustomerUploadLanguage.Top + 26 - txtCustomerUploadEmail.Top = lblCustomerUploadEmail.Top - 3 - btnCustomerUploadEmail.Top = txtCustomerUploadEmail.Top - 2 - - lblCustomerUploadEmailText.Top = lblCustomerUploadEmail.Top + 22 - txtCustomerUploadEmailText.Top = lblCustomerUploadEmailText.Top - 3 - pnlCustomerUploadSeparator.Top = txtCustomerUploadEmailText.Bottom + 10 - - lblZustzlFreitext.Top = pnlCustomerUploadSeparator.Top + 8 + lblZustzlFreitext.Top = PictureBox4.Bottom + 8 txtDetail.Top = lblZustzlFreitext.Bottom + 4 btnOK.Top = txtDetail.Top lblErr240Zeichen.Top = txtDetail.Top - 16 @@ -369,6 +444,8 @@ Public Class frmAddSendungsvermerkShort Me.ClientSize = New Size(Me.ClientSize.Width, contentBottom) End Sub + Private flpDocumentTabs As FlowLayoutPanel + Private Sub EnsureDocumentEditorControls() If pnlDocumentEditor IsNot Nothing Then Return @@ -377,22 +454,32 @@ Public Class frmAddSendungsvermerkShort pnlDocumentEditor.BorderStyle = BorderStyle.FixedSingle pnlSendungsVermker.Controls.Add(pnlDocumentEditor) + flpDocumentTabs = New FlowLayoutPanel() + flpDocumentTabs.Location = New Point(0, 0) + flpDocumentTabs.Width = pnlDocumentEditor.Width + flpDocumentTabs.Height = 50 + flpDocumentTabs.BackColor = Color.FromArgb(220, 220, 220) + flpDocumentTabs.WrapContents = False + flpDocumentTabs.AutoScroll = True + flpDocumentTabs.Anchor = AnchorStyles.Top Or AnchorStyles.Left Or AnchorStyles.Right + pnlDocumentEditor.Controls.Add(flpDocumentTabs) + lblDocumentEditorTitle = New Label() lblDocumentEditorTitle.AutoSize = True lblDocumentEditorTitle.Font = New Font("Microsoft Sans Serif", 8.25!, FontStyle.Bold, GraphicsUnit.Point, CType(0, Byte)) - lblDocumentEditorTitle.Location = New Point(8, 8) + lblDocumentEditorTitle.Location = New Point(8, 58) lblDocumentEditorTitle.Text = "Dokumentdetails" pnlDocumentEditor.Controls.Add(lblDocumentEditorTitle) lblDocumentEditorName = New Label() lblDocumentEditorName.AutoSize = True - lblDocumentEditorName.Location = New Point(8, 30) + lblDocumentEditorName.Location = New Point(8, 80) lblDocumentEditorName.Text = "Dokumentname:" pnlDocumentEditor.Controls.Add(lblDocumentEditorName) txtDocumentEditorName = New TextBox() txtDocumentEditorName.BackColor = Color.White - txtDocumentEditorName.Location = New Point(110, 27) + txtDocumentEditorName.Location = New Point(110, 77) txtDocumentEditorName.MaxLength = 120 txtDocumentEditorName.Size = New Size(128, 20) AddHandler txtDocumentEditorName.TextChanged, AddressOf DocumentEditorInputChanged @@ -400,14 +487,14 @@ Public Class frmAddSendungsvermerkShort lblDocumentEditorAnhangsart = New Label() lblDocumentEditorAnhangsart.AutoSize = True - lblDocumentEditorAnhangsart.Location = New Point(248, 30) + lblDocumentEditorAnhangsart.Location = New Point(248, 80) lblDocumentEditorAnhangsart.Text = "Anhangsart:" pnlDocumentEditor.Controls.Add(lblDocumentEditorAnhangsart) cmbDocumentEditorAnhangsart = New ComboBox() cmbDocumentEditorAnhangsart.BackColor = Color.White cmbDocumentEditorAnhangsart.DropDownStyle = ComboBoxStyle.DropDownList - cmbDocumentEditorAnhangsart.Location = New Point(320, 27) + cmbDocumentEditorAnhangsart.Location = New Point(320, 77) cmbDocumentEditorAnhangsart.Size = New Size(124, 21) EnsureAnhangsartenOptionsLoaded() For Each o In _anhangsartenOptions @@ -418,13 +505,13 @@ Public Class frmAddSendungsvermerkShort lblDocumentEditorInfo = New Label() lblDocumentEditorInfo.AutoSize = True - lblDocumentEditorInfo.Location = New Point(8, 54) + lblDocumentEditorInfo.Location = New Point(8, 104) lblDocumentEditorInfo.Text = "Dokument Info:" pnlDocumentEditor.Controls.Add(lblDocumentEditorInfo) txtDocumentEditorInfo = New TextBox() txtDocumentEditorInfo.BackColor = Color.White - txtDocumentEditorInfo.Location = New Point(110, 51) + txtDocumentEditorInfo.Location = New Point(110, 101) txtDocumentEditorInfo.MaxLength = 500 txtDocumentEditorInfo.Size = New Size(334, 20) txtDocumentEditorInfo.Text = DefaultDocumentBaseText @@ -434,7 +521,7 @@ Public Class frmAddSendungsvermerkShort lblDocumentEditorStatus = New Label() lblDocumentEditorStatus.AutoSize = True lblDocumentEditorStatus.ForeColor = Color.FromArgb(0, 102, 153) - lblDocumentEditorStatus.Location = New Point(8, 78) + lblDocumentEditorStatus.Location = New Point(8, 128) lblDocumentEditorStatus.Text = "Wählen Sie ein Dokument, um Name und Dokument Info anzupassen." pnlDocumentEditor.Controls.Add(lblDocumentEditorStatus) End Sub @@ -445,6 +532,21 @@ Public Class frmAddSendungsvermerkShort _documentCustomNameByCodeId(_selectedDocumentCodeId) = If(txtDocumentEditorName.Text, "").Trim() _documentBaseTextByCodeId(_selectedDocumentCodeId) = If(txtDocumentEditorInfo.Text, "").Trim() + + If flpDocumentTabs IsNot Nothing Then + Dim tab = TryCast(flpDocumentTabs.Controls("tab_" & _selectedDocumentCodeId), Panel) + If tab IsNot Nothing Then + Dim lblText = TryCast(tab.Controls("lblText"), Label) + Dim lblClose = TryCast(tab.Controls("lblClose"), Label) + If lblText IsNot Nothing AndAlso lblClose IsNot Nothing Then + lblText.Text = _documentCustomNameByCodeId(_selectedDocumentCodeId) + If lblText.Text = "" Then lblText.Text = "Unbenannt" + lblText.PerformLayout() + lblClose.Location = New Point(lblText.Right + 5, 5) + tab.Width = lblClose.Right + 5 + End If + End If + End If End Sub Private Sub DocumentEditorAnhangsartChanged(sender As Object, e As EventArgs) @@ -527,6 +629,221 @@ Public Class frmAddSendungsvermerkShort Return Integer.TryParse(cb.Tag.ToString(), codeId) AndAlso codeId > 0 End Function + Private Sub ClearDocumentEditor() + _selectedDocumentCodeId = 0 + _isLoadingDocumentEditor = True + txtDocumentEditorName.Text = "" + txtDocumentEditorInfo.Text = "" + If cmbDocumentEditorAnhangsart IsNot Nothing Then + cmbDocumentEditorAnhangsart.SelectedIndex = -1 + End If + _isLoadingDocumentEditor = False + If lblDocumentEditorStatus IsNot Nothing Then + lblDocumentEditorStatus.Text = "Wählen Sie ein Dokument, um Name und Dokument Info anzupassen." + End If + End Sub + + Private Sub SelectDocument(codeId As Integer) + _selectedDocumentCodeId = codeId + + If codeId <= 0 Then + ClearDocumentEditor() + SyncTabs() + Return + End If + + Dim targetCb As CheckBox = Nothing + For Each cb In _anforderungCheckboxes + If cb.Tag IsNot Nothing AndAlso cb.Tag.ToString() = codeId.ToString() Then + targetCb = cb + Exit For + End If + Next + + If targetCb IsNot Nothing Then + Dim anhangsartId = GetEffectiveAnhangsartId(targetCb) + + Dim customName = "" + If _documentCustomNameByCodeId.ContainsKey(codeId) Then + customName = If(_documentCustomNameByCodeId(codeId), "").Trim() + Else + customName = GetAnhangsartDisplayTextById(anhangsartId) + _documentCustomNameByCodeId(codeId) = customName + End If + + Dim baseText = GetDocumentBaseTextByCodeId(codeId) + + _isLoadingDocumentEditor = True + txtDocumentEditorName.Text = customName + txtDocumentEditorInfo.Text = baseText + SelectAnhangsartInEditor(anhangsartId) + _isLoadingDocumentEditor = False + + If anhangsartId > 0 Then + _selectedAnhangsartIdByCodeId(codeId) = anhangsartId + End If + + lblDocumentEditorStatus.ForeColor = Color.FromArgb(0, 102, 153) + lblDocumentEditorStatus.Text = "Ausgewählt: " & If(targetCb.Text, "").Trim() + End If + + SyncTabs() + End Sub + + Private Function CreateTab(codeId As Integer, text As String) As Panel + Dim pnl As New Panel() + pnl.Name = "tab_" & codeId + pnl.Tag = codeId + pnl.Height = 28 + pnl.BackColor = Color.White + pnl.BorderStyle = BorderStyle.FixedSingle + pnl.Margin = New Padding(2, 4, 2, 0) + pnl.Cursor = Cursors.Hand + + Dim lblText As New Label() + lblText.Name = "lblText" + lblText.Text = If(text = "", "Unbenannt", text) + lblText.AutoSize = True + lblText.Location = New Point(5, 5) + lblText.Tag = codeId + lblText.Cursor = Cursors.Hand + AddHandler lblText.Click, AddressOf Tab_Click + pnl.Controls.Add(lblText) + + Dim lblClose As New Label() + lblClose.Name = "lblClose" + lblClose.Text = "X" + lblClose.AutoSize = True + lblClose.ForeColor = Color.Red + lblClose.Font = New Font("Microsoft Sans Serif", 8.25!, FontStyle.Bold) + lblClose.Cursor = Cursors.Hand + lblClose.Tag = codeId + AddHandler lblClose.Click, AddressOf TabClose_Click + pnl.Controls.Add(lblClose) + + lblText.PerformLayout() + lblClose.Location = New Point(lblText.Right + 5, 5) + pnl.Width = lblClose.Right + 5 + + AddHandler pnl.Click, AddressOf Tab_Click + + Return pnl + End Function + + Private Sub SyncTabs() + If flpDocumentTabs Is Nothing Then Return + + flpDocumentTabs.SuspendLayout() + + Dim requiredCodeIds As New List(Of Integer) + For Each cb In _anforderungCheckboxes + If cb.Checked Then + Dim codeId As Integer = 0 + If Integer.TryParse(cb.Tag.ToString(), codeId) Then + If _bereichByCodeId.ContainsKey(codeId) AndAlso _bereichByCodeId(codeId) = BereichDokumentMain Then + requiredCodeIds.Add(codeId) + End If + End If + End If + Next + + Dim i As Integer = flpDocumentTabs.Controls.Count - 1 + While i >= 0 + Dim pnl = TryCast(flpDocumentTabs.Controls(i), Panel) + If pnl IsNot Nothing Then + Dim codeId = CInt(pnl.Tag) + If Not requiredCodeIds.Contains(codeId) Then + flpDocumentTabs.Controls.RemoveAt(i) + pnl.Dispose() + End If + End If + i -= 1 + End While + + For Each codeId In requiredCodeIds + Dim existingTab = TryCast(flpDocumentTabs.Controls("tab_" & codeId), Panel) + Dim text = "" + If _documentCustomNameByCodeId.ContainsKey(codeId) Then + text = _documentCustomNameByCodeId(codeId) + End If + If text = "" Then + For Each cb In _anforderungCheckboxes + If cb.Tag IsNot Nothing AndAlso cb.Tag.ToString() = codeId.ToString() Then + text = cb.Text + Exit For + End If + Next + End If + + If existingTab Is Nothing Then + existingTab = CreateTab(codeId, text) + flpDocumentTabs.Controls.Add(existingTab) + Else + Dim lblText = TryCast(existingTab.Controls("lblText"), Label) + Dim lblClose = TryCast(existingTab.Controls("lblClose"), Label) + If lblText IsNot Nothing AndAlso lblClose IsNot Nothing Then + lblText.Text = If(text = "", "Unbenannt", text) + lblText.PerformLayout() + lblClose.Location = New Point(lblText.Right + 5, 5) + existingTab.Width = lblClose.Right + 5 + End If + End If + + If codeId = _selectedDocumentCodeId Then + existingTab.BackColor = Color.White + existingTab.BorderStyle = BorderStyle.FixedSingle + existingTab.Height = 28 + existingTab.Margin = New Padding(2, 2, 2, 0) + Dim lblText = TryCast(existingTab.Controls("lblText"), Label) + If lblText IsNot Nothing Then lblText.Font = New Font("Microsoft Sans Serif", 8.25!, FontStyle.Bold) + Else + existingTab.BackColor = Color.LightGray + existingTab.BorderStyle = BorderStyle.None + existingTab.Height = 25 + existingTab.Margin = New Padding(2, 5, 2, 0) + Dim lblText = TryCast(existingTab.Controls("lblText"), Label) + If lblText IsNot Nothing Then lblText.Font = New Font("Microsoft Sans Serif", 8.25!, FontStyle.Regular) + End If + Next + + flpDocumentTabs.ResumeLayout() + + If _selectedDocumentCodeId > 0 AndAlso Not requiredCodeIds.Contains(_selectedDocumentCodeId) Then + If requiredCodeIds.Count > 0 Then + SelectDocument(requiredCodeIds(0)) + Else + ClearDocumentEditor() + End If + ElseIf _selectedDocumentCodeId = 0 AndAlso requiredCodeIds.Count > 0 Then + SelectDocument(requiredCodeIds(0)) + End If + End Sub + + Private Sub Tab_Click(sender As Object, e As EventArgs) + Dim ctrl = TryCast(sender, Control) + If ctrl IsNot Nothing AndAlso ctrl.Tag IsNot Nothing Then + Dim codeId As Integer = 0 + If Integer.TryParse(ctrl.Tag.ToString(), codeId) Then + SelectDocument(codeId) + End If + End If + End Sub + + Private Sub TabClose_Click(sender As Object, e As EventArgs) + Dim ctrl = TryCast(sender, Control) + If ctrl IsNot Nothing AndAlso ctrl.Tag IsNot Nothing Then + Dim codeId As Integer = 0 + If Integer.TryParse(ctrl.Tag.ToString(), codeId) Then + For Each cb In _anforderungCheckboxes + If cb.Tag IsNot Nothing AndAlso cb.Tag.ToString() = codeId.ToString() Then + cb.Checked = False + Exit For + End If + Next + End If + End If + End Sub + Private Sub LoadDocumentEditorForCheckbox(cb As CheckBox) EnsureDocumentEditorControls() @@ -645,9 +962,28 @@ Public Class frmAddSendungsvermerkShort Private Sub DynamicAnforderungCheckboxChanged(sender As Object, e As EventArgs) Dim cb = TryCast(sender, CheckBox) If cb Is Nothing Then Return - If Not cb.Checked Then Return - LoadDocumentEditorForCheckbox(cb) + Dim bereich As Integer = 0 + Dim codeId As Integer = 0 + If cb.Tag IsNot Nothing Then + If Integer.TryParse(cb.Tag.ToString(), codeId) Then + If _bereichByCodeId.ContainsKey(codeId) Then + bereich = _bereichByCodeId(codeId) + Else + bereich = BereichAngefordert + End If + End If + End If + + If bereich = BereichAngefordert Then + Return + End If + + If cb.Checked Then + SelectDocument(codeId) + Else + SyncTabs() + End If End Sub ' Private Sub btnAbbruch_Click(sender As System.Object, e As System.EventArgs) Handles btnAbbruch.Click @@ -701,7 +1037,11 @@ Public Class frmAddSendungsvermerkShort Continue For End Try - Dim text = cb.Text.Trim() + Dim text = "" + If _backendBezeichnungByCodeId.ContainsKey(codeId) Then + text = If(_backendBezeichnungByCodeId(codeId), "").Trim() + End If + If text = "" Then text = cb.Text.Trim() Dim sendText = txtSendung.Text.Trim() If text <> "" AndAlso sendText <> "" AndAlso InStr(text, "sendung", CompareMethod.Text) = 0 Then text &= " bei Sendung '" & sendText & "'"