Quando criamos uma dialog no protheus, automaticamente é adicionado o botão de fechar na barra superior, mas em algumas ocasiões queremos que o usuario execute alguma ação e não feche esta janela, vamos usar um fonte que alem de ter essas configurações, tambem fechará automaticamente após determiado tempo.
Na linha de implementação da dialog, podemos adicionar o comando para definir o style DS_MODALFRAME, ficando o final da linha toda como STYLE DS_MODALFRAME.
Ainda podemos remover a funcionalidade de fechar a janela ao pressionar a tecla de escape ESC, para isso devemos alterar a pripriedade DIALOG:lEscClose := .F.
Aaixo o exemplo completo usado nesse post
#INCLUDE "TOTVS.CH" #INCLUDE "RWMAKE.CH" #INCLUDE "TOPCONN.CH" User Function SPDIALO() Local nTimeMsg as numeric nTimeMsg := 60000 //defini um minuto para fechar a janela //Adiciona linha no array com as cores DEFINE MSDIALOG oDlg FROM 36,1 TO 300,540 TITLE "Fecha Automatico" PIXEL STYLE DS_MODALFRAME //dialog sem o X para fechar oDlg:lEscClose := .F. //desabilita fechar a janela ao pressinar esc. oDlg:lCentered := .T. //abre a janela centralizado. @ 0.5, 1.8 Say "Esta tela será finalizada automaticamente em " Of oDlg @ 1.5, 1.8 Say AllTrim(Str((nTimeMsg/1000)/60))+" minutos." Of oDlg oTimer2:= TTimer():New(nTimeMsg,{|| oDlg:End() },oDlg) oTimer2:Activate() DEFINE SBUTTON FROM 05, (oDlg:nRight / 2) - 40 TYPE 2 ENABLE OF oDlg ACTION ( oDlg:End() ) ACTIVATE MSDIALOG oDlg CENTERED Return .T.
Não deixe de assinar a nossa newsletter e fica por dentro de todos os post.
O código fonte desse e outros exemplos podem ser encontrados em nosso git.
Documentação original aqui.
Post interessantes:
Aprenda a instalar o Protheus aqui.
Retornar datas por extenso aqui.
Barras de progresso aqui.
Aprenda usar o FieldPos aqui.
Dúvidas e sugestões, entre em contato.
Obrigado e até a próxima!
0 comentário