Imports System.Data.SqlClient Imports VERAG_PROG_ALLGEMEIN Public Class frmEintragTvNew Dim AvisoTvNewDAL As New cAvisoTvNewDAL() Dim myAvisoTvNew As cAvisoTvNew Dim hatAenderung As Boolean = False Dim Neuanlage As Boolean = False Dim list As New List(Of cAvisoTvNew)() Dim listAll As New List(Of cAvisoTvNew)() Private isInitializing As Boolean = False Public Sub New() InitializeComponent() InitializeFontComboBoxes() Icon = cMeineFunktionenAVISO.GetProgrammIcon() End Sub Private Sub frmEintragTvNew_Load(sender As Object, e As EventArgs) Handles MyBase.Load LadeStandorte() LadeTvTextBezeichnungen() LadenAlleEintraege() grpWochentage.Enabled = chkIsRecurring.Checked dgvAVISOTV.SelectionMode = DataGridViewSelectionMode.FullRowSelect dgvAVISOTV.MultiSelect = False dtpStartDate.ShowCheckBox = True dtpEndDate.ShowCheckBox = True dtpStartTime.ShowCheckBox = True dtpEndTime.ShowCheckBox = True chkIsActive.Checked = True End Sub Private Sub LadenAlleEintraege() Try AvisoTvNewDAL.LesenAlleAvisoTvNew(listAll) Catch ex As Exception MessageBox.Show("Fehler beim Laden aller Einträge: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub Private Sub LadeStandorte() Dim standorte As New List(Of String)() Try Dim conn As SqlConnection = cDatenbankAVISO.GetNewOpenConnectionWithoutError() If conn Is Nothing Then MessageBox.Show("Die Datenbankverbindung konnte nicht hergestellt werden.", "Verbindungsfehler", MessageBoxButtons.OK, MessageBoxIcon.Error) Return End If Dim sql As String = "SELECT DISTINCT Standort FROM StandorteTV ORDER BY Standort" Using cmd As New SqlCommand(sql, conn) Using dr As SqlDataReader = cmd.ExecuteReader() While dr.Read() Dim standort As String = Convert.ToString(dr("Standort")) standorte.Add(standort) End While End Using End Using Catch ex As SqlException MessageBox.Show("SQL Fehler beim Laden der Standorte: " & ex.Message, "SQL Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error) Catch ex As Exception MessageBox.Show("Allgemeiner Fehler beim Laden der Standorte: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try cbxStandort.Items.Clear() cbxStandort.Items.AddRange(standorte.ToArray()) If cbxStandort.Items.Count > 0 Then cbxStandort.SelectedIndex = 0 End Sub Private Sub initdgv() Try RemoveHandler dgvAVISOTV.SelectionChanged, AddressOf dgvAVISOTV_SelectionChanged Dim standort As String = cbxStandort.SelectedItem?.ToString() Dim showInactive As Boolean = chkShowInactive.Checked Dim gefilterteListe As List(Of cAvisoTvNew) If showInactive Then gefilterteListe = list.Where(Function(x) x.Standort = standort).ToList() Else gefilterteListe = list.Where(Function(x) x.Standort = standort AndAlso x.IsActive).ToList() End If dgvAVISOTV.DataSource = Nothing dgvAVISOTV.Rows.Clear() If gefilterteListe.Count > 0 Then dgvAVISOTV.DataSource = gefilterteListe dgvAVISOTV.Columns("TvTextBezeichnungID").HeaderText = "ID" dgvAVISOTV.Columns("TvTextBezeichnung").HeaderText = "Bezeichnung" dgvAVISOTV.Columns("FixeZeile1RTF").HeaderText = "Zeile 1" dgvAVISOTV.Columns("FixeZeile2").HeaderText = "Zeile 2" dgvAVISOTV.Columns("FixeZeile3").HeaderText = "Zeile 3" dgvAVISOTV.Columns("Standort").Visible = False dgvAVISOTV.Columns("Art").Visible = False dgvAVISOTV.Columns("StartDate").HeaderText = "Startdatum" dgvAVISOTV.Columns("EndDate").HeaderText = "Enddatum" dgvAVISOTV.Columns("StartTime").HeaderText = "Startzeit" dgvAVISOTV.Columns("EndTime").HeaderText = "Endzeit" dgvAVISOTV.Columns("IsRecurring").HeaderText = "Wiederholen" dgvAVISOTV.Columns("IsActive").HeaderText = "Aktiv" dgvAVISOTV.Columns("IsMonday").Visible = False dgvAVISOTV.Columns("IsTuesday").Visible = False dgvAVISOTV.Columns("IsWednesday").Visible = False dgvAVISOTV.Columns("IsThursday").Visible = False dgvAVISOTV.Columns("IsFriday").Visible = False dgvAVISOTV.Columns("IsSaturday").Visible = False dgvAVISOTV.Columns("IsSunday").Visible = False dgvAVISOTV.AutoResizeColumns() AddHandler dgvAVISOTV.SelectionChanged, AddressOf dgvAVISOTV_SelectionChanged If dgvAVISOTV.Rows.Count > 0 Then dgvAVISOTV.Rows(0).Selected = True dgvAVISOTV.CurrentCell = dgvAVISOTV.Rows(0).Cells(0) dgvAVISOTV_SelectionChanged(Nothing, Nothing) End If Else AddHandler dgvAVISOTV.SelectionChanged, AddressOf dgvAVISOTV_SelectionChanged ClearFields() myAvisoTvNew = Nothing End If Neuanlage = False hatAenderung = False Catch ex As Exception MessageBox.Show("Fehler beim Laden der Daten: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub Private Sub cbxStandort_SelectedValueChanged(sender As Object, e As EventArgs) Handles cbxStandort.SelectedValueChanged If list IsNot Nothing Then list.Clear() Dim selectedStandort As String = If(cbxStandort.SelectedItem IsNot Nothing, cbxStandort.SelectedItem.ToString(), "") Try AvisoTvNewDAL.LesenAvisoTvNew(0, "", selectedStandort, list) Catch ex As Exception MessageBox.Show("Fehler beim Lesen der Einträge: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error) Return End Try LadeTvTextBezeichnungen() initdgv() End Sub Private Sub btnNeu_Click(sender As Object, e As EventArgs) Dim standort As String = cbxStandort.SelectedItem?.ToString() If String.IsNullOrEmpty(standort) Then MessageBox.Show("Bitte wählen Sie einen Standort aus.", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Warning) Return End If Dim standortID As Integer = AvisoTvNewDAL.GetStandortID(standort) If standortID = 0 Then MessageBox.Show("Ungültiger Standort ausgewählt.", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error) Return End If myAvisoTvNew = New cAvisoTvNew() With { .StandortID = standortID, .Standort = standort, .Art = "", .IsActive = True } cmbTvTextBezeichnungAuswahl.SelectedIndex = -1 txtNeueTvTextBezeichnung.Text = "" Neuanlage = True hatAenderung = False Me.Text = "Neuen Eintrag hinzufügen" End Sub Public Class ComboBoxItem Public Property ID As Integer Public Property DisplayText As String Public Overrides Function ToString() As String Return DisplayText End Function End Class Private Sub cmbTvTextBezeichnungAuswahl_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbTvTextBezeichnungAuswahl.SelectedIndexChanged If isInitializing Then Return End If If cmbTvTextBezeichnungAuswahl.SelectedValue Is Nothing OrElse cmbTvTextBezeichnungAuswahl.SelectedValue Is DBNull.Value Then Return End If Try Dim selectedTvTextBezeichnungID As Integer Try selectedTvTextBezeichnungID = Convert.ToInt32(cmbTvTextBezeichnungAuswahl.SelectedValue) Debug.WriteLine("Selected TvTextBezeichnungID: " & selectedTvTextBezeichnungID) Catch ex As Exception MessageBox.Show("Ungültiger Wert für TvTextBezeichnungID: " & ex.Message, "Konvertierungsfehler", MessageBoxButtons.OK, MessageBoxIcon.Error) Return End Try If listAll Is Nothing OrElse Not listAll.Any() Then MessageBox.Show("Die Liste aller AvisoEinträge ist nicht geladen oder leer.", "Datenfehler", MessageBoxButtons.OK, MessageBoxIcon.Error) Return End If Dim selectedAviso As cAvisoTvNew = listAll.FirstOrDefault(Function(x) x.TvTextBezeichnungID = selectedTvTextBezeichnungID AndAlso x.IsActive) Dim currentStandort As String = cbxStandort.SelectedItem?.ToString() Dim currentStandortID As Integer = AvisoTvNewDAL.GetStandortID(currentStandort) If selectedAviso IsNot Nothing Then Debug.WriteLine("Gefundenes Aviso: TVID = " & selectedAviso.TVID) myAvisoTvNew = selectedAviso Neuanlage = False FillFieldsFromAviso(selectedAviso) Me.Text = "Eintrag bearbeiten" txtNeueTvTextBezeichnung.Text = "" Else Debug.WriteLine("Kein bestehender Eintrag gefunden. Neuer Eintrag wird erstellt.") myAvisoTvNew = New cAvisoTvNew() With { .IsActive = True, .StandortID = currentStandortID, .Standort = currentStandort } Neuanlage = True Me.Text = "Neuen Eintrag hinzufügen" End If Catch ex As InvalidCastException MessageBox.Show("Fehler beim Konvertieren der TvTextBezeichnungID: " & ex.Message, "Konvertierungsfehler", MessageBoxButtons.OK, MessageBoxIcon.Error) Catch ex As Exception MessageBox.Show("Ein unerwarteter Fehler ist aufgetreten: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub Private Sub InitializeFontComboBoxes() Dim fontFamilies As New List(Of String)() For Each font As FontFamily In FontFamily.Families fontFamilies.Add(font.Name) Next cmbFontFamily.DataSource = fontFamilies cmbFontFamily.SelectedItem = rtbZeile1.Font.FontFamily.Name Dim sizes As Integer() = {8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72} cmbFontSize.DataSource = sizes.Select(Function(s) s.ToString()).ToList() cmbFontSize.SelectedItem = CInt(rtbZeile1.Font.Size).ToString() AddHandler cmbFontFamily.SelectedIndexChanged, AddressOf cmbFontFamily_SelectedIndexChanged AddHandler cmbFontSize.SelectedIndexChanged, AddressOf cmbFontSize_SelectedIndexChanged End Sub ' Schriftfamilie ComboBox SelectionChanged Private Sub cmbFontFamily_SelectedIndexChanged(sender As Object, e As EventArgs) UpdateFont() End Sub ' Schriftgröße ComboBox SelectionChanged Private Sub cmbFontSize_SelectedIndexChanged(sender As Object, e As EventArgs) UpdateFont() End Sub Private Sub UpdateFont() Dim selectedFontFamily As String = If(cmbFontFamily.SelectedItem, rtbZeile1.Font.FontFamily.Name) Dim selectedFontSize As Single If Single.TryParse(cmbFontSize.SelectedItem, selectedFontSize) Then rtbZeile1.Font = New Font(selectedFontFamily, selectedFontSize, rtbZeile1.Font.Style) hatAenderung = True End If End Sub ' Methode zum Umschalten des Schriftstils Private Sub ToggleFontStyle(style As FontStyle) If rtbZeile1.SelectionFont IsNot Nothing Then Dim currentFont As Font = rtbZeile1.SelectionFont Dim newFontStyle As FontStyle If rtbZeile1.SelectionFont.Style.HasFlag(style) Then ' Entferne den Stil newFontStyle = currentFont.Style And Not style Else ' Füge den Stil hinzu newFontStyle = currentFont.Style Or style End If ' Setze die neue Schriftart rtbZeile1.SelectionFont = New Font(currentFont.FontFamily, currentFont.Size, newFontStyle) hatAenderung = True End If End Sub ' Fett (Bold) Button Click Private Sub btnBold_Click(sender As Object, e As EventArgs) Handles btnBold.Click ToggleFontStyle(FontStyle.Bold) End Sub ' Kursiv (Italic) Button Click Private Sub btnItalic_Click(sender As Object, e As EventArgs) Handles btnItalic.Click ToggleFontStyle(FontStyle.Italic) End Sub ' Unterstrichen (Underline) Button Click Private Sub btnUnderline_Click(sender As Object, e As EventArgs) Handles btnUnderline.Click ToggleFontStyle(FontStyle.Underline) End Sub ' Textfarbe ändern Button Click Private Sub btnTextColor_Click(sender As Object, e As EventArgs) Handles btnTextColor.Click If colorDialogText.ShowDialog() = DialogResult.OK Then rtbZeile1.SelectionColor = colorDialogText.Color hatAenderung = True End If End Sub ' Hintergrundfarbe ändern Button Click Private Sub btnBackColor_Click(sender As Object, e As EventArgs) Handles btnBackColor.Click If colorDialogText.ShowDialog() = DialogResult.OK Then rtbZeile1.SelectionBackColor = colorDialogText.Color hatAenderung = True End If End Sub ' Links ausrichten Button Click Private Sub btnAlignLeft_Click(sender As Object, e As EventArgs) Handles btnAlignLeft.Click rtbZeile1.SelectionAlignment = HorizontalAlignment.Left hatAenderung = True End Sub ' Mitte ausrichten Button Click Private Sub btnAlignCenter_Click(sender As Object, e As EventArgs) Handles btnAlignCenter.Click rtbZeile1.SelectionAlignment = HorizontalAlignment.Center hatAenderung = True End Sub ' Rechts ausrichten Button Click Private Sub btnAlignRight_Click(sender As Object, e As EventArgs) Handles btnAlignRight.Click rtbZeile1.SelectionAlignment = HorizontalAlignment.Right hatAenderung = True End Sub Private Sub LadeTvTextBezeichnungen() isInitializing = True Dim bezeichnungen As New List(Of cTvTextBezeichnung)() Try bezeichnungen = AvisoTvNewDAL.LadenAlleTvTextBezeichnungen() Catch ex As Exception MessageBox.Show("Fehler beim Laden der TvTextBezeichnungen: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error) isInitializing = False Return End Try Dim items As New List(Of ComboBoxItem)() For Each bezeichnung In bezeichnungen items.Add(New ComboBoxItem() With { .ID = bezeichnung.TvTextBezeichnungID, .DisplayText = bezeichnung.TvTextBezeichnung }) Next cmbTvTextBezeichnungAuswahl.DataSource = items cmbTvTextBezeichnungAuswahl.DisplayMember = "DisplayText" cmbTvTextBezeichnungAuswahl.ValueMember = "ID" cmbTvTextBezeichnungAuswahl.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList cmbTvTextBezeichnungAuswahl.SelectedIndex = -1 cmbPosition.SelectedIndex = -1 isInitializing = False Debug.WriteLine("TvTextBezeichnungen geladen:") For Each item In items Debug.WriteLine($"ID: {item.ID}, Text: {item.DisplayText}") Next End Sub Private Sub txtNeueTvTextBezeichnung_TextChanged(sender As Object, e As EventArgs) Handles txtNeueTvTextBezeichnung.TextChanged If Not String.IsNullOrWhiteSpace(txtNeueTvTextBezeichnung.Text) Then cmbTvTextBezeichnungAuswahl.SelectedIndex = -1 myAvisoTvNew = New cAvisoTvNew() With { .TvTextBezeichnung = txtNeueTvTextBezeichnung.Text.Trim(), .IsActive = True } Neuanlage = True Me.Text = "Neuen Eintrag hinzufügen" End If End Sub Private Sub FillFieldsFromAviso(ByVal aviso As cAvisoTvNew) cmbTvTextBezeichnungAuswahl.SelectedValue = aviso.TvTextBezeichnungID If Not String.IsNullOrEmpty(aviso.Position) Then cmbPosition.SelectedItem = aviso.Position Else cmbPosition.SelectedIndex = -1 End If txtNeueTvTextBezeichnung.Text = "" ' Hier setzt du die Textzeilen, wenn vorhanden rtbZeile1.Rtf = aviso.FixeZeile1RTF txtZeile2.Text = aviso.FixeZeile2 txtZeile3.Text = aviso.FixeZeile3 chkIsRecurring.Checked = aviso.IsRecurring.GetValueOrDefault(False) If aviso.StartDate.HasValue Then dtpStartDate.Value = aviso.StartDate.Value dtpStartDate.Checked = True Else dtpStartDate.Value = DateTime.Now dtpStartDate.Checked = False End If If aviso.EndDate.HasValue Then dtpEndDate.Value = aviso.EndDate.Value dtpEndDate.Checked = True Else dtpEndDate.Value = DateTime.Now dtpEndDate.Checked = False End If If aviso.StartTime.HasValue Then dtpStartTime.Value = DateTime.Today.Add(aviso.StartTime.Value) dtpStartTime.Checked = True Else dtpStartTime.Value = DateTime.Now dtpStartTime.Checked = False End If If aviso.EndTime.HasValue Then dtpEndTime.Value = DateTime.Today.Add(aviso.EndTime.Value) dtpEndTime.Checked = True Else dtpEndTime.Value = DateTime.Now dtpEndTime.Checked = False End If chkMonday.Checked = aviso.IsMonday.GetValueOrDefault(False) chkTuesday.Checked = aviso.IsTuesday.GetValueOrDefault(False) chkWednesday.Checked = aviso.IsWednesday.GetValueOrDefault(False) chkThursday.Checked = aviso.IsThursday.GetValueOrDefault(False) chkFriday.Checked = aviso.IsFriday.GetValueOrDefault(False) chkSaturday.Checked = aviso.IsSaturday.GetValueOrDefault(False) chkSunday.Checked = aviso.IsSunday.GetValueOrDefault(False) chkIsActive.Checked = aviso.IsActive ' Text-Einstellungen anwenden cmbFontFamily.SelectedItem = aviso.FontFamily cmbFontSize.SelectedItem = aviso.FontSize.ToString() rtbZeile1.SelectionFont = New Font(aviso.FontFamily, aviso.FontSize, CType([Enum].Parse(GetType(FontStyle), aviso.FontStyle), FontStyle)) rtbZeile1.SelectionColor = Color.FromName(aviso.TextColor) rtbZeile1.BackColor = Color.FromName(aviso.BackColor) Select Case aviso.TextAlignment Case "Left" rtbZeile1.SelectionAlignment = HorizontalAlignment.Left Case "Center" rtbZeile1.SelectionAlignment = HorizontalAlignment.Center Case "Right" rtbZeile1.SelectionAlignment = HorizontalAlignment.Right Case Else rtbZeile1.SelectionAlignment = HorizontalAlignment.Left End Select grpWochentage.Enabled = chkIsRecurring.Checked End Sub Private Function ConvertRtfToHtml(rtf As String) As String Using rtb As New RichTextBox() rtb.Rtf = rtf Dim sb As New System.Text.StringBuilder() ' Initialisiere die HTML-Struktur sb.Append("") Dim currentFont As System.Drawing.Font = rtb.SelectionFont Dim currentColor As Color = rtb.SelectionColor Dim currentAlignment As HorizontalAlignment = rtb.SelectionAlignment Dim text As String = rtb.Text Dim index As Integer = 0 While index < text.Length rtb.Select(index, 1) Dim font As System.Drawing.Font = rtb.SelectionFont Dim color As Color = rtb.SelectionColor Dim alignment As HorizontalAlignment = rtb.SelectionAlignment ' Beginne neue Tags, wenn sich das Format ändert If font IsNot currentFont Then ' Schließe vorherige Font-Tags If currentFont IsNot Nothing Then sb.Append("") End If ' Öffne neue Font-Tags sb.Append("") sb.Append("") currentFont = font currentColor = color End If If alignment <> currentAlignment Then ' Schließe vorherige Ausrichtung Select Case currentAlignment Case HorizontalAlignment.Left, HorizontalAlignment.Center, HorizontalAlignment.Right sb.Append("") End Select ' Öffne neue Ausrichtung Select Case alignment Case HorizontalAlignment.Left sb.Append("
") Case HorizontalAlignment.Center sb.Append("
") Case HorizontalAlignment.Right sb.Append("
") End Select currentAlignment = alignment End If ' Füge das aktuelle Zeichen hinzu (HTML-encodiert) Dim currentChar As Char = text(index) Select Case currentChar Case "<" sb.Append("<") Case ">" sb.Append(">") Case "&" sb.Append("&") Case Else sb.Append(currentChar) End Select index += 1 End While ' Schließe verbleibende Tags If currentFont IsNot Nothing Then sb.Append("") End If Select Case currentAlignment Case HorizontalAlignment.Left, HorizontalAlignment.Center, HorizontalAlignment.Right sb.Append("
") End Select sb.Append("") Return sb.ToString() End Using End Function Private Sub btnSpeichern_Click(sender As Object, e As EventArgs) Handles btnSpeichern.Click Dim verwendeteTvTextBezeichnung As String = "" Dim isNeueTvTextBezeichnung As Boolean = False Dim currentStandort As String = cbxStandort.SelectedItem?.ToString() Dim currentStandortID As Integer = 0 If Not String.IsNullOrEmpty(currentStandort) Then currentStandortID = AvisoTvNewDAL.GetStandortID(currentStandort) End If If currentStandortID = 0 Then MessageBox.Show("Ungültiger Standort ausgewählt.", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error) Return End If Dim selectedTvTextBezeichnungID As Integer = 0 If cmbTvTextBezeichnungAuswahl.SelectedIndex >= 0 AndAlso String.IsNullOrWhiteSpace(txtNeueTvTextBezeichnung.Text) Then verwendeteTvTextBezeichnung = cmbTvTextBezeichnungAuswahl.Text selectedTvTextBezeichnungID = Convert.ToInt32(cmbTvTextBezeichnungAuswahl.SelectedValue) ElseIf Not String.IsNullOrWhiteSpace(txtNeueTvTextBezeichnung.Text) Then verwendeteTvTextBezeichnung = txtNeueTvTextBezeichnung.Text.Trim() isNeueTvTextBezeichnung = True Else MessageBox.Show("Bitte wählen Sie eine TvTextBezeichnung aus oder geben Sie eine neue TvTextBezeichnung ein.", "Eingabefehler", MessageBoxButtons.OK, MessageBoxIcon.Warning) cmbTvTextBezeichnungAuswahl.Focus() Exit Sub End If Try ' Konvertiere RTF zu HTML Dim rtfContent As String = rtbZeile1.Rtf Dim htmlContent As String = ConvertRtfToHtml(rtfContent) myAvisoTvNew.TvTextBezeichnung = verwendeteTvTextBezeichnung myAvisoTvNew.StandortID = currentStandortID If cmbPosition.SelectedIndex >= 0 Then myAvisoTvNew.Position = cmbPosition.SelectedItem.ToString() Else myAvisoTvNew.Position = Nothing End If If isNeueTvTextBezeichnung Then If AvisoTvNewDAL.IstTvTextBezeichnungVorhanden(myAvisoTvNew.TvTextBezeichnung) Then MessageBox.Show("Die TvTextBezeichnung ist vorhanden. Bitte wählen Sie eine eindeutige TvTextBezeichnung.", "Eingabefehler", MessageBoxButtons.OK, MessageBoxIcon.Warning) txtNeueTvTextBezeichnung.Focus() Exit Sub End If Else myAvisoTvNew.TvTextBezeichnungID = selectedTvTextBezeichnungID End If ' Speichere den HTML-Inhalt myAvisoTvNew.FixeZeile1RTF = If(String.IsNullOrWhiteSpace(rtbZeile1.Text), Nothing, rtfContent) myAvisoTvNew.FixeZeile1HTML = If(String.IsNullOrWhiteSpace(rtbZeile1.Text), Nothing, htmlContent) myAvisoTvNew.FixeZeile2 = If(String.IsNullOrWhiteSpace(txtZeile2.Text), Nothing, txtZeile2.Text.Trim()) myAvisoTvNew.FixeZeile3 = If(String.IsNullOrWhiteSpace(txtZeile3.Text), Nothing, txtZeile3.Text.Trim()) myAvisoTvNew.IsRecurring = chkIsRecurring.Checked myAvisoTvNew.StartDate = If(dtpStartDate.Checked, CType(dtpStartDate.Value.Date, Date?), Nothing) myAvisoTvNew.EndDate = If(dtpEndDate.Checked, CType(dtpEndDate.Value.Date, Date?), Nothing) myAvisoTvNew.StartTime = If(dtpStartTime.Checked, CType(dtpStartTime.Value.TimeOfDay, TimeSpan?), Nothing) myAvisoTvNew.EndTime = If(dtpEndTime.Checked, CType(dtpEndTime.Value.TimeOfDay, TimeSpan?), Nothing) myAvisoTvNew.IsMonday = chkMonday.Checked myAvisoTvNew.IsTuesday = chkTuesday.Checked myAvisoTvNew.IsWednesday = chkWednesday.Checked myAvisoTvNew.IsThursday = chkThursday.Checked myAvisoTvNew.IsFriday = chkFriday.Checked myAvisoTvNew.IsSaturday = chkSaturday.Checked myAvisoTvNew.IsSunday = chkSunday.Checked myAvisoTvNew.IsActive = chkIsActive.Checked If Neuanlage Then myAvisoTvNew.Standort = cbxStandort.SelectedItem?.ToString() If String.IsNullOrEmpty(myAvisoTvNew.Standort) Then MessageBox.Show("Bitte wählen Sie einen Standort aus.", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Warning) Return End If End If Debug.WriteLine($"Speichern: TVID = {myAvisoTvNew.TVID}, TvTextBezeichnungID = {myAvisoTvNew.TvTextBezeichnungID}, StandortID = {myAvisoTvNew.StandortID}") ' Speichern der Einstellungen AvisoTvNewDAL.SpeichernAvisoTvNew(myAvisoTvNew) LadeTvTextBezeichnungen() list.Clear() AvisoTvNewDAL.LesenAvisoTvNew(0, "", currentStandort, list) initdgv() hatAenderung = False If isNeueTvTextBezeichnung Then MessageBox.Show("Die neue TvTextBezeichnung wurde erfolgreich gespeichert.", "Erfolg", MessageBoxButtons.OK, MessageBoxIcon.Information) cmbTvTextBezeichnungAuswahl.SelectedValue = myAvisoTvNew.TvTextBezeichnungID txtNeueTvTextBezeichnung.Text = "" Else MessageBox.Show("Die Änderungen wurden erfolgreich gespeichert.", "Erfolg", MessageBoxButtons.OK, MessageBoxIcon.Information) End If Catch ex As Exception MessageBox.Show("Fehler beim Speichern der Daten: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub Private Sub btnLoeschen_Click(sender As Object, e As EventArgs) Handles btnLoeschen.Click If myAvisoTvNew Is Nothing OrElse myAvisoTvNew.TVID = 0 Then MessageBox.Show("Bitte wählen Sie einen Eintrag zum Deaktivieren aus.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information) Return End If Dim antwort As DialogResult = MessageBox.Show("Möchten Sie den ausgewählten Eintrag wirklich deaktivieren?", "Deaktivieren bestätigen", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) If antwort = DialogResult.Yes Then Try AvisoTvNewDAL.SetzeAufInaktiv(myAvisoTvNew.TVID) list.Clear() AvisoTvNewDAL.LesenAvisoTvNew(0, "", cbxStandort.SelectedItem?.ToString(), list) initdgv() ClearFields() myAvisoTvNew = Nothing Neuanlage = False hatAenderung = False MessageBox.Show("Der Eintrag wurde erfolgreich deaktiviert.", "Erfolg", MessageBoxButtons.OK, MessageBoxIcon.Information) Catch ex As Exception MessageBox.Show("Fehler beim Deaktivieren des Eintrags: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End If End Sub Private Sub dgvAVISOTV_SelectionChanged(sender As Object, e As EventArgs) Handles dgvAVISOTV.SelectionChanged If dgvAVISOTV.CurrentRow IsNot Nothing AndAlso dgvAVISOTV.CurrentRow.DataBoundItem IsNot Nothing Then Dim selectedAviso As cAvisoTvNew = CType(dgvAVISOTV.CurrentRow.DataBoundItem, cAvisoTvNew) If selectedAviso IsNot Nothing Then myAvisoTvNew = selectedAviso FillFieldsFromAviso(selectedAviso) Neuanlage = False hatAenderung = False Me.Text = "Eintrag bearbeiten" End If End If End Sub Private Sub btnAbbrechen_Click(sender As Object, e As EventArgs) Handles btnAbbrechen.Click If hatAenderung Then Dim antwort As DialogResult = MessageBox.Show("Es liegen ungespeicherte Änderungen vor. Möchten Sie das Fenster trotzdem schließen?", "Ungespeicherte Änderungen", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) If antwort = DialogResult.No Then Exit Sub End If Me.Close() End Sub Private Sub txt_TextChanged(sender As Object, e As EventArgs) Handles rtbZeile1.TextChanged, txtZeile2.TextChanged, txtZeile3.TextChanged, dtpStartDate.ValueChanged, dtpEndDate.ValueChanged, dtpStartTime.ValueChanged, dtpEndTime.ValueChanged, chkIsRecurring.CheckedChanged, chkMonday.CheckedChanged, chkTuesday.CheckedChanged, chkWednesday.CheckedChanged, chkThursday.CheckedChanged, chkFriday.CheckedChanged, chkSaturday.CheckedChanged, chkSunday.CheckedChanged, chkIsActive.CheckedChanged, cmbTvTextBezeichnungAuswahl.SelectedIndexChanged, txtNeueTvTextBezeichnung.TextChanged hatAenderung = True End Sub Private Sub frmEintragTvNew_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing If hatAenderung Then Dim antwort As DialogResult = MessageBox.Show("Es liegen ungespeicherte Änderungen vor. Möchten Sie das Fenster trotzdem schließen?", "Ungespeicherte Änderungen", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) If antwort = DialogResult.No Then e.Cancel = True End If End Sub Private Sub chkIsRecurring_CheckedChanged(sender As Object, e As EventArgs) Handles chkIsRecurring.CheckedChanged grpWochentage.Enabled = chkIsRecurring.Checked End Sub Private Sub ClearFields() cmbTvTextBezeichnungAuswahl.SelectedIndex = -1 cmbPosition.SelectedIndex = -1 txtNeueTvTextBezeichnung.Text = "" rtbZeile1.Text = "" txtZeile2.Text = "" txtZeile3.Text = "" dtpStartDate.Value = DateTime.Now dtpStartDate.Checked = False dtpEndDate.Value = DateTime.Now dtpEndDate.Checked = False dtpStartTime.Value = DateTime.Now dtpStartTime.Checked = False dtpEndTime.Value = DateTime.Now dtpEndTime.Checked = False chkIsRecurring.Checked = False chkMonday.Checked = False chkTuesday.Checked = False chkWednesday.Checked = False chkThursday.Checked = False chkFriday.Checked = False chkSaturday.Checked = False chkSunday.Checked = False chkIsActive.Checked = True grpWochentage.Enabled = False End Sub Private Sub chkShowInactive_CheckedChanged_1(sender As Object, e As EventArgs) Handles chkShowInactive.CheckedChanged initdgv() End Sub End Class