diff --git a/MTableDb/MTableListBox.vb b/MTableDb/MTableListBox.vb index a61e2d2..13882fe 100644 --- a/MTableDb/MTableListBox.vb +++ b/MTableDb/MTableListBox.vb @@ -437,6 +437,24 @@ Public Class MTableAssociationGridBoxItem Next End If End If + ' Aggiorno lista tipi di lavorazione + UpdateMachiningTypeLists() + If Not IsNothing(m_SelectedMachType) Then + ' Verifico che quella selezionata sia valida anche per la macchina corrente + Dim bFound As Boolean = False + For TypeIndex = 0 To m_MachTypeList.Count - 1 + If m_MachTypeList(TypeIndex).TypeId = m_SelectedMachType.TypeId Then + m_SelectedMachType = m_MachTypeList(TypeIndex) + bFound = True + NotifyPropertyChanged("SelectedMachType") + Exit For + End If + Next + If Not bFound Then + m_SelectedMachType = m_MachTypeList(0) + NotifyPropertyChanged("SelectedMachType") + End If + End If ' Assegno alla lista delle lavorazioni della riga selezionata la lista di quelle del suo tipo If IsNothing(m_SelectedMachType) Then MachList = Nothing @@ -526,6 +544,27 @@ Public Class MTableAssociationGridBoxItem End Set End Property + Private Sub UpdateMachiningTypeLists() + ' se la lista è vuota devo caricarla + If m_MachinesMachTypeList.Count < m_MachId Then + Dim sMachineName As String = m_ActiveMachinesList(m_MachId - 1).SelectedMachine + Dim sMachineIniPath As String = IniFile.m_sMachinesRoot & "\" & m_ActiveMachinesList(m_MachId - 1).SelectedMachine & "\" & m_ActiveMachinesList(m_MachId - 1).SelectedMachine & ".ini" + If File.Exists(sMachineIniPath) Then + For Index = m_MachinesMachTypeList.Count To m_MachId - 1 + m_MachinesMachTypeList.Add(New List(Of MachineModel.MachiningsType)) + Next + m_MachinesMachTypeList(m_MachId - 1) = New List(Of MachiningsType)(MachineModel.ReadMachiningsFamilies(sMachineIniPath)) + End If + ' aggiungo elemento stringa vuota(come primo elemento) per dare la possibilità di non selezionarne nessuna operazione + If Not IsNothing(m_MachinesMachTypeList(m_MachId - 1)) Then + m_MachinesMachTypeList(m_MachId - 1).Insert(0, New MachiningsType() With {.TypeId = MCH_MY.NONE, .TypeName = String.Empty}) + Else + m_MachinesMachTypeList(m_MachId - 1) = New List(Of MachiningsType)({New MachiningsType() With {.TypeId = MCH_MY.NONE, .TypeName = String.Empty}}) + End If + End If + MachTypeList = New ObservableCollection(Of MachiningsType)(m_MachinesMachTypeList(m_MachId - 1)) + End Sub + ' Funzione che in base al tipo di lavorazione e alla macchina selezionati, imposta la lista delle lavorazioni per le combo Private Function UpdateMachiningLists() As Boolean Select Case m_SelectedMachType.TypeId @@ -699,6 +738,7 @@ Public Class MTableAssociationGridBoxItem Private m_SawRoughingList As New List(Of List(Of String)) Private m_SawFinishingList As New List(Of List(Of String)) Private m_ChiselingList As New List(Of List(Of String)) + Private Shared m_MachinesMachTypeList As New List(Of List(Of MachineModel.MachiningsType)) Sub New(bOn As Boolean, sName As String, nMachId As Integer, nShift As Integer, sOper As String, sMach As String, sMachUp As String, sMachDw As String, ByRef ActiveMachinesList As ObservableCollection(Of MTableMachineListBoxItem)) ' Inizializzo la lista delle lavorazioni solo la prima volta @@ -714,6 +754,9 @@ Public Class MTableAssociationGridBoxItem m_ChiselingList.Add(New List(Of String)) Next End If + ''If m_MachinesMachTypeList.Count = 0 Then + '' m_MachinesMachTypeList.Add(New List(Of MachineModel.MachiningsType)) + ''End If OnPar = bOn ' Inizializzo la lista dei nomi solo la prima volta If IsNothing(m_NamesList) Then @@ -759,27 +802,28 @@ Public Class MTableAssociationGridBoxItem OperationsList = New ObservableCollection(Of String)(TempOperList) End If Oper = sOper - ' Inizializzo la lista di tipi di lavorazione solo la prima volta - If IsNothing(m_MachTypeList) Then - MachTypeList = New ObservableCollection(Of MachiningsType)(MachineModel.ReadActiveMachiningsFamilies()) - ' aggiungo elemento stringa vuota(come primo elemento) per dare la possibilità di non selezionarne nessuna operazione - MachTypeList.Insert(0, New MachiningsType() With {.TypeId = MCH_MY.NONE, .TypeName = String.Empty}) - End If + ' '' Inizializzo la lista di tipi di lavorazione solo la prima volta + ''If IsNothing(m_MachTypeList) Then + '' MachTypeList = New ObservableCollection(Of MachiningsType)(MachineModel.ReadActiveMachiningsFamilies()) + '' ' aggiungo elemento stringa vuota(come primo elemento) per dare la possibilità di non selezionarne nessuna operazione + '' MachTypeList.Insert(0, New MachiningsType() With {.TypeId = MCH_MY.NONE, .TypeName = String.Empty}) + ''End If ' dall'MId recupero la macchina a cui si riferisce questa associazione e la imposto come corrente EgtSetCurrMachine(m_ActiveMachinesList(m_MachId - 1).SelectedMachine) ' Imposto MachType selezionato cercando il tipo delle lavorazioni If EgtMdbSetCurrMachining(sMach) OrElse EgtMdbSetCurrMachining(sMachUp) OrElse EgtMdbSetCurrMachining(sMachDw) Then Dim nMachType As Integer = GDB_ID.NULL EgtMdbGetCurrMachiningParam(MCH_MP.TYPE, nMachType) - For Index As Integer = 0 To MachTypeList.Count - 1 - If nMachType = MachTypeList(Index).TypeId Then - SelectedMachType = MachTypeList(Index) + For Index As Integer = 0 To m_MachTypeList.Count - 1 + If nMachType = m_MachTypeList(Index).TypeId Then + SelectedMachType = m_MachTypeList(Index) Exit For End If Next Else SelectedMachType = Nothing End If + NotifyPropertyChanged("SelectedMachType") If Not IsNothing(m_SelectedMachType) Then ' Imposto i Mach selezionati Mach = sMach diff --git a/MachineModel.vb b/MachineModel.vb index be443fe..db5ac34 100644 --- a/MachineModel.vb +++ b/MachineModel.vb @@ -41,6 +41,38 @@ Public Module MachineModel Return ActiveMachiningsFamiliesList.ToArray End Function + Friend Function ReadMachiningsFamilies(sMachineName As String) As MachiningsType() + Dim ActiveMachiningsFamiliesList As New List(Of MachiningsType) + If EgtUILib.GetPrivateProfileInt(S_MACHININGS, K_DRILLING, 0, sMachineName) <> 0 Then + ActiveMachiningsFamiliesList.Add(New MachiningsType With {.TypeId = MCH_MY.DRILLING, .TypeName = EgtMsg(MSG_MACHININGSDBPAGE + 1)}) + End If + If EgtUILib.GetPrivateProfileInt(S_MACHININGS, K_SAWING, 0, sMachineName) <> 0 Then + ActiveMachiningsFamiliesList.Add(New MachiningsType With {.TypeId = MCH_MY.SAWING, .TypeName = EgtMsg(MSG_MACHININGSDBPAGE + 2)}) + End If + If EgtUILib.GetPrivateProfileInt(S_MACHININGS, K_MILLING, 0, sMachineName) <> 0 Then + ActiveMachiningsFamiliesList.Add(New MachiningsType With {.TypeId = MCH_MY.MILLING, .TypeName = EgtMsg(MSG_MACHININGSDBPAGE + 3)}) + End If + If EgtUILib.GetPrivateProfileInt(S_MACHININGS, K_POCKETING, 0, sMachineName) <> 0 Then + ActiveMachiningsFamiliesList.Add(New MachiningsType With {.TypeId = MCH_MY.POCKETING, .TypeName = EgtMsg(MSG_MACHININGSDBPAGE + 4)}) + End If + If EgtUILib.GetPrivateProfileInt(S_MACHININGS, K_MORTISING, 0, sMachineName) <> 0 Then + ActiveMachiningsFamiliesList.Add(New MachiningsType With {.TypeId = MCH_MY.MORTISING, .TypeName = EgtMsg(MSG_MACHININGSDBPAGE + 5)}) + End If + If EgtUILib.GetPrivateProfileInt(S_MACHININGS, K_SAWROUGHING, 0, sMachineName) <> 0 Then + ActiveMachiningsFamiliesList.Add(New MachiningsType With {.TypeId = MCH_MY.SAWROUGHING, .TypeName = EgtMsg(MSG_MACHININGSDBPAGE + 6)}) + End If + If EgtUILib.GetPrivateProfileInt(S_MACHININGS, K_SAWFINISHING, 0, sMachineName) <> 0 Then + ActiveMachiningsFamiliesList.Add(New MachiningsType With {.TypeId = MCH_MY.SAWFINISHING, .TypeName = EgtMsg(MSG_MACHININGSDBPAGE + 7)}) + End If + If EgtUILib.GetPrivateProfileInt(S_MACHININGS, K_GENMACHINING, 0, sMachineName) <> 0 Then + ActiveMachiningsFamiliesList.Add(New MachiningsType With {.TypeId = MCH_MY.GENMACHINING, .TypeName = EgtMsg(MSG_MACHININGSDBPAGE + 8)}) + End If + If EgtUILib.GetPrivateProfileInt(S_MACHININGS, K_CHISELING, 0, sMachineName) <> 0 Then + ActiveMachiningsFamiliesList.Add(New MachiningsType With {.TypeId = MCH_MY.CHISELING, .TypeName = EgtMsg(MSG_MACHININGSDBPAGE + 9)}) + End If + Return ActiveMachiningsFamiliesList.ToArray + End Function + Friend Sub LoadMachiningListByType(MachiningList As List(Of String), nType As MCH_MY) Dim MachiningName As String = String.Empty EgtMdbGetFirstMachining(nType, MachiningName)