No artigo de hoje, vamos demonstrar em como criar textos com sombras usando a classe TSay em uma dialog.
Algumas vezes, precisamos criar algum visual para demonstrar um TSay numa tela, e certa vez me perguntaram como eu tinha feito a thumb do nosso curso de lógica em AdvPL, e foi com uma dialog nativa, abaixo segue o print:
A lógica para montar é basicamente essa:
- É necessário ter 2 cores, uma mais clara e uma mais escura (nesse exemplo chamamos de nCorLetr01 e nCorLetr02)
- Para cada label com sombra, será necessário criar dobrado, então se você for ter o texto “Daniel” terá que criar Daniel duas vezes
- Ai para criar os labels, você cria o mais claro primeiro, e depois o mais escuro por cima, com a coluna e linha menores do que o mais claro
Abaixo o código fonte desenvolvido:
//Bibliotecas
#Include 'TOTVS.ch'
/*/{Protheus.doc} User Function zAdvPL
Funcao com tela customizada usando a classe TDialog que foi gerado pelo PDialogMaker
@type Function
@author Atilio
@since 08/10/2022
@see https://atiliosistemas.com/portfolio/pdialogmaker/
@obs Obrigado por usar um aplicativo da Atilio Sistemas
/*/
User Function zAdvPL()
Local aArea := FWGetArea()
Local nCorFundo := RGB(238, 238, 238)
Local nJanAltura := 400
Local nJanLargur := 580
Local cJanTitulo := 'Cursos do Terminal de Informacao'
Local lDimPixels := .T.
Local lCentraliz := .T.
Local nObjLinha := 0
Local nObjColun := 0
Local nObjLargu := 0
Local nObjAltur := 0
Local nCorLetr01 := RGB(149, 179, 215)
Local nCorLetr02 := RGB(031, 073, 125)
Private cFontNome := 'Tahoma'
Private oFontMaior := TFont():New(cFontNome, , -158, , .T.)
Private oFontMenor := TFont():New(cFontNome, , -035, , .T.)
Private oDialogPvt
Private bBlocoIni := {|| /*fSuaFuncao()*/ } //Aqui voce pode acionar funcoes customizadas que irao ser acionadas ao abrir a dialog
//objetos
Private oSaySubTi1
Private cSaySubTi1 := 'Logica em'
Private oSaySubTi2
Private cSaySubTi2 := 'Logica em'
Private oSayTitul1
Private cSayTitul1 := 'AdvPL'
Private oSayTitul2
Private cSayTitul2 := 'AdvPL'
//Cria a dialog
oDialogPvt := TDialog():New(0, 0, nJanAltura, nJanLargur, cJanTitulo, , , , , , nCorFundo, , , lDimPixels)
//Sub Título com azul mais claro atrás
nObjLinha := 47
nObjColun := 16
nObjLargu := 250
nObjAltur := 30
oSaySubTi1 := TSay():New(nObjLinha, nObjColun, {|| cSaySubTi1}, oDialogPvt, /*cPicture*/, oFontMenor, , , , lDimPixels, nCorLetr01, /*nClrBack*/, nObjLargu, nObjAltur, , , , , , /*lHTML*/)
//Sub Título com azul mais escuro na frente
nObjLinha := 44
nObjColun := 13
nObjLargu := 250
nObjAltur := 30
oSaySubTi2 := TSay():New(nObjLinha, nObjColun, {|| cSaySubTi2}, oDialogPvt, /*cPicture*/, oFontMenor, , , , lDimPixels, nCorLetr02, /*nClrBack*/, nObjLargu, nObjAltur, , , , , , /*lHTML*/)
//Título com azul mais claro atrás
nObjLinha := 64
nObjColun := 23
nObjLargu := 250
nObjAltur := 160
oSayTitul1 := TSay():New(nObjLinha, nObjColun, {|| cSayTitul1}, oDialogPvt, /*cPicture*/, oFontMaior, , , , lDimPixels, nCorLetr01, /*nClrBack*/, nObjLargu, nObjAltur, , , , , , /*lHTML*/)
//Título com azul mais escuro na frente
nObjLinha := 54
nObjColun := 13
nObjLargu := 250
nObjAltur := 160
oSayTitul2 := TSay():New(nObjLinha, nObjColun, {|| cSayTitul2}, oDialogPvt, /*cPicture*/, oFontMaior, , , , lDimPixels, nCorLetr02, /*nClrBack*/, nObjLargu, nObjAltur, , , , , , /*lHTML*/)
//Ativa e exibe a janela
oDialogPvt:Activate(, , , lCentraliz, , , bBlocoIni)
FWRestArea(aArea)
Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.

Rapaz, o analista com um lado artístico é outro nível.
Boa Giulliano rs…
É muita bondade e generosidade sua, são apenas muitas gambiarras rs…
Um grande abraço.