quarta-feira, 22 de janeiro de 2014

Criando abas em uma Dialog customizada

O objetivo de Abas dentro de uma Dialog ou Layer é a navegação organizada dos campos ou informações, disponibilizando uma interface mais limpa e interessante para o usuário.

No site de suporte Totvs é possível encontrar inúmeras funções em Advpl mas infelizmente nem sempre tem tudo o que precisamos.

O objeto para criação de abas em uma Dialog se chama Tfolder e está no TDN conforme link abaixo:

No link informado pode ser consultado as propriedades básicas do objeto para sua criação e manipulação.

Para criar o objeto:

Private oTFolder := NIL
Private aTFolder := {} 

aTFolder := { 'Status Produção', 'Alterações', 'Engengharia', 'Movimento NFs','Veículo', 'Base Instalada'}

oTFolder := TFolder():New( 0,0,aTFolder,,oWinOp4,,,,.T.,,539,140 )


Onde oWinOp4 é o nome da Dialog ou Window de um Layer onde esta sendo criado o objeto, observe que ao criar o TFolder o mesmo estará com as coordenadas Left e Top 0,0 e seu tamanho definido como 539,140. Sendo assim o objeto será criado nessas dimensões. 

O array aTFolder serão as abas que serão criadas dentro do folder, sendo assim quando quiser criar algum objeto dentro do folder basta referenciar assim: oTFolder:aDialogs[X], onde X é o numero da aba.

Caso queira que o objeto seja instanciado num tamanho em que ocupe toda a Dialog ou Window que ele foi criado sem a necessidade de ficar pegando o tamanho da janela e passar para o objeto, pode-se utilizar o seguinte comando apo´s a declaração do objeto:

oTFolder:Align := CONTROL_ALIGN_ALLCLIENT

Folder não utilizando a propriedade de alinhamento (oTFolder:Align := CONTROL_ALIGN_ALLCLIENT)

Folder utilizando a propriedade de alinhamento (oTFolder:Align := CONTROL_ALIGN_ALLCLIENT)


É possível efetuar a criação de abas dentro de abas, caso tenham alguma dúvida por favor postem pois posso passar vários exemplos de utilização.

Até a próxima.
 

2 comentários:

  1. Bom dia. Legal seu Blog. Parabéns!
    Estou com dificuldade para validar o conteúdo de campos usando Dialogs na TFolder.
    Coloquei no X3_VALID e X3_VLDUSR, também tentei fazer via programação, mas ao debugar eu vi que o Protheus não atualiza o conteúdo nos objetos (?!). Como você faz para validar o conteúdo dos campos em tempo de digitação?

    ResponderExcluir
  2. pelas variaves de memoria M->XXXXXXX

    ResponderExcluir