Nesse vídeo demonstraremos a utilização da classe TFolder, que serve para criar abas dentro de uma tela.
Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:
//Bibliotecas
#Include "TOTVS.ch"
/*/{Protheus.doc} User Function zExe487
Classe para criar abas dentro de uma Dialog
@type Function
@author Atilio
@since 04/04/2023
@see https://tdn.totvs.com/display/tec/TFolder
@obs
**** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao ****
/*/
User Function zExe487()
Local aArea := FWGetArea()
Local nCorFundo := RGB(238, 238, 238)
Local nJanAltura := 248
Local nJanLargur := 655
Local cJanTitulo := 'Exemplo TFolder'
Local lDimPixels := .T.
Local lCentraliz := .T.
Local nObjLinha := 0
Local nObjColun := 0
Local nObjLargu := 0
Local nObjAltur := 0
Private cFontNome := 'Tahoma'
Private oFontPadrao := TFont():New(cFontNome, , -12)
Private oDialogPvt
Private bBlocoIni := {|| /*fSuaFuncao()*/ } //Aqui voce pode acionar funcoes customizadas que irao ser acionadas ao abrir a dialog
//objeto0
Private oBtnObj0
Private cBtnObj0 := 'Confirmar'
Private bBtnObj0 := {|| MsgInfo('Primeira Aba (Campo A): ' + xGetObj2A + ', Segunda Aba (Campo B): ' + xGetObj2B + ', Terceira Aba (Campo C): ' + xGetObj2C, 'Atencao objeto0')}
//objeto1
Private oSayObj1A
Private cSayObj1A := 'Campo A:'
//objeto2
Private oGetObj2A
Private xGetObj2A := Space(10) //Se o get for data para inicilizar use dToS(''), se for numerico inicie com 0
//objeto1
Private oSayObj1B
Private cSayObj1B := 'Campo B:'
//objeto2
Private oGetObj2B
Private xGetObj2B := Space(10) //Se o get for data para inicilizar use dToS(''), se for numerico inicie com 0
//objeto1
Private oSayObj1C
Private cSayObj1C := 'Campo C:'
//objeto2
Private oGetObj2C
Private xGetObj2C := Space(10) //Se o get for data para inicilizar use dToS(''), se for numerico inicie com 0
//Abas
Private oFolder
Private aAbas := {"Cadastro", "Complemento", "Outros"}
//Cria a dialog
oDialogPvt := TDialog():New(0, 0, nJanAltura, nJanLargur, cJanTitulo, , , , , , nCorFundo, , , lDimPixels)
//objeto0 - usando a classe TButton
nObjLinha := 106
nObjColun := 5
nObjLargu := 75
nObjAltur := 15
oBtnObj0 := TButton():New(nObjLinha, nObjColun, cBtnObj0, oDialogPvt, bBtnObj0, nObjLargu, nObjAltur, , oFontPadrao, , lDimPixels)
//Cria as abas
oFolder := TFolder():New(001, 001, aAbas, /*aDialogs*/, oDialogPvt, /*nOption*/, /*nClrFore*/, /*uParam8*/, lDimPixels, /*uParam10*/, (nJanLargur/2)-1, (nJanAltura/2)-30)
/* Aba 1 */
//objeto1 - usando a classe TSay
nObjLinha := 7
nObjColun := 2
nObjLargu := 28
nObjAltur := 6
oSayObj1A := TSay():New(nObjLinha, nObjColun, {|| cSayObj1A}, oFolder:aDialogs[1], /*cPicture*/, oFontPadrao, , , , lDimPixels, /*nClrText*/, /*nClrBack*/, nObjLargu, nObjAltur, , , , , , /*lHTML*/)
//objeto2 - usando a classe TGet
nObjLinha := 5
nObjColun := 37
nObjLargu := 50
nObjAltur := 10
oGetObj2A := TGet():New(nObjLinha, nObjColun, {|u| Iif(PCount() > 0 , xGetObj2A := u, xGetObj2A)}, oFolder:aDialogs[1], nObjLargu, nObjAltur, /*cPict*/, /*bValid*/, /*nClrFore*/, /*nClrBack*/, oFontPadrao, , , lDimPixels)
oGetObj2A:Picture := '@!' //Mascara / Picture do campo
/* Aba 2 */
//objeto1 - usando a classe TSay
nObjLinha := 7
nObjColun := 2
nObjLargu := 28
nObjAltur := 6
oSayObj1B := TSay():New(nObjLinha, nObjColun, {|| cSayObj1B}, oFolder:aDialogs[2], /*cPicture*/, oFontPadrao, , , , lDimPixels, /*nClrText*/, /*nClrBack*/, nObjLargu, nObjAltur, , , , , , /*lHTML*/)
//objeto2 - usando a classe TGet
nObjLinha := 5
nObjColun := 37
nObjLargu := 100
nObjAltur := 10
oGetObj2B := TGet():New(nObjLinha, nObjColun, {|u| Iif(PCount() > 0 , xGetObj2B := u, xGetObj2B)}, oFolder:aDialogs[2], nObjLargu, nObjAltur, /*cPict*/, /*bValid*/, /*nClrFore*/, /*nClrBack*/, oFontPadrao, , , lDimPixels)
oGetObj2B:Picture := '@!' //Mascara / Picture do campo
/* Aba 3 */
//objeto1 - usando a classe TSay
nObjLinha := 7
nObjColun := 2
nObjLargu := 28
nObjAltur := 6
oSayObj1C := TSay():New(nObjLinha, nObjColun, {|| cSayObj1C}, oFolder:aDialogs[3], /*cPicture*/, oFontPadrao, , , , lDimPixels, /*nClrText*/, /*nClrBack*/, nObjLargu, nObjAltur, , , , , , /*lHTML*/)
//objeto2 - usando a classe TGet
nObjLinha := 5
nObjColun := 37
nObjLargu := 150
nObjAltur := 10
oGetObj2C := TGet():New(nObjLinha, nObjColun, {|u| Iif(PCount() > 0 , xGetObj2C := u, xGetObj2C)}, oFolder:aDialogs[3], nObjLargu, nObjAltur, /*cPict*/, /*bValid*/, /*nClrFore*/, /*nClrBack*/, oFontPadrao, , , lDimPixels)
oGetObj2C:Picture := '@!' //Mascara / Picture do campo
//Ativa e exibe a janela
oDialogPvt:Activate(, , , lCentraliz, , , bBlocoIni)
FWRestArea(aArea)
Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.