- Criado por Ieda Ferreira Alves Flock, última alteração por Cleane Hermann em 28 ago, 2023

Gerencia a distribuição dos componentes da tela, de forma alinha e organizada em colunas.
Sua utilização dispensa a necessidade de definir o posicionamento absoluto dos componentes em tela, o ajuste é feito conforme o tamanho de seus componentes filhos.
A distribuição dos componentes visuais na tela é realizada através de linhas e colunas, definida no método COLUMNS_COUNT.
Se o leiaute foi definido com duas colunas, por exemplo, significa que em cada linha da tela poderá ter dois componentes, um ao lado do outro.
Uma vez definida a quantidade de colunas para o leiaute, não será mais possível alterá-la.
Sintaxe
LET l_layout_reference = _ADVPL_create_component( NULL, "LLAYOUTMANGER", < cContainerReference > )
Métodos GET
Métodos acessíveis utilizando a função _ADVPL_get_property,
que permite recuperar e manipular os valores do componente:
Método GET: CELL_SPACE
Retorna se está definida para adotar uma margem entre as colunas do leiaute.
Sintaxe
_ADVPL_get_property(< cReference >,"CELL_SPACE") => nHasCellSpace
Parâmetros
Nome | Tipo | Descrição |
---|---|---|
nHasCellSpace | INTEGER | Indicador que define uma margem entre as colunas do leiaute, sendo: TRUE: será criada a margem entre as colunas do leiaute FALSE: não será criada a margem entre as colunas do leiaute |
Exemplo
LET l_hasCellSpace = _ADVPL_set_property( < cReference >, "CELL_SPACE")
Método GET: COLUMNS_COUNT
Retorna a quantidade de colunas para cada linha do leiaute, esta quantidade define quantos componentes serão posicionados em uma mesma linha.
Sintaxe
_ADVPL_get_property(< cReference >,"COLUMNS_COUNT") => nColumnsCount
Parâmetros
Nome | Tipo | Descrição |
---|---|---|
nColumnsCount | INTEGER | Quantidade de colunas colunas do leiaute |
Exemplo
LET l_columns = _ADVPL_get_property( < cReference >, "COLUMNS_COUNT")
Método GET: EXPANSIBLE
Retorna se o próximo componente a ser adicionado no leiaute será expansível para que seja redimensionando conforme o tamanho da tela.
Sintaxe
_ADVPL_get_property(< cReference >,"EXPANSIBLE") => nExpansible
Retorno
Nome | Tipo | Descrição |
---|---|---|
nExpansible | INTEGER | Indicador que define se o próximo componente como expansível, sendo: TRUE: o próximo componente que será criado no leiaute será expansível FALSE: o próximo componente que será criado no leiaute não será expansível |
Exemplo
LET l_expansible = _ADVPL_get_property( < cReference >, "EXPANSIBLE")
Método GET: HAS_EXPANSIBLE
Indica se o componente está expandido.
Sintaxe
_ADVPL_get_property(< cReference >,"HAS_EXPANSIBLE") => lIsExpansible
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
cReference | CHAR | Referência do componente LLayoutManager | Sim |
Retornos
Tipo | Descrição |
---|---|
BOOLEAN | Indicador que define o componente está expandido. |
Exemplo
LET l_isExpansible = _ADVPL_get_property( < cReference >, "HAS_EXPANSIBLE")
Método GET: HEIGHT
Retorna a altura do componente de layout.
Sintaxe
_ADVPL_set_property(< cReference >,"HEIGHT" ) nHeight
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
cReference | CHAR | Referência do componente LLayoutManager | Sim |
Retornos
Nome | Tipo | Descrição |
---|---|---|
nHeight | INTEGER | Altura do componente de layout |
Exemplo
LET l_height = _ADVPL_get_property( < cReference >, "HEIGHT")
Método GET: ROW_SPACE
Retorna se foi definida para existir margem entre as linhas do leiaute.
Sintaxe
_ADVPL_set_property(< cReference >,"ROW_SPACE") => nHasRowSpace
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
cReference | CHAR | Referência do componente LLayoutManager | Sim |
Retornos
Nome | Tipo | Descrição |
---|---|---|
nHasRowSpace | INTEGER | Indicador que define uma margem entre as linhas do leiaute, sendo: TRUE: será criada a margem entre as linhas do leiaute FALSE: não será criada a margem entre as linhas do leiaute |
Exemplo
LET l_hasRowSpace = _ADVPL_set_property( < cReference >, "ROW_SPACE")
Método GET: WIDTH
Retorna a largura do componente de layout.
Sintaxe
_ADVPL_get_property(< cReference >,"WIDTH") => cWidth
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
cReference | CHAR | Referência do componente LLayoutManager | Sim |
Retornos
Nome | Tipo | Descrição |
---|---|---|
nWidth | INTEGER | Largura do componente de layout. |
Exemplo
LET l_width = _ADVPL_set_property( < cReference >, "WIDTH")
Métodos SET
Métodos acessíveis através da função _ADVPL_set_property
que permite alterar e manipular os valores do componente:
Método SET: ADD_EMPTY_COLUMN
Adiciona uma coluna vazia no leiaute, pulando uma coluna na distribuição dos componentes.
Sintaxe
CALL _ADVPL_set_property(< cReference >,"ADD_EMPTY_COLUMN", < nWidth > )
Parâmetros
Nome | Tipo | Descrição | Obrigatório? | Padrão |
---|---|---|---|---|
nWidth | INTEGER | Largura da coluna que será adicionada | Não | 20 |
Exemplo
CALL _ADVPL_set_property( < cReference >, "ADD_EMPTY_COLUMN", 15)
Método SET: ADD_EMPTY_ROW
Adiciona uma linha vazia no leiaute, pulando uma linha na distribuição dos componentes.
Sintaxe
CALL _ADVPL_set_property(< cReference >,"ADD_EMPTY_ROW", < nHeight > )
Parâmetros
Nome | Tipo | Descrição | Obrigatório? | Padrão |
---|---|---|---|---|
nHeight | INTEGER | Altura da linha que será adicionada | Não | 20 |
Exemplo
CALL _ADVPL_set_property( < cReference >, "ADD_EMPTY_ROW", 10)
Método SET: APPLY_LAYOUT
Aplica o leiaute, redimensionando e posicionando os componentes em tela.
Sintaxe
CALL _ADVPL_set_property(< cReference >,"APPLY_LAYOUT", < nRecursive > )
Parâmetros
Nome | Tipo | Descrição | Obrigatório? | Padrão |
---|---|---|---|---|
nRecursive | INTEGER | Indicador que define se a aplicação do leiaute ser recursiva, sendo: TRUE: a aplicação será recursiva, atualizando inclusive os leiautes criados anteriormente na janela FALSE: a aplicação não será recursiva, atualizando apenas o leiaute atual | Não | FALSE |
Exemplo
CALL _ADVPL_set_property( < cReference >, "APPLY_LAYOUT", TRUE)
Método SET: COLUMNS_COUNT
Define a quantidade de colunas para cada linha do leiaute, esta quantidade define quantos componentes serão posicionados em uma mesma linha.
Sintaxe
CALL _ADVPL_set_property(< cReference >,"COLUMNS_COUNT", < nColumns > )
Parâmetros
Nome | Tipo | Descrição | Obrigatório? | Padrão |
---|---|---|---|---|
nColumns | INTEGER | Quantidade de colunas colunas do leiaute | Sim |
Exemplo
CALL _ADVPL_set_property( < cReference >, "COLUMNS_COUNT", 2)
Método SET: CELL_SPACE
Define uma margem entre as colunas do leiaute.
Sintaxe
CALL _ADVPL_set_property(< cReference >,"CELL_SPACE", < nListDir > )
Parâmetros
Nome | Tipo | Descrição | Obrigatório? | Padrão |
---|---|---|---|---|
nListDir | INTEGER | Indicador que define uma margem entre as colunas do leiaute, sendo: TRUE: será criada a margem entre as colunas do leiaute FALSE: não será criada a margem entre as colunas do leiaute | Sim |
Exemplo
CALL _ADVPL_set_property( < cReference >, "CELL_SPACE", TRUE )
Método SET: EXPANSIBLE
Indica se o próximo componente a ser adicionado no leiaute será expansível, redimensionando-o conforme o tamanho da tela.
Sintaxe
CALL _ADVPL_set_property(< cReference >,"EXPANSIBLE", < nExpansible > )
Parâmetros
Nome | Tipo | Descrição | Obrigatório? | Padrão |
---|---|---|---|---|
nExpansible | INTEGER | Indicador que define se o próximo componente como expansível, sendo: TRUE: o próximo componente que será criado no leiaute será expansível FALSE: o próximo componente que será criado no leiaute não será expansível | Sim |
Observações
Para correto funcionamento, o componente adicionado após a execução deste método deve ter alinhamento centralizado.
Exemplo
CALL _ADVPL_set_property( < cReference >, "EXPANSIBLE", TRUE)
Método SET: MARGIN
Define uma margem entre o componente pai e os componentes do leiaute.
Sintaxe
CALL _ADVPL_set_property(< cReference >,"MARGIN", < nMargin > )
Parâmetros
Nome | Tipo | Descrição | Obrigatório? | Padrão |
---|---|---|---|---|
nMargin | INTEGER | Indicador que define uma margem entre o componente pai e os componente do leiaute, sendo: TRUE: será criada a margem entre o componente pai e os componentes do leiaute FALSE: não será criada a margem entre o componente pai e os componentes do leiaute | Sim |
Exemplo
CALL _ADVPL_set_property( < cReference >, "MARGIN", TRUE)
Método SET: MAX_SIZE
Define o tamanho máximo para redimensionamento do componente pai.
Durante o redimensionamento e reposicionamento dos componentes na tela, o leiaute irá considerar o tamanho definido neste método.
Sintaxe
CALL _ADVPL_set_property(< cReference >,"MAX_SIZE", < nWidth >, < nHeight > )
Parâmetros
Nome | Tipo | Descrição | Obrigatório? | Padrão |
---|---|---|---|---|
nWidth | INTEGER | Largura máxima para redimensionamento do componente pai | Sim | |
nHeight | INTEGER | Altura máxima para redimensionamento do componente pai | Sim |
Exemplo
CALL _ADVPL_set_property( < cReference >, "MAX_SIZE", 30, 20)
Método SET: MAX_HEIGHT
Define a altura máxima para redimensionamento do componente pai.
Durante o redimensionamento e reposicionamento dos componentes na tela, o leiaute irá considerar o tamanho definido neste método.
Sintaxe
CALL _ADVPL_set_property(< cReference >,"MAX_HEIGHT", < nHeight > )
Parâmetros
Nome | Tipo | Descrição | Obrigatório? | Padrão |
---|---|---|---|---|
nHeight | INTEGER | Altura máxima para redimensionamento do componente pai | Sim |
Exemplo
CALL _ADVPL_set_property( < cReference >, "MAX_HEIGHT", 27)
Método SET: MAX_WIDTH
Define a largura máxima para redimensionamento do componente pai.
Durante o redimensionamento e reposicionamento dos componentes na tela, o leiaute irá considerar o tamanho definido neste método.
Sintaxe
CALL _ADVPL_set_property(< cReference >,"MAX_WIDTH", < nWidth > )
Parâmetros
Nome | Tipo | Descrição | Obrigatório? | Padrão |
---|---|---|---|---|
nWidth | INTEGER | Largura máxima para redimensionamento do componente pai | Sim |
Exemplo
CALL _ADVPL_set_property( < cReference >, "MAX_WIDTH", 20 )
Método SET: MIN_HEIGHT
Define a altura mínima para redimensionamento do componente pai.
Durante o redimensionamento e reposicionamento dos componentes na tela, o leiaute irá considerar o tamanho definido neste método.
Sintaxe
CALL _ADVPL_set_property(< cReference >,"MIN_HEIGHT", < nHeight > )
Parâmetros
Nome | Tipo | Descrição | Obrigatório? | Padrão |
---|---|---|---|---|
nHeight | INTEGER | Altura mínima para redimensionamento do componente pai | Sim |
Exemplo
CALL _ADVPL_set_property( < cReference >, "MIN_HEIGHT", 30 )
Método SET: MIN_SIZE
Define o tamanho mínimo para redimensionamento do componente pai.
Durante o redimensionamento e reposicionamento dos componentes na tela, o leiaute irá considerar o tamanho definido neste método.
Sintaxe
CALL _ADVPL_set_property(< cReference >,"MIN_SIZE", < nWidth >, < nHeight > )
Parâmetros
Nome | Tipo | Descrição | Obrigatório? | Padrão |
---|---|---|---|---|
nWidth | INTEGER | Largura mínima para redimensionamento do componente pai | Sim | |
nHeight | INTEGER | Altura mínima para redimensionamento do componente pai | Sim |
Exemplo
CALL _ADVPL_set_property( < cReference >, "MIN_SIZE", 24,15 )
Método SET: MIN_WIDTH
Define a largura mínima para redimensionamento do componente pai.
Durante o redimensionamento e reposicionamento dos componentes na tela, o leiaute irá considerar o tamanho definido neste método.
Sintaxe
CALL _ADVPL_set_property(< cReference >,"MIN_WIDTH", < nWidth > )
Parâmetros
Nome | Tipo | Descrição | Obrigatório? | Padrão |
---|---|---|---|---|
nWidth | INTEGER | Largura mínima para redimensionamento do componente pai | Sim |
Exemplo
CALL _ADVPL_set_property( < cReference >, "MIN_WIDTH", 10 )
Método SET: ROW_SPACE
Define uma margem entre as linhas do leiaute.
Sintaxe
CALL _ADVPL_set_property(< cReference >,"ROW_SPACE", < nMargin > )
Parâmetros
Nome | Tipo | Descrição | Obrigatório? | Padrão |
---|---|---|---|---|
nMargin | INTEGER | Indicador que define uma margem entre as linhas do leiaute, sendo: TRUE: será criada a margem entre as linhas do leiaute FALSE: não será criada a margem entre as linhas do leiaute | Sim |
Exemplo
CALL _ADVPL_set_property( < cReference >, "ROW_SPACE", TRUE )
Exemplo
Clique no link na lateral direita para expandir o código de exemplo.
DEFINE ma_tela ARRAY[100] OF RECORD coluna CHAR(200) END RECORD #------------------------# FUNCTION layoutmanager() #------------------------# DEFINE l_dialog_reference, l_panel_reference, l_layout_reference, l_layout_field_reference, l_label_reference, l_component_reference, l_button_reference, l_table_reference, l_column_reference VARCHAR(10) DEFINE l_ind SMALLINT FOR l_ind = 1 TO 100 LET ma_tela[l_ind].coluna = "Coluna ", l_ind USING "&&&", "." END FOR LET l_dialog_reference = _ADVPL_create_component(NULL,"LDIALOG") CALL _ADVPL_set_property(l_dialog_reference,"SIZE",640,480) CALL _ADVPL_set_property(l_dialog_reference,"TITLE","Exemplo de Utilização: LLAYOUTMANAGER") LET l_panel_reference = _ADVPL_create_component(NULL,"LPANEL",l_dialog_reference) CALL _ADVPL_set_property(l_panel_reference,"ALIGN","TOP") LET l_layout_reference = _ADVPL_create_component(NULL,"LLAYOUTMANAGER",l_panel_reference) CALL _ADVPL_set_property(l_layout_reference,"MARGIN",TRUE) CALL _ADVPL_set_property(l_layout_reference,"COLUMNS_COUNT",2) LET l_label_reference = _ADVPL_create_component(NULL,"LLABEL",l_layout_reference) CALL _ADVPL_set_property(l_label_reference,"TEXT","Empresa:") LET l_panel_reference = _ADVPL_create_component(NULL,"LPANEL",l_layout_reference) CALL _ADVPL_set_property(l_panel_reference,"ALIGN","CENTER") LET l_layout_field_reference = _ADVPL_create_component(NULL,"LLAYOUTMANAGER",l_panel_reference) CALL _ADVPL_set_property(l_layout_field_reference,"MARGIN",FALSE) CALL _ADVPL_set_property(l_layout_field_reference,"COLUMNS_COUNT",3) LET l_component_reference = _ADVPL_create_component(NULL,"LTEXTFIELD",l_layout_field_reference) CALL _ADVPL_set_property(l_component_reference,"LENGTH",2) CALL _ADVPL_set_property(l_component_reference,"PICTURE","@!") CALL _ADVPL_set_property(l_component_reference,"TOOLTIP","Código da empresa.") LET l_button_reference = _ADVPL_create_component(NULL,"LIMAGEBUTTON",l_layout_field_reference) CALL _ADVPL_set_property(l_button_reference,"IMAGE","BTPESQ") CALL _ADVPL_set_property(l_button_reference,"SIZE",24,20) LET l_component_reference = _ADVPL_create_component(NULL,"LTEXTFIELD",l_layout_field_reference) CALL _ADVPL_set_property(l_component_reference,"LENGTH",30) CALL _ADVPL_set_property(l_component_reference,"PICTURE","@!") CALL _ADVPL_set_property(l_component_reference,"TOOLTIP","Descrição da empresa informada.") LET l_label_reference = _ADVPL_create_component(NULL,"LLABEL",l_layout_reference) CALL _ADVPL_set_property(l_label_reference,"TEXT","CNPJ:") LET l_component_reference = _ADVPL_create_component(NULL,"LTEXTFIELD",l_layout_reference) CALL _ADVPL_set_property(l_component_reference,"LENGTH",19) CALL _ADVPL_set_property(l_component_reference,"PICTURE","##.###.###/####-##") CALL _ADVPL_set_property(l_component_reference,"TOOLTIP","CNPJ da empresa informada.") LET l_label_reference = _ADVPL_create_component(NULL,"LLABEL",l_layout_reference) CALL _ADVPL_set_property(l_label_reference,"TEXT","Item:") LET l_panel_reference = _ADVPL_create_component(NULL,"LPANEL",l_layout_reference) CALL _ADVPL_set_property(l_panel_reference,"ALIGN","CENTER") LET l_layout_field_reference = _ADVPL_create_component(NULL,"LLAYOUTMANAGER",l_panel_reference) CALL _ADVPL_set_property(l_layout_field_reference,"MARGIN",FALSE) CALL _ADVPL_set_property(l_layout_field_reference,"COLUMNS_COUNT",3) LET l_component_reference = _ADVPL_create_component(NULL,"LTEXTFIELD",l_layout_field_reference) CALL _ADVPL_set_property(l_component_reference,"LENGTH",15) CALL _ADVPL_set_property(l_component_reference,"PICTURE","@!") CALL _ADVPL_set_property(l_component_reference,"TOOLTIP","Código do item.") LET l_button_reference = _ADVPL_create_component(NULL,"LIMAGEBUTTON",l_layout_field_reference) CALL _ADVPL_set_property(l_button_reference,"IMAGE","BTPESQ") CALL _ADVPL_set_property(l_button_reference,"SIZE",24,20) LET l_component_reference = _ADVPL_create_component(NULL,"LTEXTFIELD",l_layout_field_reference) CALL _ADVPL_set_property(l_component_reference,"LENGTH",36) CALL _ADVPL_set_property(l_component_reference,"PICTURE","@!") CALL _ADVPL_set_property(l_component_reference,"TOOLTIP","Descrição do item informada.") LET l_panel_reference = _ADVPL_create_component(NULL,"LPANEL",l_dialog_reference) CALL _ADVPL_set_property(l_panel_reference,"ALIGN","CENTER") LET l_layout_reference = _ADVPL_create_component(NULL,"LLAYOUTMANAGER",l_panel_reference) CALL _ADVPL_set_property(l_layout_reference,"COLUMNS_COUNT",1) CALL _ADVPL_set_property(l_layout_reference,"EXPANSIBLE",TRUE) LET l_table_reference = _ADVPL_create_component(NULL,"LTABLEEX",l_layout_reference) CALL _ADVPL_set_property(l_table_reference,"ALIGN","CENTER") LET l_column_reference = _ADVPL_create_component(NULL,"LTABLECOLUMNEX",l_table_reference) CALL _ADVPL_set_property(l_column_reference,"HEADER","Coluna") CALL _ADVPL_set_property(l_column_reference,"VARIABLE","coluna") CALL _ADVPL_set_property(l_table_reference,"SET_ROWS",ma_tela,100) CALL _ADVPL_set_property(l_dialog_reference,"ACTIVATE",TRUE) END FUNCTION