COMPONENTES FREEFORM

VISUAIS


NÃO VISUAIS

ATALHOS


INFORMAÇÕES COMPLEMENTARES

FREEFORM








  • Provê um conjunto de componentes gráficos básicos para contrução GUI´s


  • São especializações dos componentes nativos da linguagem ADVPL para operar com linguagem 4GL 


  • Fornece um mecanismo para atribuição automática de coordenadas de componentes




O que é Freeform?


     Freeform é o conjunto de componentes visuais e não visuais, que são classes especializadas para o produto Logix construídas com base em componentes fornecidos pela linguagem AdvPl

     Para criação de telas, Freeform é o modelo de desenvolvimento comumente conhecido como desenvolvimento à mãos livres, onde a tela é definida e montada pelo desenvolvedor utilizando chamadas de funções para instanciar componentes e definir suas características de comportamento com base neste conjunto de componentes visuais ou não visuais.

     Além dos componentes visuais, o modelo Freeform engloba, conforme já mencionado, um conjunto de outros componentes não visuais, que podem ser utilizados para realizar integrações, execuções em THREADs, comunicação com WebServices e banco de dados, entre outras funcionalidades.

     Para criar, definir comportamentos e destruir componentes no modelo Freeform no Logix são utilizadas quatro funções AdvPL básicas que são funções desenvolvidas e mantidas pelo time de Framework:

    • create_component()
    • set_property()
    • get_property()
    • destroy_component()


Componentes FreeForm



Criando um componente | create_component()



     A função AdvPL create_component permite criar uma instância do componente Freeform em memória e retorna o código de referência do componente criado, que geralmente pode ser atribuído para uma variável do tipo VARCHAR(10) em código de linguagem 4GL.. Esta função recebe por parâmetro o código de referência do componente que será criado, o nome do componente Freeform e o código de referência do componente pai, quando existir.

Por padrão, o primeiro parâmetro não é mais informado, passando sempre nulo, assim o código de referência será criado dinamicamente pelo framework evitando problemas de referências duplicadas.

Exemplo de código para criação de um componente FreeForm
DEFINE l_dlg_ref VARCHAR(10)
DEFINE l_pnl_ref VARCHAR(10)
 
# Componente sem componente pai.
LET l_dlg_ref = _ADVPL_create_componente(NULL,"LDIALOG")
    
# Componente com componente pai.
LET l_pnl_ref = _ADVPL_create_componente(NULL,"LPANEL",l_dlg_ref)



Manipulando um componente | set_property() e get_property()



     As funções AdvPL set_property() e get_property() permitem executar e manipular métodos e propriedades do componente informado. A diferença entre uma função e outra é:

    • Função get_property() é possível recuperar o valor da propriedade ou da execução do método informado.
    • Função set_property() só permite alterar estas propriedades ou invocar métodos.


     Ambas as funções recebem por parâmetro o código da referência do componente que será manipulado, o nome do método que será executado e os valores dos parâmetros que cada método exige para execução.


Se a referência do componente informada estiver nula ou for inválida, será exibida uma mensagem de erro informado que “componente é inválido” e se o método ou propriedade informado também for inválido ou não previsto para o respectivo componente, a mensagem de erro irá informar “propriedade informada não prevista para o componente”.
Mais informações sobre estas validações podem ser encontradas em Validações Metadado/Freeform.

Exemplo de código para recuperar/definir propriedade ou invocar método de de um componente FreeForm
DEFINE l_dlg_ref VARCHAR(10)
DEFINE l_title   CHAR(50)
 
# Instância de uma nova janela de diálogo
LET l_dlg_ref = _ADVPL_create_componente(NULL,"LDIALOG")

# Define o título da janela de diálogo instanciada acima.
CALL _ADVPL_set_property(l_dlg_ref,"TITLE","Título da tela de diálogo principal do formulário")
 
# Recupera o título da janela de diálogo instanciada anteriormente.
LET l_title = _ADVPL_get_property(l_dlg_ref,"TITLE")

# Ativa a janela de diálogo instanciada anteriormente, invocando o método ACTIVATE com o parâmetro TRUE (abrir e exibir a janela).
CALL _ADVPL_set_property(l_dlg_ref,"ACTIVATE",TRUE)


Destruindo um componente | destroy_component()



     A função AdvPL
destroy_component() permite destruir um componente instanciado através da função create_component(), visando liberar a memória alocada durante seu uso. Esta função recebe por parâmetro o código de referência do componente que será destruído.


Exemplo de código para destruição de um componente FreeForm
DEFINE l_dlg_ref VARCHAR(10)
 
# Instância de um novo componente.
LET l_dlg_ref = _ADVPL_create_componente(NULL,"LDIALOG")
    
# Destruição de componente instanciado.
CALL _ADVPL_destroy_componente(l_dlg_ref)