Files
EgtDOORCreator/DoorParameters/Compo.vb
T
Nicola Pievani efb250b4a4 EgtDOORCreator 1.8e2 :
- aggiunto il campo "Weight" al general del door,
- aggiunta di una variabile booleana alla funzione ReadDDF nella classe Door per permettere di stampare le funzioni scritte nelle textbox, attualmente no è in uso (settata True)
2017-05-09 16:04:50 +00:00

1188 lines
66 KiB
VB.net

Imports System.ComponentModel
Imports System.Collections.ObjectModel
Imports System.IO
Imports EgtUILib
Public Class Compo
Implements INotifyPropertyChanged
Friend TempFileDDF As String = IniFile.m_sTempDir & "\" & TEMP_FILE
Friend m_rfCurrDoor As Door
' definizione della funzione delegato: riceve il valore di modifica della compo e della general
'Delegate Function CompareIsModify(rIsModifyCompo As Boolean, rIsModifyDoor As Boolean) As Boolean
' aggiorno la variabile globale di cambiamento: verifico che sia il template che una combo/text sono state modificate
Function IsModify() As Boolean
If m_IsModifiedTemplateSelItem Then
Return True
End If
For IndexCompoParamList = 0 To Me.CompoParamList.Count - 1
If Me.CompoParamList(IndexCompoParamList).m_IsModifyCompoParam Then
m_rfCurrDoor.m_IsModifyDoor = True
Return True
End If
Next
Return False
End Function
' creo la stringa che contiene la lista degli errori
Dim ErrorList As String = String.Empty
Dim SetCompo As Integer = 0
Private m_CompoType As CompoType
Public ReadOnly Property CompoType As CompoType
Get
Return m_CompoType
End Get
End Property
#Region "Template ComboBox"
Private m_TemplateName As String
Public Property TemplateName As String
Get
Return m_TemplateName
End Get
Set(value As String)
m_TemplateName = value
End Set
End Property
Private m_TemplateDDFName As String
Public Property TemplateDDFName As String
Get
Return m_TemplateDDFName
End Get
Set(value As String)
m_TemplateDDFName = value
End Set
End Property
Private m_TemplateItemList As New List(Of String)
Public Property TemplateItemList As List(Of String)
Get
Return m_TemplateItemList
End Get
Set(value As List(Of String))
m_TemplateItemList = value
End Set
End Property
' dalla scelta TemplateSelItem genero la lista di parametri
''Private m_TemplateSelItem As String
''Public Property TemplateSelItem As String
'' Get
'' Return m_TemplateSelItem
'' End Get
'' aggiorno la lista dei parametri
'' Set(value As String)
'' SetTemplateSelItem(value)
'' Dim CurrConfig As String = m_CompoType.Path & "\" & CONFIGINI_FILE_NAME
'' Dim CurrItemPath As String = m_CompoType.Path & "\" & value
'' Dim ErrorList As String = String.Empty
'' se il file ha estensione nge
'' If Path.HasExtension(CurrItemPath) AndAlso Path.GetExtension(CurrItemPath).ToLower = ".nge" Then
'' controllo che esiste il file altrimenti esco
'' If Not File.Exists(CurrItemPath) Then Return
'' m_TemplateSelItem = value
'' creo la stringa che contiene la lista degli errori
'' Dim ParamIndex As Integer = 1
'' Dim ConfigDefault As String = String.Empty
'' Dim NewCompoParam As CompoParam = Nothing
'' EgtUILib.GetPrivateProfileString(S_NGECONFIG, K_DEFAULT, "", ConfigDefault, CurrConfig)
'' ricerco la parola chiave Param nella stringa nel file Cinfig.ini
'' ReadParamConfig(NewCompoParam, ErrorList, ParamIndex, ConfigDefault)
'' Else
'' se il file non ha estensione allora creo l'estensione .lua
'' CurrItemPath &= ".lua"
'' controllo che esiste il file altrimenti esco
'' If Not File.Exists(CurrItemPath) Then Return
'' m_TemplateSelItem = value
'' carico un vettore con le stringhe del file corrente
'' Dim ReadCurrCompo() As String = File.ReadAllLines(CurrItemPath)
'' Dim EndOfFile As Boolean = False
'' leggo il vettore di stringhe del file corrente
'' For LineIndex = 0 To ReadCurrCompo.Count - 1
'' copio il valore della riga
'' Dim CurrCompoFileLine As String = ReadCurrCompo(LineIndex)
'' cerco il titolo [Graphic parameters]: se lo trovo
'' If RegexFunction.IsGraphicParametersTitle(CurrCompoFileLine) Then
'' mi preparo per leggere la prima riga dopo il titolo
'' Dim ParamIndex As Integer = 1
'' Dim NewCompoParam As CompoParam = Nothing
'' Dim bIsFinished As Boolean = False
'' se la lettura del primo parametro "--Default=" restituisce un valore non nullo
'' If Not String.IsNullOrWhiteSpace(ParamLine(ReadCurrCompo(LineIndex + ParamIndex), "Default")) Then
'' Dim ConfigDefault As String = Trim(ParamLine(ReadCurrCompo(LineIndex + ParamIndex), "Default"))
'' If Not IsNumeric(ConfigDefault) Then
'' se il valore letto non è numerico allora esco dal cilo per la lettura dei parametri
'' Exit For
'' Else
'' ReadParamConfig(NewCompoParam, ErrorList, ParamIndex, ConfigDefault)
'' Exit For
'' End If
'' Else
'' se il primo parametro non è "Dafault" allora mi aspetto di leggere i parametri
'' While Not bIsFinished
'' attualizzo il componente a nulla
'' NewCompoParam = Nothing
'' cerco nella riga successiva al titolo il primo parametro
'' If Not String.IsNullOrWhiteSpace(ReadCurrCompo(LineIndex + ParamIndex)) Then
'' Dim ReadLine As String
'' carico i valori della stringa che seguono la chiave "--Param1="
'' ReadLine = ParamLine(ReadCurrCompo(LineIndex + ParamIndex), "Param" & ParamIndex)
'' se uno dei paraemtri è completamente sbagliato allora restituisce falso e non riempo la NewCompoParam che rimane Nothing
'' bIsFinished = Not ReadParam(ReadLine, NewCompoParam, ErrorList)
'' Else
'' altrimenti se la riga è vuota mi sposto alla successiva
'' LineIndex += 1
'' e continuo il ciclo while
'' Continue While
'' End If
'' insrisco la nuova componenenet: se la riga è vuota o la componente non è stata creata allora il componete è Nothing
'' InsertCompoParam(NewCompoParam, ParamIndex)
'' se il parametro è stato creato passa alla riga successiva
'' If Not bIsFinished Then ParamIndex += 1
'' End While
'' NotifyPropertyChanged("TemplateSelItem")
'' End If
'' esiste già una lista
'' For DeleteIndex = m_CompoParamList.Count - 1 To ParamIndex - 1 Step -1
'' m_CompoParamList.RemoveAt(DeleteIndex)
'' Next
'' Exit For
'' ElseIf LineIndex = ReadCurrCompo.Count - 1 Then
'' se non trovo il capitoletto nel file leggo i parametri di default del file Config.ini
'' Dim ParamIndex As Integer = 1
'' Dim NewCompoParam As CompoParam = Nothing
'' ReadParamConfig(NewCompoParam, ErrorList, ParamIndex, "")
'' Exit For
'' End If
'' Next
'' End If
'' End Set
''End Property
' funzione che setta il template del parametro
Friend m_IsModifiedTemplateSelItem As Boolean = False
Private m_TemplateSelItem As String
Public Property TemplateSelItem As String
Get
Return m_TemplateSelItem
End Get
Set(value As String)
SetTemplateSelItem(value)
m_IsModifiedTemplateSelItem = True
m_rfCurrDoor.SetTitle()
End Set
End Property
' setta il valore del template
Friend Sub SetTemplateSelItem(value As String)
Dim CurrConfig As String = m_CompoType.Path & "\" & CONFIGINI_FILE_NAME
Dim CurrItemPath As String = m_CompoType.Path & "\" & value
Dim ErrorList As String = String.Empty
' se il file ha estensione nge
If Path.HasExtension(CurrItemPath) AndAlso Path.GetExtension(CurrItemPath).ToLower = K_NGEEXTENSION Then
' controllo che esiste il file altrimenti esco
If Not File.Exists(CurrItemPath) Then Return
m_TemplateSelItem = value
' creo la stringa che contiene la lista degli errori
Dim ParamIndex As Integer = 1
Dim ConfigDefault As String = String.Empty
Dim NewCompoParam As CompoParam = Nothing
EgtUILib.GetPrivateProfileString(S_NGECONFIG, K_DEFAULT, "", ConfigDefault, CurrConfig)
' ricerco la parola chiave Param nella stringa nel file Cinfig.ini
ReadParamConfig(NewCompoParam, ErrorList, ParamIndex, ConfigDefault)
Else
' se il file non ha estensione allora creo l'estensione .lua
CurrItemPath &= K_LUAEXTENSION
' controllo che esiste il file altrimenti esco
If Not File.Exists(CurrItemPath) Then Return
m_TemplateSelItem = value
' carico un vettore con le stringhe del file corrente
Dim ReadCurrCompo() As String = File.ReadAllLines(CurrItemPath)
Dim EndOfFile As Boolean = False
' leggo il vettore di stringhe del file corrente
For LineIndex = 0 To ReadCurrCompo.Count - 1
' copio il valore della riga
Dim CurrCompoFileLine As String = ReadCurrCompo(LineIndex)
' cerco il titolo [Graphic parameters]: se lo trovo
If RegexFunction.IsGraphicParametersTitle(CurrCompoFileLine) Then
' mi preparo per leggere la prima riga dopo il titolo
Dim ParamIndex As Integer = 1
Dim NewCompoParam As CompoParam = Nothing
Dim bIsFinished As Boolean = False
' se la lettura del primo parametro "--Default=" restituisce un valore non nullo
If Not String.IsNullOrWhiteSpace(ParamLine(ReadCurrCompo(LineIndex + ParamIndex), K_DEFAULT)) Then
Dim ConfigDefault As String = Trim(ParamLine(ReadCurrCompo(LineIndex + ParamIndex), K_DEFAULT))
If Not IsNumeric(ConfigDefault) Then
' se il valore letto non è numerico allora esco dal cilo per la lettura dei parametri
Exit For
Else
ReadParamConfig(NewCompoParam, ErrorList, ParamIndex, ConfigDefault)
Exit For
End If
Else
' se il primo parametro non è "Dafault" allora mi aspetto di leggere i parametri
While Not bIsFinished
' attualizzo il componente a nulla
NewCompoParam = Nothing
' cerco nella riga successiva al titolo il primo parametro
If Not String.IsNullOrWhiteSpace(ReadCurrCompo(LineIndex + ParamIndex)) Then
Dim ReadLine As String
' carico i valori della stringa che seguono la chiave "--Param1="
ReadLine = ParamLine(ReadCurrCompo(LineIndex + ParamIndex), K_PARAM & ParamIndex)
' se uno dei paraemtri è completamente sbagliato allora restituisce falso e non riempo la NewCompoParam che rimane Nothing
bIsFinished = Not ReadParam(ReadLine, NewCompoParam, ErrorList)
Else
' altrimenti se la riga è vuota mi sposto alla successiva
LineIndex += 1
' e continuo il ciclo while
Continue While
End If
' insrisco la nuova componenenet: se la riga è vuota o la componente non è stata creata allora il componete è Nothing
InsertCompoParam(NewCompoParam, ParamIndex)
' se il parametro è stato creato passa alla riga successiva
If Not bIsFinished Then ParamIndex += 1
End While
NotifyPropertyChanged("TemplateSelItem")
End If
' esiste già una lista
For DeleteIndex = m_CompoParamList.Count - 1 To ParamIndex - 1 Step -1
m_CompoParamList.RemoveAt(DeleteIndex)
Next
Exit For
ElseIf LineIndex = ReadCurrCompo.Count - 1 Then
' se non trovo il capitoletto nel file leggo i parametri di default del file Config.ini
Dim ParamIndex As Integer = 1
Dim NewCompoParam As CompoParam = Nothing
ReadParamConfig(NewCompoParam, ErrorList, ParamIndex, "")
Exit For
End If
Next
End If
End Sub
' setto la lista dei parametri da caricare la lista dei paramestri
Private Sub ReadParamConfig(ByRef NewCompoParam As CompoParam, ByRef ErrorList As String, ParamIndex As Integer, DefaultConfig As String)
Dim sParam As String = String.Empty
Dim CurrConfig As String = m_CompoType.Path & "\" & CONFIGINI_FILE_NAME
Dim S_CHAPTER As String
If String.IsNullOrWhiteSpace(DefaultConfig) Then
S_CHAPTER = S_GR_PARAM_DEFAULT & "1"
Else
S_CHAPTER = S_GR_PARAM_DEFAULT & DefaultConfig
End If
While EgtUILib.GetPrivateProfileString(S_CHAPTER, K_PARAM & ParamIndex, "", sParam, CurrConfig) > 0
If Not String.IsNullOrWhiteSpace(sParam) Then
' leggo il tipo di parametro
ReadParam(sParam, NewCompoParam, ErrorList)
' carico il parametro nella lista della componente
InsertCompoParam(NewCompoParam, ParamIndex)
End If
ParamIndex += 1
End While
' controllo di aver tolto tutti i parametri che potrrebbero esistere da una precedente chiamata
For DeleteIndex = m_CompoParamList.Count - 1 To ParamIndex - 1 Step -1
m_CompoParamList.RemoveAt(DeleteIndex)
Next
End Sub
' inserisco il parametro letto nella lista dei paramtri senza modificare i parametri già esistenti
Private Sub InsertCompoParam(NewCompoParam As CompoParam, ParamIndex As Integer)
If Not IsNothing(NewCompoParam) Then
' se non esiste l'indice
If Not m_CompoParamList.Count > ParamIndex - 1 Then
' creo il parametro combo
Me.CompoParamList.Insert(ParamIndex - 1, NewCompoParam)
Else
' se esiste ma è diverso il nome DDF
If Not m_CompoParamList(ParamIndex - 1).DDFName = NewCompoParam.DDFName Then
' creo il nuovo parametro combo
m_CompoParamList.RemoveAt(ParamIndex - 1)
m_CompoParamList.Insert(ParamIndex - 1, NewCompoParam)
End If
End If
End If
End Sub
' leggo il nome DDF e il nome, restituisco il nome solo se esiste un messaggio associato
Private Function MsgControl(sDDFName As String, sName As String, ByRef sErrorList As String) As String
' se è numerico ma non esiste un messaggio associato
Dim ErrorMsg As String = "Msg" & Trim(sName)
If String.Equals(Utility.ReadMsg(sName), ErrorMsg) Then
sErrorList &= String.Format(EgtMsg(50119), sName)
Return sDDFName
Else
' restituisco il messaggio letto
Return Utility.ReadMsg(sName)
End If
End Function
#Region "ReadParamvecchio"
' lettura del parametro passato dalla riga del file aperto
''Private Function ReadParam(sReadLine As String, ByRef NewCompoParam As CompoParam, sErrorList As String) As Boolean
'' If Not String.IsNullOrWhiteSpace(sReadLine) Then
'' ' carico un vettore con i valori della stringa
'' Dim sItems() As String = sReadLine.Split(";"c)
'' ' se esistono almeno due elementi "ComboBox; NomeDDF"
'' If sItems.Count > 1 Then
'' ' il primo elemento del vettore disti gue tre categorie
'' Select Case sItems(0)
'' Case "ComboBox"
'' ConvertComboBoxString(sItems)
'' ' se la combobox contiene almeno un elemento "ComboBox; NomeDDF; Nome; NomeDDFItem/NomeItem"
'' If sItems.Count >= 4 Then
'' ' carico gli elementi della lista in un vettore
'' Dim sComboItemList() As String = sItems(3).Split(","c)
'' Dim ComboItemList As New List(Of String)
'' Dim DDFComboItemList As New List(Of String)
'' For ItemIndex = 0 To sComboItemList.Count - 1
'' Dim ComboItem() As String = sComboItemList(ItemIndex).Split("/"c)
'' ' se esiste il NomeDDF e il Nome allora separo
'' If ComboItem.Count = 2 Then
'' ' carico la lista con i nomi DDF
'' DDFComboItemList.Add(ComboItem(0))
'' ' carico la lista con i nomi
'' ComboItemList.Add(MsgControl(ComboItem(0), ComboItem(1), sErrorList))
'' Else
'' ' se esiste solo un nome considero sia il nome DDF
'' ComboItemList.Add(ComboItem(0))
'' ' Errore nella lettura del nome: manca la definizione del nome nella lingua corrente
'' sErrorList &= String.Format(EgtMsg(50120), ComboItem(0), m_CompoType.Path)
'' End If
'' Next
'' NewCompoParam = New ComboBoxParam(sItems(1), MsgControl(sItems(1), sItems(2), sErrorList), ComboItemList, DDFComboItemList, ComboItemList(0))
'' Return True
'' Else
'' ' non esiste una lista di nemmeno un elemento
'' sErrorList &= String.Format(EgtMsg(50121), sItems(1), m_CompoType.DDFName)
'' Return False
'' End If
'' Case "TextBox"
'' ConvertTextBoxString(sItems)
'' Dim dHeight As Double
'' ' leggo il valore altezza che già esite nella porta
'' StringToDouble(m_rfCurrDoor.Height, dHeight)
'' Dim dDefaultValue As Double
'' ' verifico che sono presenti "TextBox; NomeDDF; Nome"
'' If sItems.Count >= 3 Then
'' ' verifico che sono presenti "TextBox; NomeDDF; Nome; Valore"
'' If sItems.Count >= 4 Then
'' ' controllo che l'epressione scritta come valore finale sia corretta
'' If StringToDouble(sItems(3), dDefaultValue) Then
'' Dim sDefaultValue As String = DoubleToString(dDefaultValue, -3)
'' ' verifico che la misura letta sia minore dell'altezza della porta
'' If dDefaultValue < dHeight Then
'' ' verifico che sono presenti "TextBox; NomeDDF; Nome; Valore; NomeLista; NomeElementoLista"
'' If sItems.Count > 5 Then
'' ' creo la lista associata alla TextBox se esiste almeno un elemento
'' Dim DDFComboValuelList As New List(Of String)
'' ' carico gli elementi della lista in un vettore
'' Dim sComboItemList() As String = sItems(5).Split(","c)
'' ' carico la lista dal vettore
'' For ItemIndex = 0 To sComboItemList.Count - 1
'' DDFComboValuelList.Add(Trim(sComboItemList(ItemIndex)))
'' Next
'' ' cerco nella lista dei paraletri già esistenti il nome della lista a cui fa riferimento
'' For ParamIndex = 0 To m_CompoParamList.Count - 1
'' Dim CurrCompoParam As CompoParam = m_CompoParamList(ParamIndex)
'' ' verifico che il nome della lista associata esista
'' If CurrCompoParam.DDFName = sItems(4) Then
'' ' verifico che il nome del paramertro è di una combobox
'' If TypeOf CurrCompoParam Is ComboBoxParam Then
'' ' creo la componente nuova
'' NewCompoParam = New TextBoxParam(sItems(1), MsgControl(sItems(1), Utility.ReadMsg(sItems(2)), sErrorList), sDefaultValue, DirectCast(CurrCompoParam, ComboBoxParam), DDFComboValuelList)
'' Return True
'' Else
'' ' se esiste il nome della lista associata ma non è una combobox creo il componente senza la lista
'' NewCompoParam = New TextBoxParam(sItems(1), MsgControl(sItems(1), sItems(2), sErrorList), sDefaultValue, Nothing, Nothing)
'' sErrorList &= String.Format(EgtMsg(50122), sItems(4), m_CompoType.DDFName)
'' Return True
'' End If
'' Exit For
'' End If
'' Next
'' ' se non trovo nella lista dei parametri il nome della lista creo il componente senza la lista
'' NewCompoParam = New TextBoxParam(sItems(1), MsgControl(sItems(1), sItems(2), sErrorList), sDefaultValue, Nothing, Nothing)
'' sErrorList &= String.Format(EgtMsg(50121), sItems(4), m_CompoType.DDFName)
'' Return True
'' ElseIf sItems.Count = 5 Then
'' 'se non esiste una lista ma solo il nome della lista
'' NewCompoParam = New TextBoxParam(sItems(1), MsgControl(sItems(1), sItems(2), sErrorList), sDefaultValue, Nothing, Nothing)
'' sErrorList &= String.Format(EgtMsg(50123), sItems(4), m_CompoType.DDFName)
'' Return True
'' ElseIf sItems.Count = 4 Then
'' ' se la text contiente solo 4 parametri
'' NewCompoParam = New TextBoxParam(sItems(1), MsgControl(sItems(1), sItems(2), sErrorList), sDefaultValue, Nothing, Nothing)
'' Return True
'' End If
'' Else
'' ' se la misura passata è più grande di quella della porta non carico il valore e creo il parametro senza lista
'' NewCompoParam = New TextBoxParam(sItems(1), MsgControl(sItems(1), sItems(2), sErrorList), "0.000", Nothing, Nothing)
'' sItems(2) = MsgControl(sItems(1), sItems(2), sErrorList)
'' sErrorList &= String.Format(EgtMsg(50124), sItems(2), m_CompoType.DDFName, sDefaultValue)
'' ' ma faccio andare avanti nella lettura dei parametri
'' Return True
'' End If
'' Else
'' NewCompoParam = New TextBoxParam(sItems(1), MsgControl(sItems(1), sItems(2), sErrorList), "0.000", Nothing, Nothing)
'' sItems(2) = MsgControl(sItems(1), sItems(2), sErrorList)
'' 'sErrorList &= String.Format(EgtMsg(50124), sItems(2), m_CompoType.DDFName, sDefaultValue)
'' MessageBox.Show("Error expression in " & NewCompoParam.Name & ". " & sItems(3) & " does not match anything.", "Error", MessageBoxButton.OK, MessageBoxImage.Error)
'' End If
'' ''Dim sDefaultValue As String = DoubleToString(dDefaultValue, -3)
'' ' '' verifico che la misura letta sia minore dell'altezza della porta
'' ''If dDefaultValue < dHeight Then
'' '' ' verifico che sono presenti "TextBox; NomeDDF; Nome; Valore; NomeLista; NomeElementoLista"
'' '' If sItems.Count > 5 Then
'' '' ' creo la lista associata alla TextBox se esiste almeno un elemento
'' '' Dim DDFComboValuelList As New List(Of String)
'' '' ' carico gli elementi della lista in un vettore
'' '' Dim sComboItemList() As String = sItems(5).Split(","c)
'' '' ' carico la lista dal vettore
'' '' For ItemIndex = 0 To sComboItemList.Count - 1
'' '' DDFComboValuelList.Add(Trim(sComboItemList(ItemIndex)))
'' '' Next
'' '' ' cerco nella lista dei paraletri già esistenti il nome della lista a cui fa riferimento
'' '' For ParamIndex = 0 To m_CompoParamList.Count - 1
'' '' Dim CurrCompoParam As CompoParam = m_CompoParamList(ParamIndex)
'' '' ' verifico che il nome della lista associata esista
'' '' If CurrCompoParam.DDFName = sItems(4) Then
'' '' ' verifico che il nome del paramertro è di una combobox
'' '' If TypeOf CurrCompoParam Is ComboBoxParam Then
'' '' ' creo la componente nuova
'' '' NewCompoParam = New TextBoxParam(sItems(1), MsgControl(sItems(1), Utility.ReadMsg(sItems(2)), sErrorList), sDefaultValue, DirectCast(CurrCompoParam, ComboBoxParam), DDFComboValuelList)
'' '' Return True
'' '' Else
'' '' ' se esiste il nome della lista associata ma non è una combobox creo il componente senza la lista
'' '' NewCompoParam = New TextBoxParam(sItems(1), MsgControl(sItems(1), sItems(2), sErrorList), sDefaultValue, Nothing, Nothing)
'' '' sErrorList &= String.Format(EgtMsg(50122), sItems(4), m_CompoType.DDFName)
'' '' Return True
'' '' End If
'' '' Exit For
'' '' End If
'' '' Next
'' '' ' se non trovo nella lista dei parametri il nome della lista creo il componente senza la lista
'' '' NewCompoParam = New TextBoxParam(sItems(1), MsgControl(sItems(1), sItems(2), sErrorList), sDefaultValue, Nothing, Nothing)
'' '' sErrorList &= String.Format(EgtMsg(50121), sItems(4), m_CompoType.DDFName)
'' '' Return True
'' '' ElseIf sItems.Count = 5 Then
'' '' 'se non esiste una lista ma solo il nome della lista
'' '' NewCompoParam = New TextBoxParam(sItems(1), MsgControl(sItems(1), sItems(2), sErrorList), sDefaultValue, Nothing, Nothing)
'' '' sErrorList &= String.Format(EgtMsg(50123), sItems(4), m_CompoType.DDFName)
'' '' Return True
'' '' ElseIf sItems.Count = 4 Then
'' '' ' se la text contiente solo 4 parametri
'' '' NewCompoParam = New TextBoxParam(sItems(1), MsgControl(sItems(1), sItems(2), sErrorList), sDefaultValue, Nothing, Nothing)
'' '' Return True
'' '' End If
'' ''Else
'' '' ' se la misura passata è più grande di quella della porta non carico il valore e creo il parametro senza lista
'' '' NewCompoParam = New TextBoxParam(sItems(1), MsgControl(sItems(1), sItems(2), sErrorList), "0.000", Nothing, Nothing)
'' '' sItems(2) = MsgControl(sItems(1), sItems(2), sErrorList)
'' '' sErrorList &= String.Format(EgtMsg(50124), sItems(2), m_CompoType.DDFName, sDefaultValue)
'' '' ' ma faccio andare avanti nella lettura dei parametri
'' '' Return True
'' ''End If
'' Else
'' ' se la stringa ha 3 elemtni "TextBox; NomeDDF; Nome"
'' NewCompoParam = New TextBoxParam(sItems(1), MsgControl(sItems(1), sItems(2), sErrorList), "0.000", Nothing, Nothing)
'' sItems(2) = MsgControl(sItems(1), sItems(2), sErrorList)
'' sErrorList &= String.Format(EgtMsg(50125), sItems(2), m_CompoType.DDFName)
'' Return True
'' End If
'' Else
'' ' se ha solo 2 elementi "TextBox; NomeDDF"
'' NewCompoParam = Nothing
'' sErrorList &= String.Format(EgtMsg(50122), sItems(1), m_CompoType.DDFName)
'' Return False
'' End If
'' Case "TextBoxOnOff"
'' ConvertTextBoxString(sItems)
'' Dim dHeight As Double
'' ' leggo il valore altezza che già esite nella porta
'' StringToDouble(m_rfCurrDoor.Height, dHeight)
'' Dim dItem As Double
'' ' verifico che sono presenti "TextBoxOnOff; NomeDDF; Nome"
'' Dim dDefaultValue As Double
'' If sItems.Count >= 3 Then
'' ' verifico che sono presenti "TextBoxOnOff; NomeDDF; Nome; Valore"
'' If sItems.Count >= 4 Then
'' 'sItems(3) = Replace(sItems(3).ToUpper, "TH", "(" & m_rfCurrDoor.Thickness & ")")
'' 'StringToDouble(sItems(3), dDefaultValue)
'' If StringToDouble(sItems(3), dDefaultValue) Then
'' 'Dim sDefaultValue As String = DoubleToString(dDefaultValue, -3)
'' Dim sDefaultValue As String = DoubleToString(dDefaultValue, -3)
'' ' converto il valore in double
'' StringToDouble(sItems(3), dItem)
'' ' verifico che la misura letta sia minore dell'altezza della porta
'' If dDefaultValue < dHeight Then
'' ' verifico che sono presenti "TextBoxOnOff; NomeDDF; Nome; Valore; NomeLista; NomeElementoLista"
'' If sItems.Count > 5 Then
'' ' creo la lista associata alla TextBoxOnOff se esiste almeno un elemento
'' Dim DDFComboValuelList As New List(Of String)
'' ' carico gli elementi della lista in un vettore
'' Dim sComboItemList() As String = sItems(5).Split(","c)
'' ' carico la lista dal vettore
'' For ItemIndex = 0 To sComboItemList.Count - 1
'' DDFComboValuelList.Add(sComboItemList(ItemIndex))
'' Next
'' ' cerco nella lista dei paraletri già esistenti il nome della lista a cui fa riferimento
'' For ParamIndex = 0 To m_CompoParamList.Count - 1
'' Dim CurrCompoParam As CompoParam = m_CompoParamList(ParamIndex)
'' ' verifico che il nome della lista associata esista
'' If CurrCompoParam.DDFName = sItems(4) Then
'' ' verifico che il nome del paramertro è di una combobox
'' If TypeOf CurrCompoParam Is ComboBoxParam Then
'' ' creo la componente nuova
'' NewCompoParam = New TextBoxOnOffParam(sItems(1), MsgControl(sItems(1), sItems(2), sErrorList), sDefaultValue, DirectCast(CurrCompoParam, ComboBoxParam), DDFComboValuelList)
'' Return True
'' Else
'' ' se esiste il nome della lista associata ma non è una combobox creo il componente senza la lista
'' NewCompoParam = New TextBoxOnOffParam(sItems(1), MsgControl(sItems(1), sItems(2), sErrorList), sDefaultValue, Nothing, Nothing)
'' Return True
'' End If
'' Exit For
'' End If
'' Next
'' ' se non trovo nella lista dei parametri il nome della lista creo il componente senza la lista
'' NewCompoParam = New TextBoxOnOffParam(sItems(1), MsgControl(sItems(1), sItems(2), sErrorList), sDefaultValue, Nothing, Nothing)
'' Return True
'' ElseIf sItems.Count = 5 Then
'' 'se non esiste una lista ma solo il nome della lista
'' NewCompoParam = New TextBoxOnOffParam(sItems(1), MsgControl(sItems(1), sItems(2), sErrorList), sDefaultValue, Nothing, Nothing)
'' sErrorList &= String.Format(EgtMsg(50124), sItems(4), m_CompoType.DDFName)
'' Return True
'' ElseIf sItems.Count = 4 Then
'' ' se la text contiente solo 4 parametri
'' NewCompoParam = New TextBoxOnOffParam(sItems(1), MsgControl(sItems(1), sItems(2), sErrorList), sDefaultValue, Nothing, Nothing)
'' Return True
'' End If
'' Else
'' ' se la misura passata è più grande di quella della porta non carico il valore e creo il parametro senza lista
'' NewCompoParam = New TextBoxOnOffParam(sItems(1), MsgControl(sItems(1), sItems(2), sErrorList), "0", Nothing, Nothing)
'' If Not String.IsNullOrEmpty(sErrorList) Then sErrorList &= Environment.NewLine
'' sErrorList &= String.Format(EgtMsg(50122), sItems(1), m_CompoType.DDFName)
'' ' ma faccio andare avanti nella lettura dei parametri
'' Return True
'' End If
'' Else
'' NewCompoParam = New TextBoxOnOffParam(sItems(1), MsgControl(sItems(1), sItems(2), sErrorList), "0.000", Nothing, Nothing)
'' sItems(2) = MsgControl(sItems(1), sItems(2), sErrorList)
'' 'sErrorList &= String.Format(EgtMsg(50124), sItems(2), m_CompoType.DDFName, sDefaultValue)
'' MessageBox.Show("Error expression in " & NewCompoParam.Name & ". " & sItems(3) & " does not match anything.", "Error", MessageBoxButton.OK, MessageBoxImage.Error)
'' End If
'' Else
'' ' se la stringa ha 3 elemtni "TextBox; NomeDDF; Nome"
'' NewCompoParam = New TextBoxOnOffParam(sItems(1), MsgControl(sItems(1), sItems(2), sErrorList), "0", Nothing, Nothing)
'' Return True
'' End If
'' Else
'' ' se ha solo 2 elementi "TextBox; NomeDDF"
'' NewCompoParam = Nothing
'' If Not String.IsNullOrEmpty(sErrorList) Then sErrorList &= Environment.NewLine
'' sErrorList &= String.Format(EgtMsg(50122), sItems(1), m_CompoType.DDFName)
'' Return False
'' End If
'' End Select
'' Else
'' ' se non è nessuno dei casi precedenti del select case
'' sErrorList &= String.Format(EgtMsg(50121), m_CompoType.DDFName, sItems(0))
'' Return True
'' End If
'' End If
'' ' creo la stringa di errore
'' If Not String.IsNullOrEmpty(sErrorList) Then
'' sErrorList &= Environment.NewLine
'' sErrorList &= sErrorList
'' Else
'' sErrorList &= sErrorList
'' End If
'' Return False
''End Function
#End Region
Private Function ReadParam(sReadLine As String, ByRef NewCompoParam As CompoParam, sErrorList As String) As Boolean
If Not String.IsNullOrWhiteSpace(sReadLine) Then
' carico un vettore con i valori della stringa
Dim sItems() As String = sReadLine.Split(";"c)
' se esistono almeno due elementi "ComboBox; NomeDDF"
If sItems.Count > 1 Then
' il primo elemento del vettore distingue tre categorie
Select Case sItems(0)
Case "ComboBox"
'ConvertComboBoxString(sItems)
' se la combobox contiene almeno un elemento "ComboBox; NomeDDF/Nome; NomeDDFItem/NomeItem"
If sItems.Count >= 3 Then
' carico gli elementi della lista in un vettore
Dim sComboItemList() As String = sItems(2).Split(","c)
Dim ComboItemList As New List(Of String)
Dim DDFComboItemList As New List(Of String)
For ItemIndex = 0 To sComboItemList.Count - 1
Dim ComboItem() As String = sComboItemList(ItemIndex).Split("/"c)
' se esiste il NomeDDF e il Nome allora separo
If ComboItem.Count = 2 Then
' carico la lista con i nomi DDF
DDFComboItemList.Add(ComboItem(0))
' carico la lista con i nomi
ComboItemList.Add(MsgControl(ComboItem(0), ComboItem(1), sErrorList))
Else
' se esiste solo un nome considero sia il nome DDF
ComboItemList.Add(ComboItem(0))
' Errore nella lettura del nome: manca la definizione del nome nella lingua corrente
sErrorList &= String.Format(EgtMsg(50120), ComboItem(0), m_CompoType.Path)
End If
Next
' se il nome DDF non è separato dal diviso vuol dire che non c'è nessun messaggio associato, quindi scrivo due volte il messaggio DDF
If sItems(1).Split("/"c).Count = 1 Then
NewCompoParam = New ComboBoxParam(Trim(sItems(1)), MsgControl(Trim(sItems(1)), "-1", sErrorList), ComboItemList, DDFComboItemList, ComboItemList(0))
Else
NewCompoParam = New ComboBoxParam(Trim(sItems(1).Split("/"c)(0)), Trim(MsgControl(sItems(1).Split("/"c)(0), sItems(1).Split("/"c)(1), sErrorList)), ComboItemList, DDFComboItemList, ComboItemList(0))
End If
Return True
Else
' non esiste una lista di nemmeno un elemento
sErrorList &= String.Format(EgtMsg(50121), sItems(1).Split("/"c)(0), m_CompoType.DDFName)
Return False
End If
Case "TextBox"
'ConvertTextBoxString(sItems)
Dim dHeight As Double
' leggo il valore altezza che già esite nella porta
StringToDouble(m_rfCurrDoor.Height, dHeight)
Dim dDefaultValue As Double
' verifico che sono presenti "TextBox; NomeDDF/Nome"
If sItems.Count > 2 Then
' verifico che sono presenti "TextBox; NomeDDF/Nome; Valore"
If sItems.Count >= 3 Then
' controllo che l'epressione scritta come valore finale sia corretta
If StringToDouble(sItems(2), dDefaultValue) Then
Dim sDefaultValue As String = DoubleToString(dDefaultValue, -3)
' verifico che la misura letta sia minore dell'altezza della porta
If dDefaultValue < dHeight Then
' verifico che sono presenti "TextBox; NomeDDF/Nome; Valore; NomeLista; NomeElementoLista"
If sItems.Count > 4 Then
'' ' creo la lista associata alla TextBox se esiste almeno un elemento
'' Dim DDFComboValuelList As New List(Of String)
'' ' carico gli elementi della lista in un vettore
'' Dim sComboItemList() As String = sItems(5).Split(","c)
'' ' carico la lista dal vettore
'' For ItemIndex = 0 To sComboItemList.Count - 1
'' DDFComboValuelList.Add(Trim(sComboItemList(ItemIndex)))
'' Next
'' ' cerco nella lista dei paraletri già esistenti il nome della lista a cui fa riferimento
'' For ParamIndex = 0 To m_CompoParamList.Count - 1
'' Dim CurrCompoParam As CompoParam = m_CompoParamList(ParamIndex)
'' ' verifico che il nome della lista associata esista
'' If CurrCompoParam.DDFName = sItems(4) Then
'' ' verifico che il nome del paramertro è di una combobox
'' If TypeOf CurrCompoParam Is ComboBoxParam Then
'' ' creo la componente nuova
'' NewCompoParam = New TextBoxParam(sItems(1), MsgControl(sItems(1), Utility.ReadMsg(sItems(2)), sErrorList), sDefaultValue, DirectCast(CurrCompoParam, ComboBoxParam), DDFComboValuelList)
'' Return True
'' Else
'' ' se esiste il nome della lista associata ma non è una combobox creo il componente senza la lista
'' NewCompoParam = New TextBoxParam(sItems(1), MsgControl(sItems(1), sItems(2), sErrorList), sDefaultValue, Nothing, Nothing)
'' sErrorList &= String.Format(EgtMsg(50122), sItems(4), m_CompoType.DDFName)
'' Return True
'' End If
'' Exit For
'' End If
'' Next
'' ' se non trovo nella lista dei parametri il nome della lista creo il componente senza la lista
'' NewCompoParam = New TextBoxParam(sItems(1), MsgControl(sItems(1), sItems(2), sErrorList), sDefaultValue, Nothing, Nothing)
'' sErrorList &= String.Format(EgtMsg(50121), sItems(4), m_CompoType.DDFName)
'' Return True
''ElseIf sItems.Count = 4 Then
'' 'se non esiste una lista ma solo il nome della lista
'' NewCompoParam = New TextBoxParam(sItems(1), MsgControl(sItems(1), sItems(2), sErrorList), sDefaultValue, Nothing, Nothing)
'' sErrorList &= String.Format(EgtMsg(50123), sItems(4), m_CompoType.DDFName)
'' Return True
ElseIf sItems.Count = 3 Then
' se la text contiente solo 4 parametri
If sItems(1).Split("/"c).Count = 1 Then
NewCompoParam = New TextBoxParam(Trim(sItems(1)), MsgControl(Trim(sItems(1)), "-1", sErrorList), sDefaultValue, Nothing, Nothing)
Else
NewCompoParam = New TextBoxParam(Trim(sItems(1).Split("/"c)(0)), Trim(MsgControl(sItems(1).Split("/"c)(0), sItems(1).Split("/"c)(1), sErrorList)), sDefaultValue, Nothing, Nothing)
End If
Return True
End If
Else
' se la misura passata è più grande di quella della porta non carico il valore e creo il parametro senza lista
If sItems(1).Split("/"c).Count = 1 Then
NewCompoParam = New TextBoxParam(Trim(sItems(1)), MsgControl(Trim(sItems(1)), "-1", sErrorList), "0.000", Nothing, Nothing)
sErrorList &= String.Format(EgtMsg(50124), MsgControl(sItems(1), "-1", sErrorList), m_CompoType.DDFName, sDefaultValue)
Else
NewCompoParam = New TextBoxParam(Trim(sItems(1).Split("/"c)(0)), Trim(MsgControl(sItems(1).Split("/"c)(0), sItems(1).Split("/"c)(1), sErrorList)), "0.000", Nothing, Nothing)
sErrorList &= String.Format(EgtMsg(50124), MsgControl(sItems(1).Split("/"c)(0), sItems(1).Split("/"c)(1), sErrorList), m_CompoType.DDFName, sDefaultValue)
End If
' ma faccio andare avanti nella lettura dei parametri
Return True
End If
Else
If sItems(1).Split("/"c).Count = 1 Then
NewCompoParam = New TextBoxParam(Trim(sItems(1)), MsgControl(Trim(sItems(1)), "-1", sErrorList), "0.000", Nothing, Nothing)
Else
NewCompoParam = New TextBoxParam(Trim(sItems(1).Split("/"c)(0)), Trim(MsgControl(sItems(1).Split("/"c)(0), sItems(1).Split("/"c)(1), sErrorList)), "0.000", Nothing, Nothing)
End If
MessageBox.Show("Error expression in " & NewCompoParam.Name & ". " & sItems(2) & " does not match anything.", "Error", MessageBoxButton.OK, MessageBoxImage.Error)
Return True
End If
ElseIf sItems.Count = 2 Then
' se la stringa ha 2 elemtni "TextBox; NomeDDF/Nome"
If sItems(1).Split("/"c).Count = 1 Then
NewCompoParam = New TextBoxParam(Trim(sItems(1)), MsgControl(Trim(sItems(1)), "-1", sErrorList), "0.000", Nothing, Nothing)
sErrorList &= String.Format(EgtMsg(50125), MsgControl(sItems(1), "-1", sErrorList), m_CompoType.DDFName)
Else
NewCompoParam = New TextBoxParam(Trim(sItems(1).Split("/"c)(0)), Trim(MsgControl(sItems(1).Split("/"c)(0), sItems(1).Split("/"c)(1), sErrorList)), "0.000", Nothing, Nothing)
sErrorList &= String.Format(EgtMsg(50125), MsgControl(sItems(1).Split("/"c)(0), sItems(1).Split("/"c)(1), sErrorList), m_CompoType.DDFName)
End If
Return True
End If
Else
' se ha solo 1 elementi "TextBox"
NewCompoParam = Nothing
sErrorList &= String.Format(EgtMsg(50122), sItems(1), m_CompoType.DDFName)
Return False
End If
Case "TextBoxOnOff"
Dim dHeight As Double
' leggo il valore altezza che già esite nella porta
StringToDouble(m_rfCurrDoor.Height, dHeight)
Dim dDefaultValue As Double
' verifico che sono presenti "TextBox; NomeDDF/Nome"
If sItems.Count > 2 Then
' verifico che sono presenti "TextBox; NomeDDF/Nome; Valore"
If sItems.Count >= 3 Then
' controllo che l'epressione scritta come valore finale sia corretta
If StringToDouble(sItems(2), dDefaultValue) Then
Dim sDefaultValue As String = DoubleToString(dDefaultValue, -3)
' verifico che la misura letta sia minore dell'altezza della porta
If dDefaultValue < dHeight Then
' verifico che sono presenti "TextBox; NomeDDF/Nome; Valore; NomeLista; NomeElementoLista"
If sItems.Count > 4 Then
'' ' creo la lista associata alla TextBox se esiste almeno un elemento
'' Dim DDFComboValuelList As New List(Of String)
'' ' carico gli elementi della lista in un vettore
'' Dim sComboItemList() As String = sItems(5).Split(","c)
'' ' carico la lista dal vettore
'' For ItemIndex = 0 To sComboItemList.Count - 1
'' DDFComboValuelList.Add(Trim(sComboItemList(ItemIndex)))
'' Next
'' ' cerco nella lista dei paraletri già esistenti il nome della lista a cui fa riferimento
'' For ParamIndex = 0 To m_CompoParamList.Count - 1
'' Dim CurrCompoParam As CompoParam = m_CompoParamList(ParamIndex)
'' ' verifico che il nome della lista associata esista
'' If CurrCompoParam.DDFName = sItems(4) Then
'' ' verifico che il nome del paramertro è di una combobox
'' If TypeOf CurrCompoParam Is ComboBoxParam Then
'' ' creo la componente nuova
'' NewCompoParam = New TextBoxOnOffParam(sItems(1), MsgControl(sItems(1), Utility.ReadMsg(sItems(2)), sErrorList), sDefaultValue, DirectCast(CurrCompoParam, ComboBoxParam), DDFComboValuelList)
'' Return True
'' Else
'' ' se esiste il nome della lista associata ma non è una combobox creo il componente senza la lista
'' NewCompoParam = New TextBoxOnOffParam(sItems(1), MsgControl(sItems(1), sItems(2), sErrorList), sDefaultValue, Nothing, Nothing)
'' sErrorList &= String.Format(EgtMsg(50122), sItems(4), m_CompoType.DDFName)
'' Return True
'' End If
'' Exit For
'' End If
'' Next
'' ' se non trovo nella lista dei parametri il nome della lista creo il componente senza la lista
'' NewCompoParam = New TextBoxOnOffParam(sItems(1), MsgControl(sItems(1), sItems(2), sErrorList), sDefaultValue, Nothing, Nothing)
'' sErrorList &= String.Format(EgtMsg(50121), sItems(4), m_CompoType.DDFName)
'' Return True
''ElseIf sItems.Count = 4 Then
'' 'se non esiste una lista ma solo il nome della lista
'' NewCompoParam = New TextBoxOnOffParam(sItems(1), MsgControl(sItems(1), sItems(2), sErrorList), sDefaultValue, Nothing, Nothing)
'' sErrorList &= String.Format(EgtMsg(50123), sItems(4), m_CompoType.DDFName)
'' Return True
ElseIf sItems.Count = 3 Then
' se la text contiente solo 4 parametri
If sItems(1).Split("/"c).Count = 1 Then
NewCompoParam = New TextBoxOnOffParam(Trim(sItems(1)), MsgControl(Trim(sItems(1)), "-1", sErrorList), sDefaultValue, Nothing, Nothing)
Else
NewCompoParam = New TextBoxOnOffParam(Trim(sItems(1).Split("/"c)(0)), Trim(MsgControl(sItems(1).Split("/"c)(0), sItems(1).Split("/"c)(1), sErrorList)), sDefaultValue, Nothing, Nothing)
End If
Return True
End If
Else
' se la misura passata è più grande di quella della porta non carico il valore e creo il parametro senza lista
If sItems(1).Split("/"c).Count = 1 Then
NewCompoParam = New TextBoxOnOffParam(Trim(sItems(1)), MsgControl(Trim(sItems(1)), "-1", sErrorList), "0.000", Nothing, Nothing)
sErrorList &= String.Format(EgtMsg(50124), MsgControl(sItems(1), "-1", sErrorList), m_CompoType.DDFName, sDefaultValue)
Else
NewCompoParam = New TextBoxOnOffParam(Trim(sItems(1).Split("/"c)(0)), Trim(MsgControl(sItems(1).Split("/"c)(0), sItems(1).Split("/"c)(1), sErrorList)), "0.000", Nothing, Nothing)
sErrorList &= String.Format(EgtMsg(50124), MsgControl(sItems(1).Split("/"c)(0), sItems(1).Split("/"c)(1), sErrorList), m_CompoType.DDFName, sDefaultValue)
End If
' ma faccio andare avanti nella lettura dei parametri
Return True
End If
Else
If sItems(1).Split("/"c).Count = 1 Then
NewCompoParam = New TextBoxOnOffParam(Trim(sItems(1)), MsgControl(Trim(sItems(1)), "-1", sErrorList), "0.000", Nothing, Nothing)
Else
NewCompoParam = New TextBoxOnOffParam(Trim(sItems(1).Split("/"c)(0)), Trim(MsgControl(sItems(1).Split("/"c)(0), sItems(1).Split("/"c)(1), sErrorList)), "0.000", Nothing, Nothing)
End If
MessageBox.Show("Error expression in " & NewCompoParam.Name & ". " & sItems(2) & " does not match anything.", "Error", MessageBoxButton.OK, MessageBoxImage.Error)
Return True
End If
ElseIf sItems.Count = 2 Then
' se la stringa ha 2 elemtni "TextBox; NomeDDF/Nome"
If sItems(1).Split("/"c).Count = 1 Then
NewCompoParam = New TextBoxOnOffParam(Trim(sItems(1)), MsgControl(Trim(sItems(1)), "-1", sErrorList), "0.000", Nothing, Nothing)
sErrorList &= String.Format(EgtMsg(50125), MsgControl(sItems(1), "-1", sErrorList), m_CompoType.DDFName)
Else
NewCompoParam = New TextBoxOnOffParam(Trim(sItems(1).Split("/"c)(0)), Trim(MsgControl(sItems(1).Split("/"c)(0), sItems(1).Split("/"c)(1), sErrorList)), "0.000", Nothing, Nothing)
sErrorList &= String.Format(EgtMsg(50125), MsgControl(sItems(1).Split("/"c)(0), sItems(1).Split("/"c)(1), sErrorList), m_CompoType.DDFName)
End If
Return True
End If
Else
' se ha solo 1 elementi "TextBox"
NewCompoParam = Nothing
sErrorList &= String.Format(EgtMsg(50122), sItems(1), m_CompoType.DDFName)
Return False
End If
End Select
Else
' se non è nessuno dei casi precedenti del select case
sErrorList &= String.Format(EgtMsg(50121), m_CompoType.DDFName, sItems(0))
Return True
End If
End If
' creo la stringa di errore
If Not String.IsNullOrEmpty(sErrorList) Then
sErrorList &= Environment.NewLine
sErrorList &= sErrorList
Else
sErrorList &= sErrorList
End If
Return False
End Function
' converto questo vettore {"TextBox", "NomeDDF/Nome"} in {"TextBox", "NomeDDF", "Nome"}
Private Sub ConvertTextBoxString(ByRef Items() As String)
Dim Arrays(Items.Count) As String
Dim IndexArray As Integer = 0
Dim IndexItems As Integer = 0
For IndexItems = 0 To Items.Count - 1
If Not String.IsNullOrEmpty(RegexFunction.ParamExpression(Items(IndexItems))) Then
Arrays(IndexArray) = Trim(RegexFunction.ParamExpression(Items(IndexItems)))
IndexArray += 1
ElseIf Items(IndexItems).Split("/"c).Count = 1 Then
Arrays(IndexArray) = Trim(Items(IndexItems))
IndexArray += 1
ElseIf Items(IndexItems).Split("/"c).Count = 2 Then
Arrays(IndexArray) = Trim(Items(IndexItems).Split("/"c)(0))
IndexArray += 1
If IndexArray < Arrays.Count - 1 Then
Arrays(IndexArray) = Trim(Items(IndexItems).Split("/"c)(1))
IndexArray += 1
End If
End If
Next
If IndexArray = IndexItems + 1 Then
System.Array.Resize(Items, IndexArray)
Items = Arrays
'Else
' Items = Arrays
End If
End Sub
' converto questo vettore {"ComboBox", "NomeDDF/Nome"} in {"ComboBox", "NomeDDF", "Nome"}
Private Sub ConvertComboBoxString(ByRef Items() As String)
Dim bCovert As Boolean = False
Dim Arrays(Items.Count) As String
Dim IndexArray As Integer = 0
Dim IndexItems As Integer = 0
For IndexItems = 0 To Items.Count - 1
If Items(IndexItems).Split("/"c).Count = 1 Then
Arrays(IndexArray) = Trim(Items(IndexItems))
IndexArray += 1
ElseIf Items(IndexItems).Split("/"c).Count = 2 Then
Arrays(IndexArray) = Trim(Items(IndexItems).Split("/"c)(0))
Arrays(IndexArray + 1) = Trim(Items(IndexItems).Split("/"c)(1))
IndexArray += 2
For Index = IndexItems + 1 To Items.Count - 1
Arrays(Index + 1) = Trim(Items(Index))
Next
bCovert = True
Exit For
End If
Next
If bCovert Then
System.Array.Resize(Items, Items.Count)
Items = Arrays
'Else
' Items = Arrays
End If
End Sub
Private m_TemplateVisibility As Visibility
Public Property TemplateVisibility As Visibility
Get
Return m_TemplateVisibility
End Get
Set(value As Visibility)
m_TemplateVisibility = value
End Set
End Property
#End Region ' Template ComboBox
Private m_CompoParamList As New ObservableCollection(Of CompoParam)
Public Property CompoParamList As ObservableCollection(Of CompoParam)
Get
Return m_CompoParamList
End Get
Set(value As ObservableCollection(Of CompoParam))
m_CompoParamList = value
End Set
End Property
' Definizione comando
Private m_CmdDelete As ICommand
Sub New(CompoType As CompoType, MyDoor As Door)
m_CompoType = CompoType
m_rfCurrDoor = MyDoor
End Sub
#Region "COMMANDS"
#Region "DeleteCommand"
''' <summary>
''' Returns a command that do Exec.
''' </summary>
Public ReadOnly Property DeleteCommand As ICommand
Get
If m_CmdDelete Is Nothing Then
m_CmdDelete = New Command(AddressOf Delete)
End If
Return m_CmdDelete
End Get
End Property
''' <summary>
''' Execute the Exec. This method is invoked by the ExecCommand.
''' </summary>
Public Sub Delete()
m_rfCurrDoor.RemoveCompo(Me)
End Sub
#End Region ' DeleteCommand
#End Region 'Commands
Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
Public Sub NotifyPropertyChanged(propName As String)
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propName))
End Sub
End Class
Public Class CompoParam
Friend Shared m_rfSetTitle As Action
Friend m_IsModifyCompoParam As Boolean = False
Private m_Name As String
Public Property Name As String
Get
Return m_Name
End Get
Set(value As String)
m_Name = value
End Set
End Property
Private m_DDFName As String
Public Property DDFName As String
Get
Return m_DDFName
End Get
Set(value As String)
m_DDFName = value
End Set
End Property
Sub New(sDDFName As String, sName As String)
m_DDFName = sDDFName
m_Name = sName
End Sub
End Class
Public Class TextBoxParam
Inherits CompoParam
Implements INotifyPropertyChanged
Dim dValue As Double = -1
Friend m_Value As String
Public Property Value As String
Get
Return m_Value
End Get
Set(value As String)
m_Value = value
NotifyPropertyChanged("ToolTipValue")
m_IsModifyCompoParam = True
m_rfSetTitle()
End Set
End Property
Public ReadOnly Property ToolTipValue As String
Get
If StringToDouble(Value, dValue) Then
Return DoubleToString(dValue, 4)
Else
Return EgtMsg(50143)
End If
End Get
End Property
Private m_ComboValuelList As New List(Of String)
Public Property ComboValuelList As List(Of String)
Get
Return m_ComboValuelList
End Get
Set(value As List(Of String))
m_ComboValuelList = value
End Set
End Property
Private m_ComboBox As ComboBoxParam
Private m_Visibility As Visibility
Public Property Visibility As Visibility
Get
Return m_Visibility
End Get
Set(value As Visibility)
m_Visibility = value
End Set
End Property
Sub New(sDDFName As String, sName As String, sValue As String, ComboBox As ComboBoxParam, ComboValuelList As List(Of String))
MyBase.New(sDDFName, sName)
m_Value = sValue
m_ComboBox = ComboBox
m_ComboValuelList = ComboValuelList
End Sub
Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
Public Sub NotifyPropertyChanged(propName As String)
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propName))
End Sub
End Class
Public Class ComboBoxParam
Inherits CompoParam
Private m_ItemList As New List(Of String)
Public Property ItemList As List(Of String)
Get
Return m_ItemList
End Get
Set(value As List(Of String))
m_ItemList = value
End Set
End Property
Private m_ItemListDDF As New List(Of String)
Public Property ItemListDDF As List(Of String)
Get
Return m_ItemListDDF
End Get
Set(value As List(Of String))
m_ItemListDDF = value
End Set
End Property
Private m_SelItem As String
Public Property SelItem As String
Get
Return m_SelItem
End Get
Set(value As String)
m_SelItem = value
m_IsModifyCompoParam = True
m_rfSetTitle()
End Set
End Property
Friend Sub SetSelItem(value As String)
m_SelItem = value
End Sub
Sub New(sDDFName As String, sName As String, ItemList As List(Of String), ItemListDDF As List(Of String), sSelItem As String)
MyBase.New(sDDFName, sName)
m_ItemList = ItemList
m_ItemListDDF = ItemListDDF
m_SelItem = sSelItem
End Sub
End Class
Public Class TextBoxOnOffParam
Inherits TextBoxParam
Private m_IsActive As Boolean
Public Property IsActive As Boolean
Get
Return m_IsActive
End Get
Set(value As Boolean)
m_IsActive = value
End Set
End Property
Sub New(sDDFName As String, sName As String, sValue As String, ComboBox As ComboBoxParam, ComboValuelList As List(Of String))
MyBase.New(sDDFName, sName, sValue, ComboBox, ComboValuelList)
End Sub
End Class