8c1a945426
- Create pagine dei parametri da visualizzare per ciascun tipo di lavorazione del DB Lavorazioni, composte dai nuovi controlli StringParamV, CheckParamV, ComboParamV - Le pagine del Legno o del Marmo sono caricate in base al parametro Material del file INI della Macchina usata
241 lines
8.0 KiB
VB.net
241 lines
8.0 KiB
VB.net
Imports System.Collections.ObjectModel
|
|
Imports EgtUILib
|
|
|
|
Public Module CurrentMachine
|
|
|
|
' Flag modalità Office
|
|
Private m_bOffice As Boolean = False
|
|
|
|
' File ini della macchina
|
|
Private m_sMachIniFile As String = String.Empty
|
|
|
|
' Massimo id della lista materiali nel file ini
|
|
Private m_MaxIdMat As Integer = 0
|
|
|
|
' Materiale correntemente attivo (dell'ultimo grezzo impostato)
|
|
Private m_CurrMat As Material = Nothing
|
|
|
|
Friend ReadOnly Property sMachIniFile As String
|
|
Get
|
|
Return m_sMachIniFile
|
|
End Get
|
|
End Property
|
|
|
|
' Lista dei materiali
|
|
Private m_Materials As New ObservableCollection(Of Material)
|
|
|
|
Public ReadOnly Property Materials As ObservableCollection(Of Material)
|
|
Get
|
|
Return m_Materials
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub AddMaterial(value As Material)
|
|
For Each Material In Materials
|
|
If Material.nId = value.nId Then
|
|
Exit Sub
|
|
End If
|
|
Next
|
|
WritePrivateProfileMaterial(S_MATERIALS, K_MATERIAL & m_MaxIdMat + 1, value, sMachIniFile)
|
|
m_MaxIdMat += 1
|
|
m_Materials.Add(value)
|
|
End Sub
|
|
|
|
Public Sub RemoveMaterial(value As Material)
|
|
' Se è il materiale corrente lo tolgo
|
|
If Not IsNothing(CurrMat) AndAlso CurrMat.nId = value.nId Then
|
|
CurrMat = Nothing
|
|
End If
|
|
' Rimuovo il materiale dall'elenco
|
|
Dim Index As Integer
|
|
For Index = 0 To Materials.Count - 1
|
|
If Materials(Index).nId = value.nId Then
|
|
m_Materials.Remove(Materials(Index))
|
|
Exit For
|
|
End If
|
|
Next
|
|
Dim TempMat As Material = Nothing
|
|
For I = Index To m_MaxIdMat - 1
|
|
GetPrivateProfileMaterial(S_MATERIALS, K_MATERIAL & I + 2, TempMat, sMachIniFile)
|
|
WritePrivateProfileMaterial(S_MATERIALS, K_MATERIAL & I + 1, TempMat, sMachIniFile)
|
|
Next
|
|
WritePrivateProfileMaterial(S_MATERIALS, K_MATERIAL & m_MaxIdMat, Nothing, sMachIniFile)
|
|
m_MaxIdMat -= 1
|
|
' Rimuovo il materiale dall'elenco di tutte le lavorazioni
|
|
Dim MachiningName As String = String.Empty
|
|
Dim bFound As Boolean = EgtMdbGetFirstMachining(MCH_MY.SAWING, MachiningName)
|
|
While bFound
|
|
EgtMdbSetCurrMachining(MachiningName)
|
|
SearchAndRemoveMat(value.nId)
|
|
bFound = EgtMdbGetNextMachining(MCH_MY.SAWING, MachiningName)
|
|
End While
|
|
bFound = EgtMdbGetFirstMachining(MCH_MY.DRILLING, MachiningName)
|
|
While bFound
|
|
EgtMdbSetCurrMachining(MachiningName)
|
|
SearchAndRemoveMat(value.nId)
|
|
bFound = EgtMdbGetNextMachining(MCH_MY.DRILLING, MachiningName)
|
|
End While
|
|
bFound = EgtMdbGetFirstMachining(MCH_MY.MILLING, MachiningName)
|
|
While bFound
|
|
EgtMdbSetCurrMachining(MachiningName)
|
|
SearchAndRemoveMat(value.nId)
|
|
bFound = EgtMdbGetNextMachining(MCH_MY.DRILLING, MachiningName)
|
|
End While
|
|
|
|
End Sub
|
|
|
|
' Funzione che dato l'Id di un materiale lo rimuove dalla lavorazione corrente
|
|
Public Sub SearchAndRemoveMat(valueId As Integer)
|
|
Dim SysNotes As String = String.Empty
|
|
EgtMdbGetCurrMachiningParam(MCH_MP.SYSNOTES, SysNotes)
|
|
If SysNotes <> String.Empty Then
|
|
Dim MachiningMaterials() = SysNotes.Split(";".ToCharArray)
|
|
SysNotes = String.Empty
|
|
For Each Material In MachiningMaterials
|
|
Dim Param() As String = Material.Split(",".ToCharArray)
|
|
If Param(0) <> valueId.ToString Then
|
|
SysNotes &= Material & ";"
|
|
End If
|
|
Next
|
|
If SysNotes(SysNotes.Length - 1) = ";" Then
|
|
SysNotes = SysNotes.Substring(0, SysNotes.Length - 1)
|
|
End If
|
|
EgtMdbSetCurrMachiningParam(MCH_MP.SYSNOTES, SysNotes)
|
|
End If
|
|
EgtMdbSaveCurrMachining()
|
|
End Sub
|
|
|
|
Public Property CurrMat As Material
|
|
Get
|
|
Return m_CurrMat
|
|
End Get
|
|
Set(value As Material)
|
|
If Not IsNothing(value) Then
|
|
Dim CurrMatId As String = value.nId.ToString
|
|
Dim sKey As String = If(m_bOffice, K_CURROFFICEMATERIAL, K_CURRMATERIAL)
|
|
WritePrivateProfileString(S_MATERIALS, sKey, CurrMatId, sMachIniFile)
|
|
End If
|
|
m_CurrMat = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Function SetCurrMatByName(sMatName As String) As Boolean
|
|
' Reset del materiale corrente
|
|
CurrMat = Nothing
|
|
' Verifico il nome
|
|
If String.IsNullOrWhiteSpace(sMatName) Then Return False
|
|
' Cerco il nome nella lista dei materiali
|
|
For Index = 0 To Materials.Count - 1
|
|
If String.Compare(Materials(Index).sName, sMatName, True) = 0 Then
|
|
CurrMat = Materials(Index)
|
|
Return True
|
|
End If
|
|
Next
|
|
Return False
|
|
End Function
|
|
|
|
'Sub InitCurrentMachine(sMachinesRootDir As String, sMachineName As String,
|
|
' bKeyProdLine As Boolean, bKeyMill As Boolean, bKeyWJ As Boolean, Optional bOffice As Boolean = False)
|
|
Sub InitCurrentMachine(sMachIniFile As String)
|
|
|
|
m_sMachIniFile = sMachIniFile
|
|
|
|
' Pulisco la lista dei materiali
|
|
m_Materials.Clear()
|
|
m_MaxIdMat = 0
|
|
' Leggo la lista dei materiali
|
|
Dim Material As Material = Nothing
|
|
Dim nIndex As Integer = 1
|
|
While (GetPrivateProfileMaterial(S_MATERIALS, K_MATERIAL & nIndex, Material, sMachIniFile))
|
|
m_Materials.Add(Material)
|
|
nIndex += 1
|
|
End While
|
|
' Salvo massimo indice a cui sono arrivato per usarlo quando devo aggiungere nuovi elementi alla lista
|
|
m_MaxIdMat = nIndex - 1
|
|
|
|
' Leggo materiale correntemente attivo
|
|
Dim sKey As String = If(m_bOffice, K_CURROFFICEMATERIAL, K_CURRMATERIAL)
|
|
Dim CurrMatId As Integer = GetPrivateProfileInt(S_MATERIALS, sKey, 0, sMachIniFile)
|
|
For Each Material In Materials
|
|
If Material.nId = CurrMatId Then
|
|
m_CurrMat = Material
|
|
Exit For
|
|
End If
|
|
Next
|
|
End Sub
|
|
|
|
Public Function GetPrivateProfileMaterial(
|
|
ByVal lpAppName As String,
|
|
ByVal lpKeyName As String,
|
|
ByRef Material As Material,
|
|
ByVal lpFileName As String) As Boolean
|
|
|
|
Dim sVal As String = String.Empty
|
|
GetPrivateProfileString(lpAppName, lpKeyName, "", sVal, lpFileName)
|
|
Dim sItems() As String = sVal.Split(",".ToCharArray)
|
|
If sItems.Count() = 2 Then
|
|
Dim nId As Integer = 0
|
|
StringToInt(sItems(0), nId)
|
|
Material = New Material(nId, sItems(1))
|
|
Return True
|
|
End If
|
|
Return False
|
|
|
|
End Function
|
|
|
|
Public Function WritePrivateProfileMaterial(
|
|
ByVal lpAppName As String,
|
|
ByVal lpKeyName As String,
|
|
ByVal Material As Material,
|
|
ByVal lpFileName As String) As Boolean
|
|
|
|
Dim MatStr As String = Nothing
|
|
If Not IsNothing(Material) Then
|
|
MatStr = Material.nId.ToString & "," & Material.sName
|
|
End If
|
|
If WritePrivateProfileString(lpAppName, lpKeyName, MatStr, sMachIniFile) Then
|
|
Return True
|
|
End If
|
|
Return False
|
|
End Function
|
|
|
|
End Module
|
|
|
|
Public Class Material
|
|
|
|
Private m_nId As Integer
|
|
Private m_sName As String
|
|
|
|
Public ReadOnly Property nId As Integer
|
|
Get
|
|
Return m_nId
|
|
End Get
|
|
End Property
|
|
|
|
Public Property sName As String
|
|
Get
|
|
Return m_sName
|
|
End Get
|
|
Set(value As String)
|
|
m_sName = value
|
|
End Set
|
|
End Property
|
|
|
|
Sub New(sName As String, MaterialList As ObservableCollection(Of Material))
|
|
Dim nMaxId As Integer = 0
|
|
For Each Material In MaterialList
|
|
If Material.nId > nMaxId Then
|
|
nMaxId = Material.nId
|
|
End If
|
|
Next
|
|
m_nId = nMaxId + 1
|
|
m_sName = sName
|
|
End Sub
|
|
|
|
Sub New(nId As Integer, sName As String)
|
|
m_nId = nId
|
|
m_sName = sName
|
|
End Sub
|
|
|
|
End Class
|