Olá pessoal!
Gostaria de uma ajuda. Estou trabalhando num script com objetivo de facilitar a interação do usuário para análise gráfica das medidas analógicas, provenientes de uma estrutura de objetos, através do E3Chart. Utilizei o objeto Treeview da biblioteca HP para seleção e criação dinâmicas de penas na tela.
Contudo, estou encontrando algumas dificuldades na hora de validar a medida que já foi criada a partir da seleção do usuário, assim como encontrar a melhor forma de ajustar os eixos conforme a seleção.
Tela de testes:
Cenário de teste:
Estou utilizando a propriedade SelectionList do objeto Treeview para definição da medida e, consequentemente, da pena automática que será atribuída ao E3Chart. Assim, ao segundo click no botão “Vizualizar”, a mesma pena é gerada.
Segue o script preliminar da funcionalidade:
Sub hpCommandButton1_OnEventClick()
auxString = Screen.Item(“hptreeview1”).SelectionList ’ propriedade SelectionList do objeto treeview
If auxString <> Empty then
' ETAPA 01: "TRATAMENTO DA STRING"
auxString = replace(auxString, Chr(34),"") ' retirando ""/Chr(34) da string
auxVetor = split(auxString, vbNewline) ' transformando a string em um vetor de linhas
' laço1 para cada linha
For i=0 to Ubound(auxVetor)
vetorColunas = split(auxVetor(i), ";") ' separação da linha em um vetor de células
Next
' ETAPA 02: "FILTRANDO AS MEDIDAS DE INTERESSE"
' declaração do vetor
vetorMedidas = array
' laço3 para validação das medidas
For i=0 to Ubound(vetorColunas)
' buscando os objetos do servidor
set obj = Application.GetObject(vetorColunas(i))
' teste de validação de medidas "analógicas" e "digitais"
if typename(obj)= "PowerAnalogMeasurement" OR typename(obj)= "PowerDiscreteMeasurement" then
ReDim Preserve vetorMedidas (UBound(vetorMedidas) + 1) ' redimensionamento do vetor com acréscimo
vetorMedidas(UBound(vetorMedidas)) = vetorColunas(i) ' novo valor para nova posição
end if
Next
' ETAPA 03: "PLOTANDO O GRÁFICO"
' laço4 para criação das penas
For i=0 to Ubound(vetorMedidas)
If Err.Number <> 0 then
MsgBox "Erro de script! " & VbNewline & Err.Number
Else
Set medida = Application.GetObject(vetorMedidas(i)) ' busca os objetos de medida no servidor
Set chart = Screen.Item("E3Chart1") ' busca a coleção de penas d objeto E3Chart
'Msgbox "Medidas Encontradas: " & vetorMedidas(i)
'Msgbox "Tag: " & medida.Item("Scada").Tag
'Msgbox "DocString: " & medida.DocString
' laço5 para validação da coleção de penas
For Each pens in Chart.Pens
' teste de validação de penas existentes
If pens.YLink = medida.Item("Scada").Tag then
Msgbox "Pena: " & pens.Name & " já existe!"
End if
Next
' configuração das penas
Set pen = chart.Pens.AddPen("") ' criação da pena
pen.DataSourceType = 3 ' 0 = RT | 1 = hist | 2 = HistOrRT | 3 = automatica
pen.YLink = medida.Item("Scada").Tag ' tag
pen.UseTimeStamp = True
pen.UseAutomaticAxis = True
pen.name = medida.DocString ' nome
pen.Connect() ' conexão da pena
End If
on error goto 0
Next
Else
Msgbox "Seleciona alguma medida!"
End If
End Sub
A minha maior dificuldade está no processo de validação para criação das penas e no controle dos eixos a medida que as medidas são inseridas pelo usuário.