Imports System Imports System.Data Imports System.Data.SqlTypes Imports System.Data.SqlClient Imports System.IO Public Class frmLifeCycle Dim clslc As New TKB.VV.Lifecycle.clslifeCycle Dim Produkt As New TKB.VV.Lifecycle.clsProdukt Dim msg As New TKB.VV.Utils.MyMessage Dim FormReadonly As Boolean = False Dim FormDataChanged As Boolean = False Dim IsNewProdukt As Boolean = False Dim SpaltenTitel As New TKB.VV.Utils.Tabellenspalte Dim sec As New TKB.VV.Utils.MySecurity Dim WithEvents evh As Generic_Event_Handler = Globals.Generic_Event_Handler Dim selnode As Integer = 0 Dim CopyMode As Boolean = False Dim SaveBackcolor As Object Dim ProduktCopy As New TKB.VV.Lifecycle.clsProduktCopy Dim Seltype As Integer = TKB.VV.Lifecycle.clslifeCycle.SelectionType.alle Dim alleprodukte As Boolean = False Dim isgetdata As Boolean = False Dim ChangeChecker_Enabled As Boolean = True Dim Abgeloestmit_Value As Integer = -1 #Region "Closing / Check_Changes" ''' ''' Schliessen des Formulars ''' ''' ''' ''' Private Sub FormularClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing If Me.FormReadonly = True Then Exit Sub If Check_Changes() = False Then e.Cancel = True Else Produkt.Dispose() Me.Dispose() End If End Sub ''' ''' Prüfung, ob Datenänderungen vorgenommen wurden. ''' ''' Private Function Check_Changes() As Boolean If Me.FormReadonly Then Return True Exit Function End If Dim msgres As MsgBoxResult If Me.FormDataChanged Or CtlPhasen1.HasChanges Then msgres = msg.Show_MessageYesNoCancel(3) Select Case msgres Case MsgBoxResult.Yes Save_data() Return True Case MsgBoxResult.Cancel Return False Case MsgBoxResult.No Me.FormDataChanged = False Return True End Select Else Return True End If End Function #End Region #Region "Formular" Sub New() InitializeComponent() Me.CtlPhasen1.ConnectionString = Globals.sConnectionString End Sub Sub New(ByVal tag As Integer, Optional alleProdukte As Boolean = False) ' Dieser Aufruf ist für den Designer erforderlich. InitializeComponent() Me.selnode = tag Me.alleprodukte = alleProdukte ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. End Sub Private Sub dtPicker_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles dtAbgeloestAm.Leave, dtEntscheidungsterminNachfolgeprodukt.Leave, dtNaechsteUeberpruefung.Leave Dim s As String Dim obj As DateTimePicker = sender s = obj.Name End Sub #End Region #Region "Buttons/Menu" ''' ''' Formular schliessen ''' ''' ''' ''' Private Sub TSBtnQuit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnQuit.Click Me.Close() End Sub ''' ''' Sicherungs-Button betätigt ''' ''' ''' ''' Private Sub TSBtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnSave.Click Me.Save_data() End Sub ''' ''' Neuer Datensatz erstellen ''' ''' ''' ''' Private Sub TSBtnNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnNew.Click If Me.TreeStruktur.SelectedNode.Tag < 1 Then msg.show_standardmessage(896, MsgBoxStyle.Critical) Exit Sub End If If Me.Check_Changes = False Then Exit Sub Me.Get_Data(Me.Produkt.Add_New) Me.IsNewProdukt = True End Sub ''' ''' Aktueller Datensatz inaktivieren ''' ''' ''' ''' Private Sub TSBtnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnDelete.Click If Me.TreeStruktur.SelectedNode.Tag < 1 Then msg.show_standardmessage(896, MsgBoxStyle.Critical) Exit Sub End If If msg.Show_MessageYesNo(295) = MsgBoxResult.Yes Then Me.Produkt.Delete_Produkt(Me.TreeStruktur.SelectedNode.Tag) 'TSBtnSuche_Click(sender, e) Me.TreeStruktur.SelectedNode = Me.TreeStruktur.Nodes(0) 'Me.Close() End If End Sub #End Region #Region "Eventhandler ChangeEreignisse" ''' ''' Allg Eventhandler für Chanage-Ereignise festlegen ''' ''' ''' Private Sub AddChanges(ByVal Container As Control) Dim l As New List(Of Control) Me.GetControl(Me, "*", l) Dim evh As EventHandler = AddressOf ChangesMade For Each c As Control In l If TypeOf c Is TextBox Then Dim ctl As TextBox = c AddHandler ctl.TextChanged, evh End If If TypeOf c Is MaskedTextBox Then Dim ctl As MaskedTextBox = c AddHandler ctl.TextChanged, evh End If If TypeOf c Is ComboBox Then Dim ctl As ComboBox = c AddHandler ctl.SelectedValueChanged, evh End If If TypeOf c Is RichTextBox Then Dim ctl As RichTextBox = c AddHandler ctl.TextChanged, evh End If If TypeOf c Is CheckBox Then If c.Name <> "cboxNurAktive" Then Dim ctl As CheckBox = c AddHandler ctl.CheckedChanged, evh End If End If If TypeOf c Is DateTimePicker Then Dim ctl As DateTimePicker = c AddHandler ctl.ValueChanged, evh End If If TypeOf c Is CheckedListBox Then Dim ctl As CheckedListBox = c AddHandler ctl.ItemCheck, AddressOf ChecketListBoxChange End If Next End Sub ''' ''' Envent-Handler für Change-Ereignisse ''' ''' ''' ''' Private Sub ChangesMade(ByVal sender As Object, ByVal e As System.EventArgs) If ChangeChecker_Enabled = False Then Exit Sub Me.FormDataChanged = True Dim objtype As System.Type = sender.GetType If objtype.Name = "MaskedTextBox" Then Dim o As MaskedTextBox = sender If o.Text = "01.01.1900" Then o.Text = " . . " End If End Sub Private Sub ChecketListBoxChange(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemCheckEventArgs) Me.FormDataChanged = True End Sub ''' ''' Sucht in den Base-Controls sämtliche Controls mit dem Namen in "Key" (Wildcards * möglich) und listet ''' die gefundnen Controls in der Liste L zur weiteren Bearbeitung ''' ''' Base-Contrlo (z.B. aktuelles Formular ''' Schlüssel welcher gesucht werden soll ''' Liste der gefundenen Objekte ''' True wenn eines oder mehr Controls gefunden wurden, false wenn kein Control gefunden wurde. ''' ''' Private Function GetControl(ByVal BaseControl As Control, ByVal Key As String, ByRef L As List(Of Control), Optional ByVal ReturnAtFirstElement As Boolean = False) As Boolean If L Is Nothing Then L = New List(Of Control) Dim Gut As Boolean Dim ReturnFlag As Boolean = False If Key IsNot Nothing Then Key = Key.ToLower If BaseControl.HasChildren = True Then For Each ctl As Control In BaseControl.Controls Gut = False If Key Is Nothing Then Gut = True Else If ctl.Name.Length >= Key.Length Then Key = Key.ToLower If Key.StartsWith("*") Then If Key.Substring(1) = ctl.Name.ToLower.Substring(ctl.Name.Length - (Key.Length - 1), Key.Length - 1) Then Gut = True ElseIf Key.EndsWith("*") Then If Key.Substring(0, Key.Length - 1) = ctl.Name.ToLower.Substring(0, Key.Length - 1) Then Gut = True Else If Key = ctl.Name.ToLower Then Gut = True End If End If End If If Gut = True Then L.Add(ctl) If ReturnAtFirstElement = True Then ReturnFlag = True End If If ReturnFlag = False Then Call GetControl(ctl, Key, L) End If Next End If If L.Count - 1 > -1 Then Return True Else Return False End If End Function #End Region #Region "Daten" ''' ''' Daten ab DB laden uns ins Form befüllen ''' ''' ''' Private Sub Get_Data(ByVal Produktnr As Integer) Me.IsGetdata = True Try Me.GrpStammdaten.Enabled = False Me.GrpLifeCycle.Enabled = False Me.GrpBilder.Enabled = False Me.GrpDokumente.Enabled = False Produkt.Get_Produkt(Produktnr) If Produkt.bIstStruktur = True Then Me.GrpStammdaten.Visible = False Me.GrpLifeCycle.Visible = False Me.GrpDokumente.Visible = False Me.GrpBilder.Visible = False Me.GrpAenderungsnachweis.Visible = False Me.GrpAblösung.Visible = False Me.GrpTermine.Visible = False Exit Sub Else Me.GrpStammdaten.Visible = True Me.GrpLifeCycle.Visible = True Me.GrpDokumente.Visible = True Me.GrpBilder.Visible = True Me.GrpAenderungsnachweis.Visible = True Me.GrpAblösung.Visible = True Me.GrpTermine.Visible = True End If Try If Produkt.iVerweisnr.Value > 0 Then Me.txtProduktname.Enabled = False Else Me.txtProduktname.Enabled = True Catch ex As Exception Me.txtProduktname.Enabled = True End Try Me.txtProduktname.Text = Produkt.sBezeichnung.Value Me.txtBemerkung.Text = Produkt.sBeschreibung.Value Me.txtVersion.Text = Produkt.sVersion.Value Me.txtStatusBemerkung.Text = "" Try Me.txtStatusBemerkung.Text = Produkt.sStatusbemerkung.Value Catch ex As Exception End Try Try Me.cbboxAbgeloest_mit.SelectedValue = Produkt.iAbgeloest_durch_produktnr.Value Me.Abgeloestmit_Value = Produkt.iAbgeloest_durch_produktnr.Value Catch Me.cbboxAbgeloest_mit.SelectedValue = -1 Me.Abgeloestmit_Value = -1 End Try Me.txtAbgeloestdurchwen.Text = Produkt.sAbgeloest_durch.ToString Me.txtTerminBemerkung.Text = Produkt.sTerminBemerkung.Value.ToString If Produkt.daAbgeloest_am.IsNull Then Me.txtAbgeloestam.Text = "01.01.1900" Else Me.txtAbgeloestam.Text = Produkt.daAbgeloest_am.ToString If Me.txtAbgeloestam.Text <> " . ." Then Me.GrpAblösung.BackColor = Color.LightPink Else Me.GrpAblösung.BackColor = Me.GrpAenderungsnachweis.BackColor End If If Produkt.daEntscheidungstermin.IsNull Then Me.txtEntscheidungsterminNachfolgeprodukt.Text = "01.01.1900" Else Me.txtEntscheidungsterminNachfolgeprodukt.Text = Produkt.daEntscheidungstermin.ToString End If If Produkt.daNächste_Ueberprüfung.IsNull Then Me.txtNaechsteUeberpruefung.Text = "01.01.1900" Else Me.txtNaechsteUeberpruefung.Text = Produkt.daNächste_Ueberprüfung.ToString End If Me.cbboxProdukttyp.SelectedValue = Produkt.iProdukttypNr.Value If Produkt.iStatusNr = 0 Then Me.cbEingesetzt.Checked = False Else Me.cbEingesetzt.Checked = True Me.txterstellt_am.Text = Produkt.daErstellt_am.ToString Me.txtmutiert_am.Text = Produkt.daMutiert_am.ToString Me.txtmutierer.Text = Produkt.MutiererText Me.CtlPhasen1.FormReadonly = Me.FormReadonly Me.CtlPhasen1.Produktnr = Me.Produkt.iLC_ProduktNr.Value Me.CtlPhasen1.HasChanges = False Me.CtlPictures1.FormReadOnly = Me.FormReadonly Try Me.LCDOkumente.Show_Editfunctions = Me.FormReadonly <> True Me.LCDOkumente.ProduktNr = Me.Produkt.iLC_ProduktNr.Value Catch End Try sec.Set_Form_Security(Me) Me.FormDataChanged = False Catch ex As Exception MsgBox(ex.Message) Try For Each ctl As ToolStripButton In Me.ToolStrip1.Items ctl.Enabled = False Next Catch End Try Me.TSBtnQuit.Enabled = True Finally Me.GrpStammdaten.Enabled = True Me.GrpLifeCycle.Enabled = True Me.GrpBilder.Enabled = True Me.GrpDokumente.Enabled = True End Try Me.FormDataChanged = False Me.isgetdata = False End Sub Private Sub Set_Checkedlistbox(ByRef clb As CheckedListBox, ByRef data As DataTable) Dim i As Integer For i = 0 To clb.Items.Count - 1 clb.SetItemCheckState(i, CheckState.Unchecked) Next Dim chk As Integer = 0 Dim ii As Integer Dim oc As CheckedListBox.ObjectCollection = clb.Items For i = 0 To data.Rows.Count - 1 For ii = 0 To oc.Count - 1 If oc.Item(ii).item(0) = data.Rows(i).Item(2) Then clb.SetItemCheckState(ii, CheckState.Checked) End If Next Next End Sub ''' ''' Daten ab Form speichern ''' ''' Private Sub Save_data() Produkt.sBeschreibung = New SqlTypes.SqlString(CType(Me.txtBemerkung.Text, String)) Produkt.sBezeichnung = New SqlTypes.SqlString(CType(Me.txtProduktname.Text, String)) Produkt.sVersion = New SqlTypes.SqlString(CType(Me.txtVersion.Text, String)) If cbboxAbgeloest_mit.Text <> "" Then Produkt.iAbgeloest_durch_produktnr = New SqlInt32(CType(Me.cbboxAbgeloest_mit.SelectedValue, Int32)) Else Produkt.iAbgeloest_durch_produktnr = New SqlInt32(CType(0, Int32)) End If Produkt.sAbgeloest_durch = New SqlString(CType(Me.txtAbgeloestdurchwen.Text, String)) If IsDate(Me.txtAbgeloestam.Text) Then Produkt.daAbgeloest_am = New SqlTypes.SqlDateTime(CType(Me.txtAbgeloestam.Text, DateTime)) Else Produkt.daAbgeloest_am = New SqlTypes.SqlDateTime(CType(SqlDateTime.Null, DateTime)) End If If IsDate(Me.txtEntscheidungsterminNachfolgeprodukt.Text) Then Produkt.daEntscheidungstermin = New SqlTypes.SqlDateTime(CType(Me.txtEntscheidungsterminNachfolgeprodukt.Text, DateTime)) Else Produkt.daEntscheidungstermin = New SqlTypes.SqlDateTime(CType(SqlDateTime.Null, DateTime)) End If If IsDate(Me.txtNaechsteUeberpruefung.Text) Then Produkt.daNächste_Ueberprüfung = New SqlTypes.SqlDateTime(CType(Me.txtNaechsteUeberpruefung.Text, DateTime)) Else Produkt.daNächste_Ueberprüfung = New SqlTypes.SqlDateTime(CType(SqlDateTime.Null, DateTime)) End If Produkt.sTerminBemerkung = New SqlString(CType(Me.txtTerminBemerkung.Text, String)) If Me.cbEingesetzt.Checked Then Produkt.iStatusNr = New SqlTypes.SqlInt32(CType(1, Int32)) Else Produkt.iStatusNr = New SqlTypes.SqlInt32(CType(0, Int32)) End If Produkt.iProdukttypNr = New SqlTypes.SqlInt32(CType(Me.cbboxProdukttyp.SelectedValue, Int32)) Produkt.Save_Data() CtlPhasen1.Save_Phasen() Me.FormDataChanged = False ' TreeStruktur.Nodes.Sort() Me.TreeStruktur.SelectedNode.Text = Produkt.sBezeichnung.Value 'clslc.Update_Treesearch(Produkt.iLC_ProduktNr.Value, Produkt.iLC_ProduktNr_Parent.Value, Produkt.sBezeichnung.Value, Produkt.sBeschreibung.Value) Try Me.TreeStruktur.SelectedNode.Parent.Nodes.Sort() Catch End Try Me.FormDataChanged = False End Sub Private Function Get_CheckedItems(ByRef clb As CheckedListBox) As String Dim i As Integer = 0 Dim s As String = "" For i = 1 To clb.CheckedItems.Count s = s + clb.CheckedItems(i).ToString Next Return s End Function #End Region Private Sub frmLifeCycle_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.F5 Then Try Dim tn As New DevComponents.AdvTree.Node tn = Me.TreeStruktur.SelectedNode Me.TreeStruktur.Nodes.Clear() clslc.Load_Treestrukutr(Me.TreeStruktur, Me.Seltype) clslc.Init_Search(Me.TreeStruktur) clslc.Search_First(Me.TreeStruktur, 0, tn.Text) Exit Sub '201507023 Me.TreeStruktur.ExpandAll() 'Me.TreeStruktur.SelectedNode.Parent.ExpandAll() Try Me.TreeStruktur.SelectedNode = clslc.TreeView_GetRootNode(Me.TreeStruktur, tn) Application.DoEvents() Me.TreeStruktur.SelectedNode.Collapse() Application.DoEvents() Me.TreeStruktur.SelectedNode.ExpandAll() Application.DoEvents() Me.TreeStruktur.SelectedNode = tn Application.DoEvents() Catch ex As Exception MsgBox(ex.Message) End Try Me.TreeStruktur.SelectedNode.EnsureVisible() Catch End Try End If End Sub Private Sub frmLifeCycle_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.TreeStruktur.NodeStyleSelected = Me.TreeStruktur.Styles(1) clslc.IMGLIST = Me.ImageList2 load_images() clslc.Load_Treestrukutr(Me.TreeStruktur, TKB.VV.Lifecycle.clslifeCycle.SelectionType.nur_eingesetzt) Me.TsBtnFilter.Text = "Filter: Eingesetzte Produkte" If Me.alleprodukte Then clslc.Load_Treestrukutr(Me.TreeStruktur, TKB.VV.Lifecycle.clslifeCycle.SelectionType.alle) Me.TsBtnFilter.Text = "Filter: Alle Produkte" End If Me.cbboxProdukttyp.DataSource = clslc.Produkttypen Me.cbboxProdukttyp.DisplayMember = "Bezeichnung" Me.cbboxProdukttyp.ValueMember = "LC_Produkttypnr" 'TreeStruktur.Nodes.Sort() Me.CtlPhasen1.ConnectionString = Globals.sConnectionString Me.CtlPhasen1.Mitarbeiternr = Globals.clsmitarbeiter.iMitarbeiternr.Value Me.LCDOkumente.ConnectionString = Globals.sConnectionString Me.LCDOkumente.Mitarbeiternr = Globals.clsmitarbeiter.iMitarbeiternr Me.LCDOkumente.Doktype = 1 Me.LCDOkumente.TempFilePath = Globals.clsapplication.sTmp_filepath.ToString Try Me.LCDOkumente.ProduktNr = Me.TreeStruktur.SelectedNode.Tag Catch End Try '2015-07-23 'Me.TreeStruktur.ExpandAll() Me.TreeStruktur.CollapseAll() clslc.Get_Produktliste() Me.cbboxAbgeloest_mit.DataSource = clslc.Produkte Me.cbboxAbgeloest_mit.DisplayMember = "Bezeichnung" Me.cbboxAbgeloest_mit.ValueMember = "id" AddChanges(Me) sec.Set_Form_Security(Me) If Me.TSBtnSave.Enabled = False Or Me.TSBtnSave.Visible = False Then Me.FormReadonly = True Me.TSBtnCopy.Enabled = False Me.TSBtnNew.Enabled = False Me.TSBtnDelete.Enabled = False Me.TSBtnTools.Enabled = False Me.TreeStruktur.AllowDrop = False 'Me.ctxMenuStruktur.Enabled = False 'Me.TreeStruktur.DragDropEnabled = False Me.cbboxAbgeloest_mit.Enabled = False Me.cbboxProdukttyp.Enabled = False Else Me.FormReadonly = False 'Me.ctxMenuStruktur.Enabled = True 'Me.TreeStruktur.DragDropEnabled = True End If If selnode <> 0 Then Me.TreeStruktur.SelectedNode = clslc.FindNode(Me.TreeStruktur.Nodes, selnode, selnode) Else Me.TreeStruktur.SelectedNode = Me.TreeStruktur.Nodes(0) End If If Me.FormReadonly Then sec.Set_Form_Readonly(Me) End If clslc.Clear_Search() End Sub Sub load_images() Me.ImgList.Images.Clear() Dim filesList As String() = Directory.GetFiles(Application.StartupPath + "\LCIcons") Dim files As String For Each files In filesList 'files = files.Replace(files.Substring(0, files.LastIndexOf("\") + 1), "") ImgList.Images.Add(Bitmap.FromFile(files)) Next End Sub Private Sub TreeStruktur_AfterNodeDrop(sender As Object, e As DevComponents.AdvTree.TreeDragDropEventArgs) Handles TreeStruktur.AfterNodeDrop If CopyMode Then Dim tn As New DevComponents.AdvTree.Node Dim tn1 As New DevComponents.AdvTree.Node tn1 = e.Node.Copy tn = e.Node.Copy Dim newkey As Integer newkey = ProduktCopy.Add_New(Produkt.iLC_ProduktNr.Value, e.NewParentNode.Tag) tn.Tag = newkey tn.Style = Me.TreeStruktur.Styles(2) e.NewParentNode.Nodes.Add(tn) e.NewParentNode.Nodes.Sort() e.OldParentNode.Nodes.Add(tn1) e.OldParentNode.Nodes.Sort() e.Node.Remove() Me.CopyMode = False Me.ToolStripLabelCopyMode.Visible = False Me.TreeStruktur.BackColor = SaveBackcolor clslc.Get_Produkte(False, Me.Seltype) Me.TreeStruktur.SelectedNode = clslc.FindNode(Me.TreeStruktur.Nodes, newkey, newkey) TreeStruktur_Click(sender, e) Exit Sub End If For Each n As DevComponents.AdvTree.Node In e.Nodes If clslc.IstCopy(n.Tag) Then Dim pc As New TKB.VV.Lifecycle.clsProduktCopy pc.iLc_produkt_copynr = New SqlInt32(CType(n.Tag, Int32)) pc.cpMainConnectionProvider = Globals.conn pc.SelectOne() pc.iLc_produkt_parentnr = New SqlInt32(CType(e.NewParentNode.Tag, Int32)) pc.Save_Data() Else Produkt.Get_Produkt(n.Tag) Produkt.iLC_ProduktNr_Parent = New SqlInt32(CType(e.NewParentNode.Tag, Int32)) Produkt.Save_Data() End If e.NewParentNode.Nodes.Sort() Next Me.TreeStruktur.SelectedNode = clslc.FindNode(Me.TreeStruktur.Nodes, e.Node.Tag, e.Node.Tag) End Sub Private Sub TreeStruktur_AfterNodeSelect(sender As Object, e As DevComponents.AdvTree.AdvTreeNodeEventArgs) Handles TreeStruktur.AfterNodeSelect If clslc.IstStruktur(Me.TreeStruktur.SelectedNode.Tag) Then Me.TreeStruktur.DragDropEnabled = False Else Me.TreeStruktur.DragDropEnabled = True End If TreeStruktur_Click(sender, e) refresh_cbbox_abloesung() End Sub Private Sub TreeStruktur_BeforeNodeSelect(sender As Object, e As DevComponents.AdvTree.AdvTreeNodeCancelEventArgs) Handles TreeStruktur.BeforeNodeSelect If Check_Changes() = False Then e.Cancel = True Else ' Me.Save_data() End If End Sub Private Sub TreeStruktur_Click(sender As Object, e As EventArgs) Handles TreeStruktur.Click Me.Cursor = Cursors.WaitCursor Try Me.GrpBilder.Enabled = False If clslc.IstCopy(Me.TreeStruktur.SelectedNode.Tag) Then Get_Data(clslc.get_originalid(Me.TreeStruktur.SelectedNode.Tag)) Me.GrpStammdaten.Enabled = False Me.GrpAblösung.Enabled = False Me.GrpTermine.Enabled = False Else Get_Data(Me.TreeStruktur.SelectedNode.Tag) Me.GrpStammdaten.Enabled = True Me.GrpAblösung.Enabled = True Me.GrpTermine.Enabled = True End If Me.LCDOkumente.ProduktNr = Me.TreeStruktur.SelectedNode.Tag Application.DoEvents() If Me.GrpBilder.Visible = True Then Me.GrpBilder.Enabled = True Me.CtlPictures1.Connectionstring = Globals.sConnectionString Me.CtlPictures1.Produktnr = Me.Produkt.iLC_ProduktNr.Value Me.CtlPictures1.Mitarbeiternr = Globals.clsmitarbeiter.iMitarbeiternr.Value Me.CtlPictures1.TempfilePath = Globals.clsapplication.sTmp_filepath Me.CtlPictures1.Refresh() End If Catch End Try Me.Cursor = Cursors.Default End Sub Private Sub DateTimePicker_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dtAbgeloestAm.ValueChanged, dtEntscheidungsterminNachfolgeprodukt.ValueChanged, dtNaechsteUeberpruefung.ValueChanged Dim s As String Dim obj As DateTimePicker = sender s = obj.Name s = "txt" + s.Substring(2, s.Length - 2) Dim l As New List(Of Control) Dim txtb As MaskedTextBox GetControl(Me, s, l) For Each ctl As Control In l txtb = CType(ctl, MaskedTextBox) txtb.Text = obj.Value Next End Sub Private Sub frmLifeCycle_Resize(sender As Object, e As EventArgs) Handles MyBase.Resize Me.GrpBilder.Width = Me.Panel1.Width / 2 End Sub Private Sub NeuesElementToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NeuesElementToolStripMenuItem.Click Produkt.Add_New(Me.TreeStruktur.SelectedNode.Tag) Produkt.bIstStruktur = New SqlBoolean(CType(False, Boolean)) Produkt.sBezeichnung = New SqlString(CType("Neues Element", String)) If Produkt.Get_Image_for_Element Then Produkt.iImageindex = New SqlInt32(CType(Me.TreeStruktur.SelectedNode.ImageIndex, Int32)) Else Produkt.iImageindex = New SqlInt32(CType(-1, Int32)) End If Produkt.Save_Data() Dim NewNode As New DevComponents.AdvTree.Node NewNode.Text = "Neues Element" NewNode.ImageIndex = Produkt.iImageindex.Value NewNode.Tag = Produkt.iLC_ProduktNr.Value Me.TreeStruktur.SelectedNode.Nodes.Add(NewNode) If NewNode.Parent.Expanded = False Then NewNode.Parent.Expand() TreeStruktur.SelectedNode = clslc.FindNode(TreeStruktur.Nodes, NewNode.Tag, NewNode.Tag) Get_Data(NewNode.Tag) End Sub #Region "EVH" Private Sub evh_Icon_Changed(keyvalue As Integer, Iconid As Integer) Handles evh.Icon_Changed Try Dim foundnode As DevComponents.AdvTree.Node foundnode = Me.clslc.FindNode(Me.TreeStruktur.Nodes, keyvalue, keyvalue) foundnode.ImageIndex = Iconid Catch End Try End Sub Private Function get_Icon(ByVal node As DevComponents.AdvTree.Node, Optional newNode As Boolean = False) As Integer If node.ImageIndex > 20 Then Return node.ImageIndex If node.Nodes.Count > 0 And node.ImageIndex < 10 Then Return node.ImageIndex + 10 End If Return node.ImageIndex End Function #End Region Private Sub EintragLöschenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles EintragLöschenToolStripMenuItem.Click Try If Me.TreeStruktur.SelectedNode.Tag < 1 Then msg.show_standardmessage(896, MsgBoxStyle.Critical) Exit Sub End If Dim pn = Me.TreeStruktur.SelectedNode.Parent If clslc.IstCopy(Me.TreeStruktur.SelectedNode.Tag) Then If msg.Show_MessageYesNo(101) = MsgBoxResult.No Then Exit Sub ProduktCopy.Get_Produkt(Me.TreeStruktur.SelectedNode.Tag) ProduktCopy.Delete_Produkt() Me.TreeStruktur.SelectedNode.Remove() clslc.Get_Produkte(False, Me.Seltype) Me.TreeStruktur.Nodes.Clear() clslc.Load_Treestrukutr(Me.TreeStruktur, Me.Seltype) '2015-07.23 'Me.TreeStruktur.ExpandAll() Try Me.TreeStruktur.SelectedNode = clslc.FindNode(Me.TreeStruktur.Nodes, pn.tag, pn.tag) Me.TreeStruktur.SelectedNode.ExpandAll() Catch Me.TreeStruktur.SelectedNode = Me.TreeStruktur.Nodes(0) End Try Me.TreeStruktur.SelectedNode.EnsureVisible() Me.Cursor = Cursors.Default Exit Sub End If If Me.TreeStruktur.SelectedNodes.Count = 1 Then If Me.TreeStruktur.SelectedNode.Nodes.Count < 1 Then If msg.Show_MessageYesNo(101) = MsgBoxResult.No Then Exit Sub Me.Cursor = Cursors.WaitCursor Delete_Entries() Me.TreeStruktur.Nodes.Clear() clslc.Load_Treestrukutr(Me.TreeStruktur, Me.Seltype) '23.07.2015 'Me.TreeStruktur.ExpandAll() Try Me.TreeStruktur.SelectedNode = clslc.FindNode(Me.TreeStruktur.Nodes, pn.tag, pn.tag) Me.TreeStruktur.SelectedNode.ExpandAll() Catch Me.TreeStruktur.SelectedNode = Me.TreeStruktur.Nodes(0) End Try Me.TreeStruktur.SelectedNode.EnsureVisible() Me.Cursor = Cursors.Default Exit Sub End If If Me.TreeStruktur.SelectedNodes.Count > 1 Then 'If msg.Show_MessageYesNo(101) = MsgBoxResult.No Then Exit Sub Me.Cursor = Cursors.WaitCursor Delete_Entries() Me.TreeStruktur.Nodes.Clear() clslc.Load_Treestrukutr(Me.TreeStruktur, Me.Seltype) '23-07.2015 'Me.TreeStruktur.ExpandAll() Try Me.TreeStruktur.SelectedNode = clslc.FindNode(Me.TreeStruktur.Nodes, pn.tag, pn.tag) Me.TreeStruktur.SelectedNode.ExpandAll() Catch Me.TreeStruktur.SelectedNode = Me.TreeStruktur.Nodes(0) End Try Me.TreeStruktur.SelectedNode.EnsureVisible() Me.Cursor = Cursors.Default Exit Sub End If Catch End Try End Sub Dim Allnodes As List(Of String) = New List(Of String) Dim subnodes As List(Of String) = New List(Of String) Dim dn As DevComponents.AdvTree.Node Function Check_Delete() As Boolean Dim i As Integer Allnodes.Clear() subnodes.Clear() For Each n As DevComponents.AdvTree.Node In Me.TreeStruktur.SelectedNodes subnodes = GetChildren(n) For i = 0 To subnodes.Count - 1 Allnodes.Add(subnodes(i)) Next Allnodes.Add(n.Tag) Next For i = Allnodes.Count - 1 To 0 Step -1 Dim s As String s = Produkt.Check_Delete(Allnodes(i), 1) If s <> "" Then MsgBox("Das Produkt oder ein untergeornetes Produkt wird noch verwendet und kann nicht gelöscht werden." + vbCrLf + vbCrLf + s, MsgBoxStyle.Exclamation, "Produkt löschen") Return False End If Next Return True End Function Function Check_Subnodes() As Boolean Dim pl As New DataTable Allnodes.Clear() subnodes.Clear() clslc.Get_Produktliste() pl = clslc.Produkte.Copy Dim showmessage As Boolean = False Dim s As String Dim i As Integer For Each n As DevComponents.AdvTree.Node In Me.TreeStruktur.SelectedNodes s = s + n.Text + vbCrLf subnodes = GetChildren(n) For i = 0 To subnodes.Count - 1 For Each r As DataRow In pl.Rows If r.Item(0) = subnodes(i) Then s = s + "- " + r.Item("Bezeichnung") + vbCrLf showmessage = True End If Next Next Next If showmessage = True Then Dim f As New frmDeleteBestaetigung f.TextBox1.Text = s f.ShowDialog() If f.DialogResult = Windows.Forms.DialogResult.OK Then Return True Else Return False Else Return True End If End Function Sub Delete_Entries() Dim i As Integer If Check_Delete() = False Then Exit Sub If check_subnodes = False Then Exit Sub Allnodes.Clear() subnodes.Clear() For Each n As DevComponents.AdvTree.Node In Me.TreeStruktur.SelectedNodes subnodes = GetChildren(n) For i = 0 To subnodes.Count - 1 Allnodes.Add(subnodes(i)) Next Allnodes.Add(n.Tag) Next For i = Allnodes.Count - 1 To 0 Step -1 Produkt.Delete(Allnodes(i)) Try Dim tn As New DevComponents.AdvTree.Node tn = clslc.FindNode(Me.TreeStruktur.Nodes, Allnodes(i), Allnodes(i)) tn.Remove() Catch ex As Exception End Try Next End Sub Function GetChildren(parentNode As DevComponents.AdvTree.Node) As List(Of String) Dim nodes As List(Of String) = New List(Of String) GetAllChildren(parentNode, nodes) Return nodes End Function Sub GetAllChildren(parentNode As DevComponents.AdvTree.Node, nodes As List(Of String)) For Each childNode As DevComponents.AdvTree.Node In parentNode.Nodes nodes.Add(childNode.Tag) GetAllChildren(childNode, nodes) Next End Sub Private Sub TSBtnSuche_Click(sender As Object, e As EventArgs) Handles TSBtnSuche.Click If Check_Changes() = False Then Exit Sub 'clslc.Init_Search() clslc.Init_Search(Me.TreeStruktur) clslc.Search_first(Me.TreeStruktur, 0, Me.ToolStriptxtSuche.Text) 'Me.TreeStruktur.SelectedNode = clslc.SearchNode(Me.TreeStruktur, Trim(Me.ToolStriptxtSuche.Text)) End Sub Private Sub TSBtnNext_Click(sender As Object, e As EventArgs) Handles TSBtnNext.Click If Check_Changes() = False Then Exit Sub 'Me.TreeStruktur.SelectedNode = clslc.FindNextNode(Me.TreeStruktur) clslc.Search_next(Me.TreeStruktur, Me.TreeStruktur.SelectedNode.Tag, Me.ToolStriptxtSuche.Text) End Sub Private Sub ToolStriptxtSuche_KeyDown(sender As Object, e As KeyEventArgs) Handles ToolStriptxtSuche.KeyDown If e.KeyCode = Keys.Enter Then If Check_Changes() = False Then Exit Sub TSBtnSuche_Click(sender, e) End If End Sub Private Sub TSBtnPrevious_Click(sender As Object, e As EventArgs) Handles TSBtnPrevious.Click If Check_Changes() = False Then Exit Sub 'Me.TreeStruktur.SelectedNode = clslc.FindPrevNode(Me.TreeStruktur) clslc.Search_prev(Me.TreeStruktur, Me.TreeStruktur.SelectedNode.Tag, Me.ToolStriptxtSuche.Text) End Sub Private Sub TSBtnFirst_Click(sender As Object, e As EventArgs) Handles TSBtnFirst.Click If Check_Changes() = False Then Exit Sub 'Me.TreeStruktur.SelectedNode = clslc.FindFirst(Me.TreeStruktur) clslc.Search_first(Me.TreeStruktur, 0, Me.ToolStriptxtSuche.Text) End Sub Private Sub TSBtnLast_Click(sender As Object, e As EventArgs) Handles TSBtnLast.Click clslc.Search_LAST(Me.TreeStruktur, 0, Me.ToolStriptxtSuche.Text) End Sub Private Sub TSBtnFilterAufheben_Click(sender As Object, e As EventArgs) Handles TSBtnFilterAufheben.Click If Check_Changes() = False Then Exit Sub Me.ToolStriptxtSuche.Text = "" clslc.clear_search() End Sub Private Sub ToolStripDropDownButton1_Click(sender As Object, e As EventArgs) Handles TSBtnTools.Click End Sub Private Sub PhasenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles PhasenToolStripMenuItem.Click Dim f As New frmDomainEditorPhase '("lc_phase") f.MdiParent = Me.MdiParent f.Show() End Sub Private Sub StrukturToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles StrukturToolStripMenuItem.Click Dim f As New LCStrukturEditor f.ShowDialog() Dim tn As New DevComponents.AdvTree.Node tn = Me.TreeStruktur.SelectedNode Me.TreeStruktur.Nodes.Clear() clslc.Load_Treestrukutr(Me.TreeStruktur, Me.Seltype) '2015-07-23 'Me.TreeStruktur.ExpandAll() Me.TreeStruktur.CollapseAll() Try Me.TreeStruktur.SelectedNode = clslc.FindNode(Me.TreeStruktur.Nodes, tn.Tag, tn.Tag) Catch Me.TreeStruktur.SelectedNode = Me.TreeStruktur.Nodes(0) End Try Me.TreeStruktur.SelectedNode.EnsureVisible() End Sub Private Sub KnotenÖffenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles KnotenÖffenToolStripMenuItem.Click Me.TreeStruktur.SelectedNode.ExpandAll() End Sub Private Sub KnotenSchliessenToolStripMenuItem_Click_1(sender As Object, e As EventArgs) Handles KnotenSchliessenToolStripMenuItem.Click Me.TreeStruktur.SelectedNode.CollapseAll() End Sub Private Sub InNeuemFensterÖffnenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles InNeuemFensterÖffnenToolStripMenuItem.Click Dim f As New frmLifeCycle(Me.TreeStruktur.SelectedNode.Tag) f.MdiParent = Me.MdiParent f.Show() End Sub Private Sub ctxMenuStruktur_Opening(sender As Object, e As ComponentModel.CancelEventArgs) Handles ctxMenuStruktur.Opening Me.NeuesElementToolStripMenuItem.Visible = True Me.SymbolÄndernToolStripMenuItem.Visible = True Me.UrsprungAnzeigenToolStripMenuItem.Visible = False Me.UrsprungInNeuemFensterAnzeigenToolStripMenuItem.Visible = False Me.KopienAnzeigenToolStripMenuItem.Visible = False If clslc.IstStruktur(Me.TreeStruktur.SelectedNode.Tag) Then Me.EintragLöschenToolStripMenuItem.Visible = False Me.SymbolÄndernToolStripMenuItem.Visible = False Me.SymbolEntfernenToolStripMenuItem.Visible = False Else Me.EintragLöschenToolStripMenuItem.Visible = True Me.SymbolÄndernToolStripMenuItem.Visible = True Me.SymbolEntfernenToolStripMenuItem.Visible = True Me.KopienAnzeigenToolStripMenuItem.Visible = True Dim clspc As New TKB.VV.Lifecycle.clsProduktCopy If clspc.Count_Copies(Me.TreeStruktur.SelectedNode.Tag) = 0 Then Me.KopienAnzeigenToolStripMenuItem.Enabled = False Else Me.KopienAnzeigenToolStripMenuItem.Enabled = True End If End If If clslc.IstCopy(Me.TreeStruktur.SelectedNode.Tag) Then Me.NeuesElementToolStripMenuItem.Visible = False Me.SymbolÄndernToolStripMenuItem.Visible = False Me.UrsprungAnzeigenToolStripMenuItem.Visible = True Me.UrsprungInNeuemFensterAnzeigenToolStripMenuItem.Visible = True Me.KopienAnzeigenToolStripMenuItem.Visible = False End If End Sub Private Sub TreeStruktur_DragDrop(sender As Object, e As DragEventArgs) Handles TreeStruktur.DragDrop If e.Data.GetDataPresent("System.Windows.Forms.TreeNode", True) Then Dim SourceNode As TreeNode SourceNode = CType(e.Data.GetData("System.Windows.Forms.TreeNode"), TreeNode) Dim clientpoint As Point = TreeStruktur.PointToClient(New Point(e.X, e.Y)) Dim destnode As DevComponents.AdvTree.Node = TreeStruktur.GetNodeAt(clientpoint.Y) Produkt.Add_New(destnode.Tag) Produkt.iVerweisnr = New SqlInt32(CType(SourceNode.Tag, Int32)) Produkt.iImageindex = New SqlInt32(CType(destnode.ImageIndex, Int32)) Produkt.sBezeichnung = New SqlString(CType(SourceNode.Text, String)) Produkt.Save_Data() Dim newnode As New DevComponents.AdvTree.Node newnode.ImageIndex = Produkt.iImageindex.Value newnode.Tag = Produkt.iLC_ProduktNr.Value newnode.Text = Produkt.sBezeichnung.ToString destnode.Nodes.Add(newnode) TreeStruktur.SelectedNode = clslc.FindNode(Me.TreeStruktur.Nodes, newnode.Tag, newnode.Tag) TreeStruktur.DragDropEnabled = True End If End Sub Private Sub TreeStruktur_DragEnter(sender As Object, e As DragEventArgs) Handles TreeStruktur.DragEnter If e.Data.GetDataPresent("System.Windows.Forms.TreeNode", True) Then 'TreeNode found allow move effect e.Effect = DragDropEffects.Move Me.TreeStruktur.DragDropEnabled = False Else 'No TreeNode found, prevent move e.Effect = DragDropEffects.None End If End Sub Private Sub TreeStruktur_DragLeave(sender As Object, e As EventArgs) Handles TreeStruktur.DragLeave Me.TreeStruktur.DragDropEnabled = True End Sub Private Sub TreeStruktur_DragOver(sender As Object, e As DragEventArgs) Handles TreeStruktur.DragOver If e.Data.GetDataPresent("System.Windows.Forms.TreeNode", True) = False Then Exit Sub e.Effect = DragDropEffects.Move End Sub Private Sub TreeStruktur_KeyDown(sender As Object, e As KeyEventArgs) Handles TreeStruktur.KeyDown If e.KeyCode = Keys.F5 Then frmLifeCycle_KeyDown(sender, e) Exit Sub End If If e.KeyCode = Keys.C Then If CopyMode = False Then CopyMode = True Me.ToolStripLabelCopyMode.Visible = True SaveBackcolor = Me.TreeStruktur.BackColor Me.TreeStruktur.BackColor = Color.PapayaWhip Else CopyMode = False Me.TreeStruktur.BackColor = SaveBackcolor Me.ToolStripLabelCopyMode.Visible = False End If End If End Sub Private Sub SymbolÄndernToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SymbolÄndernToolStripMenuItem.Click Dim f As New frmIconSelector f.Images = Me.ImgList f.ShowDialog() If f.DialogResult = Windows.Forms.DialogResult.OK Then Me.TreeStruktur.SelectedNode.ImageIndex = f.SelectedImage Produkt.iImageindex = New SqlInt32(CType(f.SelectedImage, Int32)) Produkt.Save_Data() End If End Sub Private Sub NurEingesetzteToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NurEingesetzteToolStripMenuItem.Click Me.TsBtnFilter.Text = "Filter: Eingesetzte Produkte" Me.Seltype = TKB.VV.Lifecycle.clslifeCycle.SelectionType.nur_eingesetzt clslc.Load_Treestrukutr(Me.TreeStruktur, TKB.VV.Lifecycle.clslifeCycle.SelectionType.nur_eingesetzt) Me.TreeStruktur.SelectedNode = Me.TreeStruktur.Nodes(0) 'Me.TreeStruktur.ExpandAll() End Sub Private Sub NurNichtEingesetzteToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NurNichtEingesetzteToolStripMenuItem.Click Me.TsBtnFilter.Text = "Filter: Nicht eingesetzte Produkte" Me.Seltype = TKB.VV.Lifecycle.clslifeCycle.SelectionType.nur_nicht_eingesetzt clslc.Load_Treestrukutr(Me.TreeStruktur, TKB.VV.Lifecycle.clslifeCycle.SelectionType.nur_nicht_eingesetzt) Me.TreeStruktur.SelectedNode = Me.TreeStruktur.Nodes(0) 'Me.TreeStruktur.ExpandAll() End Sub Private Sub AlleToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AlleToolStripMenuItem.Click Me.TsBtnFilter.Text = "Filter: Alle Produkte" Me.Seltype = TKB.VV.Lifecycle.clslifeCycle.SelectionType.alle clslc.Load_Treestrukutr(Me.TreeStruktur, TKB.VV.Lifecycle.clslifeCycle.SelectionType.alle) Me.TreeStruktur.SelectedNode = Me.TreeStruktur.Nodes(0) ' Me.TreeStruktur.ExpandAll() End Sub Private Sub cbboxAbgeloest_mit_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbboxAbgeloest_mit.SelectedIndexChanged If Me.cbboxAbgeloest_mit.Text <> "" Then Me.btnAbgeloestesProdukt.Enabled = True Else Me.btnAbgeloestesProdukt.Enabled = False End Sub Private Sub btnAbgeloestesProdukt_Click(sender As Object, e As EventArgs) Handles btnAbgeloestesProdukt.Click Try Dim f As New frmLifeCycle(Me.cbboxAbgeloest_mit.SelectedValue, True) f.MdiParent = Me.MdiParent f.Show() Catch End Try End Sub Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click Dim f As New frmLifeCiclyReporting f.imglist = Me.ImgList f.MdiParent = Me.MdiParent f.Show() End Sub Private Sub ProdukttypToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ProdukttypToolStripMenuItem.Click Dim f As New frmDomainEditor("lc_produkttyp") f.MdiParent = Me.MdiParent f.Show() End Sub Private Sub txtAbgeloestam_TextChanged(sender As Object, e As EventArgs) Handles txtAbgeloestam.TextChanged If Me.txtAbgeloestam.Text <> " . ." Then Me.GrpAblösung.BackColor = Color.LightPink Else Me.GrpAblösung.BackColor = Me.GrpAenderungsnachweis.BackColor If Me.isgetdata = True Then Exit Sub If Me.txtAbgeloestam.Text = " . ." Then Me.txtAbgeloestdurchwen.Text = "" Else Me.txtAbgeloestdurchwen.Text = Produkt.Get_Mutierer(Globals.clsmitarbeiter.iMitarbeiternr.Value) If Me.cbEingesetzt.Checked Then If MsgBox("Produkt ist als 'eingesetzt' markiert. Hacken entfernen? ", vbYesNo + vbQuestion) = MsgBoxResult.Yes Then Me.cbEingesetzt.Checked = False End If End If End If End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim f As New frmStrukturSelect(TKB.VV.Lifecycle.clslifeCycle.SelectionType.nur_eingesetzt, TKB.VV.Lifecycle.clslifeCycle.SingleMultiSelectionType.SingleSelection, Me.TreeStruktur.SelectedNode.Tag) f.ImgList = Me.ImgList f.TreeStruktur.ImageList = Me.ImgList f.ShowDialog() If f.DialogResult = Windows.Forms.DialogResult.OK Then Me.cbboxAbgeloest_mit.SelectedValue = f.SingleNode End If End Sub Private Sub SQLAbfragenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SQLAbfragenToolStripMenuItem.Click Dim f As New frmDomainEditor("lc_sql") f.MdiParent = Me.MdiParent f.Show() End Sub Private Sub cbboxAbgeloest_mit_DropDown(sender As Object, e As EventArgs) Handles cbboxAbgeloest_mit.DropDown End Sub Private Sub GrpAblösung_MouseEnter(sender As Object, e As EventArgs) Handles GrpAblösung.MouseEnter End Sub Sub refresh_cbbox_abloesung() Me.GrpAblösung.Enabled = False Me.ChangeChecker_Enabled = False Me.Cursor = Cursors.WaitCursor Me.cbboxAbgeloest_mit.BeginUpdate() 'Me.cbboxAbgeloest_mit.Enabled = False Dim SaveValue As Integer Try SaveValue = Me.cbboxAbgeloest_mit.SelectedValue SaveValue = Me.Abgeloestmit_Value Catch ex As Exception SaveValue = -1 End Try clslc.Produkte.Rows.Clear() clslc.Get_Produktliste() For Each r As DataRow In clslc.Produkte.Rows If r("eingesetzt") = 0 And r("id") <> SaveValue Then r.Delete() End If Next clslc.Produkte.AcceptChanges() Dim i As Integer subnodes.Clear() For Each n As DevComponents.AdvTree.Node In Me.TreeStruktur.SelectedNodes subnodes = GetChildren(n) Next For i = 0 To subnodes.Count - 1 For Each r As DataRow In clslc.Produkte.Rows If r(0) = subnodes(i) Then r.Delete() clslc.Produkte.AcceptChanges() Exit For End If Next Next For Each r As DataRow In clslc.Produkte.Rows If r.Item(0) = Me.TreeStruktur.SelectedNode.Tag Then r.Delete() clslc.Produkte.AcceptChanges() Exit For End If Next clslc.Produkte.AcceptChanges() Me.cbboxAbgeloest_mit.DataSource = Nothing Me.cbboxAbgeloest_mit.Items.Clear() Me.cbboxAbgeloest_mit.DataSource = clslc.Produkte Me.cbboxAbgeloest_mit.DisplayMember = "Bezeichnung" Me.cbboxAbgeloest_mit.ValueMember = "id" If SaveValue <> -1 Then Me.cbboxAbgeloest_mit.SelectedValue = SaveValue Me.cbboxAbgeloest_mit.EndUpdate() 'Me.cbboxAbgeloest_mit.Enabled = True Me.Cursor = Cursors.Default Me.ChangeChecker_Enabled = True Me.GrpAblösung.Enabled = True End Sub Private Sub SymbolEntfernenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SymbolEntfernenToolStripMenuItem.Click Me.TreeStruktur.SelectedNode.ImageIndex = -1 Produkt.iImageindex = New SqlInt32(CType(-1, Int32)) Produkt.Save_Data() End Sub Private Sub UrsprungAnzeigenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles UrsprungAnzeigenToolStripMenuItem.Click Show_Ursprung(Me.TreeStruktur.SelectedNode.Tag, False) End Sub Sub Show_Ursprung(ByVal tag As Integer, ByVal newwindow As Boolean) Dim pc As New TKB.VV.Lifecycle.clsProduktCopy pc.cpMainConnectionProvider = Globals.conn pc.iLc_produkt_copynr = New SqlInt32(CType(tag, Int32)) pc.SelectOne() Dim newtag As Integer = pc.iLc_produktnr pc.Dispose() If newwindow = True Then Dim f As New frmLifeCycle(newtag) f.MdiParent = Me.MdiParent f.Show() Else Me.TreeStruktur.SelectedNode = clslc.FindNode(Me.TreeStruktur.Nodes, newtag, newtag) End If End Sub Private Sub UrsprungInNeuemFensterAnzeigenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles UrsprungInNeuemFensterAnzeigenToolStripMenuItem.Click Show_Ursprung(Me.TreeStruktur.SelectedNode.Tag, True) End Sub Private Sub KopienAnzeigenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles KopienAnzeigenToolStripMenuItem.Click Dim f As New frmKopien(Me.TreeStruktur.SelectedNode.Tag, Me.TreeStruktur.SelectedNode.Text, Me.ParentForm) f.MdiParent = Me.MdiParent f.Show() End Sub Private Sub ToolStrip1_ItemClicked(sender As Object, e As ToolStripItemClickedEventArgs) Handles ToolStrip1.ItemClicked End Sub Private Sub AlleKnotenÖffnenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AlleKnotenÖffnenToolStripMenuItem.Click TreeStruktur.ExpandAll() End Sub Private Sub AlleKnotenSchliessenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AlleKnotenSchliessenToolStripMenuItem.Click Me.TreeStruktur.CollapseAll() End Sub End Class