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!

Categorias: ADVPL - Dicas

0 comentário

Deixe um comentário