Objetivo: Demonstrar como vincular e exibir os valores de um Array (Vetor) do tipo String diretamente em um componente ComboBox na tela de operação do SCADA BluePlant, utilizando um script CodeBehind em C#.
Componentes
Software: BluePlant 9.1.40
Hardware: Notebook/Computador
Seções do Tutorial
- ARQUITETURA
- DESENVOLVIMENTO
2.1. Criando a Tag Array
2.2 Configurando o ComboBox no Display
2.3 Implementando o Script no CodeBehind
3. EXECUÇÃO E VERIFICAÇÃO
1. ARQUITETURA
No BluePlant, utilizaremos o CodeBehind (ambiente de programação em C# vinculado à tela). O script atuará como uma ponte: toda vez que o operador clicar no ComboBox, o código lerá os dados do Array no servidor de Tags e os listará como opções selecionáveis.
2. DESENVOLVIMENTO
2.1. Criando a Tag Array
O primeiro passo é criar a variável que armazenará nossa lista de textos.
- Acesse o menu Edit e clique em Tags.
- Crie uma nova Tag. Para este tutorial, usaremos o nome var_string e definiremos o Type como Text.
- Na coluna Array, configure para criar um vetor. Defina Number of Dimensions como 1 e Max Index Dimension1 como 19.
*Nota: Como os índices começam em 0, definir o máximo como 19 cria um Array com exatamente 20 posições (0 a 19).*
Figura 1. Criação da Tag var_string com tamanho 19
2.2. Configurando o ComboBox no Display
- Acesse o menu Draw e abra o display (tela) onde deseja inserir a lista.
- Na barra de ferramentas lateral, adicione o componente ComboBox arrastando-o para a tela.
- Com o ComboBox selecionado, observe a janela de propriedades (geralmente na lateral esquerda).
- No campo Uid, digite combobox1.
*Atenção: Este Uid é o identificador único do objeto. É através deste nome que o script C# conseguirá "encontrar" o ComboBox na tela para modificá-lo.*
Figura 2. Configurando o Uid do ComboBox na tela
2.3. Implementando o Script no CodeBehind
Agora faremos a programação que liga a Tag ao componente visual.
- Ainda na aba Draw, troque da visualização Drawing para a aba CodeBehind.
- Na parte superior, certifique-se de que a linguagem selecionada é CSharp.
- Insira o seguinte código adaptando a estrutura padrão gerada pelo BluePlant:
TComboBox combo1;
public void DisplayOpening()
{
combo1 = this.CurrentDisplay.GetControl("combobox1") as TComboBox;
combo1.DropDownOpened += new System.EventHandler(combo1_DropDownOpened);
}
private void combo1_DropDownOpened(object sender, System.EventArgs e)
{
combo1.Items.Clear();
for (int i=0; i < @Tag.var_string.GetLength(0); i++) {
combo1.Items.Add(@Tag.var_string[i].Value);
}
}
Entendendo o código:
- A linha TComboBox combo1; cria uma variável interna no script para o nosso componente.
- No método DisplayOpening() (que roda assim que a tela abre), dizemos ao script para procurar na tela o objeto chamado "combobox1" e avisar sempre que o usuário clicar nele para abrir a lista (DropDownOpened).
- No método combo1_DropDownOpened, criamos a ação: primeiro limpamos qualquer texto velho (Clear()). Depois, criamos um laço de repetição (for) que percorre automaticamente todo o tamanho da nossa Tag @Tag.var_string. A cada passo, ele pega o texto daquela posição e adiciona como uma nova opção no ComboBox (Items.Add). Caso uma condição ou quantidade específica seja desejada, o loop pode ser alterado na função.
Figura 3. Código C# inserido no CodeBehind do display
3. EXECUÇÃO E VERIFICAÇÃO
Para testar, precisamos colocar valores dentro do nosso Array e ver se eles aparecem na tela.
- Clique em Run para iniciar a aplicação do BluePlant.
- Para demonstrar o funcionamento, vamos abrir a ferramenta Property Watch, e adicionar o vetor @Tag.var_string expandindo seus índices 0 a 5 e escrever valores neles, como "Item 0", "Item 1", etc.
- Abra a tela onde você colocou o ComboBox e clique nele. A lista deve se expandir exibindo exatamente os textos que existem no nosso vetor.
O nosso vetor possui tamanho 20, e nós preenchemos apenas 6 (0 a 5) dos itens. Dessa forma, os outros 14 se mantêm vazios, mas seguem sendo preenchidos na ComboBox. O script do Codebehind pode ser alterado caso uma lógica diferente for desejada.
Figura 4. Visualização dos valores no Property Watch e funcionamento do ComboBox em Runtime
Comentários
0 comentário
Por favor, entre para comentar.