Alterando a fonte do VerticalPercentFill

Bom dia

Eu tenho um XControl que tem um retângulo e eu preciso em tempo de execução trocar a fonte do VerticalPercentFill retângulo.

Tem como fazer?

@wagner.dracha, bom dia.

Sim, tem como fazer. Cria uma propriedade no XControl associado a este VerticalPercentFill e depois cria um script em um objeto de tela na tela em que este XControl será instanciado para mudar esta associação em Runtime.

Sobre o script, verifica estes artigos aqui, aqui e aqui (ou este video).

Sds.

1 Like

Entendi. Legal!!

Mas assim, por exemplo, o valor está em: Drive1.teste.Value

Só que na propriedade do XControl, eu só quero gravar o valor teste.

Então, na fonte do VerticalPercentFill do retângulo, eu tentei colocar assim: “Drive1.” & XC_Teste.tag_nome & “.Value”

Mas ele não atualiza.

Mas se eu colocar o seguinte código na tela inicial, ele dá o seguinte erro:

Linha 66:
msgbox Application.GetObject(“Driver1.[” & rec.Fields(“tag_nome”).Value & “]”).Value

Erro:
TelaInicial
Erro na linha 66: 'Uso inválido de Null: ‘Application.GetOBject(…).Value’

O que pode ser?

@wagner.dracha,

Neste caso, o melhor é fazer por script.

  • No evento OnStartRunning do retângulo, deve fazer algo desta forma:

    Sub Retangulo1_OnStartRunning()
    If XC_Teste.tag_nome <> “” Then
    Links.CreateLink “VerticalPercentFill”, (“Driver1.”& XC_Teste.tag_nome & “.Value”), 0
    End If
    End Sub

  • Depois, no evento da propriedade “tag_nome” colocar algo desta forma:

    Sub XC_Teste_Ontag_nomeChanged()
    Set ret = Item(“Retangulo1”).Links
    If tag_nome <> “” then
    ret.Item(“VerticalPercentFill”).Source = “Driver1.”&tag_nome&".Value"
    Else
    ret.CreateLink “VerticalPercentFill”, (“Driver1.”& tag_nome & “.Value”), 0
    End If
    End Sub

Provavelmente não está retornando valor nesta Consulta.

Verifica, por favor, se colocando MsgBox rec.Fields(“tag_nome”).Value retorna alguma coisa. Caso não retorne, verifica a lógica do script e se a consulta está retornando algo.

Sds.

1 Like

Eu coloquei este código direto na tela e funcionou:

Item("XC_Teste" & i).Item("Retangulo2").Links.CreateLink "VerticalPercentFill", "Driver1.[" & pontosNovos(i, 6) & "].Value", 1

Obrigado