Páginas filhas
  • LGX - Expandir um grid desenvolvido em FreeForm


Para controlar quando o usuário pode ou não editar o conteúdo de determinadas células em um GRID é possível fazer uso de uma função 4GL que é definida para ser invocada a partir do evento BEFORE_EDIT_ROW.

Para permitir expandir um GRID (Componente LBrowseEx) em um painel do formulário, é preciso atentar para algumas características:

  • O GRID precisa ser instanciado em um LPANEL com propriedade ALIGN setada com valor "CENTER"
  • O painel precisa ser instanciado em um componente LLAYOUTMANAGER com propriedade EXPANSIBLE setada com o valor TRUE
  • Além do painel onde o GRID está instanciado ter ALIGN CENTER, o próprio GRID também deve ter a propriedade ALIGN setada como "CENTER".


O resultado destas características todas irá exibir um GRID no seguinte formato:

Neste caso é um GRID instanciado em um painel onde o componente de layout foi definido com apenas 1 coluna.


Exemplo
 #Cria um componente de layout com 1 coluna (L_CONTAINER é a reference pode ser outro PANEL ou até mesmo LDIALOG ou outro componente que é considerado um container para outros componentes)
 LET l_layout_reference = _ADVPL_create_component(NULL,"LLAYOUTMANAGER",l_container_reference)
 CALL _ADVPL_set_property(l_layout_reference,"COLUMNS_COUNT",1)
 CALL _ADVPL_set_property(l_layout_reference,"MARGIN",FALSE)

 ### Para cada novo componente incluiso dentro do componente de layout que desejar expansão, é necessário setar EXPANSIBLE TRUE,
 ### pois essa propriedade fica inativa após cada adição de novo componente no componente de layout
 CALL _ADVPL_set_property(l_layout_reference,"EXPANSIBLE",TRUE)

 #Cria o componente PAINEL dentro do LAYOUT com alinhamento CENTER para ocupar todo espaço ainda disponivel
 LET l_panel_reference = _ADVPL_create_component(NULL,"LPANEL",l_layout_reference)
 CALL _ADVPL_set_property(l_panel_reference,"ALIGN","CENTER")

 #Cria o componente GRID com alinhamento CENTER para ocupar todo espaço disponivel no painel
 LET l_grid_reference = _ADVPL_create_component(NULL,"LBROWSEEX",l_panel_reference)
 CALL _ADVPL_set_property(l_grid_reference ,"ALIGN","CENTER")


Se for eliminada a propriedade ALIGN CENTER do GRID, pode-se definir a propriedade SIZE para o GRID, para determinar uma largura fixa desejada.