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 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.


 #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.