Página 1 de 1

Mensagem de Alerta

Enviado: 11 Dez 2013 20:20
por Cavalo Marinho
Bom pessoal, procurei algo a respeito e nao encontrei.
é o seguinte: Preciso executar uma determinada rotina(funcão) e quero mostrar uma mensagem na tela como uma msginfo só que sem botão sem nada somente a mensagem e a rotina que chamou continuar sendo executada e no final da rotina destruir a telinha de mensagem.
exemplo: de um determinado ponto do sistema eu chamo uma funcao A ou uma Funcao B ou C estas funcoes deverá chamar uma função que gere uma telinha com informação tipo "AGUARDE O PROCESSAMENTO" , mas sem interromper as funcoes que a chamaram, apos o processamento destas funcoes deverá destruir a tela de informação.
Desculpe se nao fui bem claro.

Mensagem de Alerta

Enviado: 11 Dez 2013 21:42
por Toledo
Amigo, veja os seguintes exemplos na pasta \SAMPLES da sua MiniGui:

MiniGui Extended:
\SAMPLES\BASIC\WAIT_WINDOW

HMG Oficial:
\SAMPLES\Controls\WaitWindow\WAIT.WINDOW.1

Abraços,

Mensagem de Alerta

Enviado: 11 Dez 2013 22:09
por Cavalo Marinho
Obrigado Toledo, vou olhar o exemplo pra ver se encaixa no que estou querendo.

Mensagem de Alerta

Enviado: 12 Dez 2013 08:56
por Poka
Olá

Veja se esta rotina serve

Código: Selecionar todos

																										
# INCLUDE "MINIGUI.CH"
# INCLUDE "I_COLOR.CH"
# INCLUDE "ERROR.CH"
# INCLUDE "I_KEYBD.CH"
///////////////////
FUNCT MAIN


   PUBL W_LARGURA:=GETDESKTOPWIDTH()
   PUBL W_ALTURA:=GETDESKTOPHEIGHT()
   
   DEFINE WINDOW PRINCIPAL;
      AT 0,0;
      WIDTH w_largura;
      HEIGHT W_ALTURA;
      ICON "";
      MAIN ;
      ON INIT MSG(0) ;
      TITLE   "Sistema";
      NOMAXIMIZE;
      FONT "ARIAL" SIZE 10;
      BACKCOLOR   WHITE
      
      
		    *-------defincoes dos botoes da janela princiapl
   
			end window
   // tela de aviso de processamento
   DEFINE WINDOW MENSAGEM ;
      AT W_ALTURA/4,W_LARGURA/8 ; 
      WIDTH W_LARGURA-200;
      HEIGHT W_ALTURA/2;
      TITLE '';
      TOPMOST NOCAPTION;
      BACKCOLOR BLUE

      @ MENSAGEM.HEIGHT/2,0 LABEL LABEL_MENSAGEM ;
      WIDTH MENSAGEM.WIDTH HEIGHT 40 ;
      VALUE "" ;
      FONT 'ARIAL' SIZE 18;
      BACKCOLOR BLUE FONTCOLOR WHITE;
      CENTERALIGN

   END WINDOW
   
   *---------------------
   
   
   ACTIVATE WINDOW PRINCIPAL
   ACTIVATE WINDOW MENSAGEM
      
RETU NIL



*----------------
/////////////////////
FUNC MSG(X,_XMENSAGEM)
   /* 
   x= 1 mostra mensagem
			   0 esconde mensagem
			exemplo
			chame essa rotina antes do procedimento 
			msg(1)  mostra mensagem padrao
			msg(1," atualizando arquivos")   
			apos o porocedimento 
			msg(0)   esconde tela
			*/
					  

   DECLARE WINDOW MENSAGEM
   
  	IF EMPTY(_XMENSAGEM_)
    		MENSAGEM.LABEL_MENSAGEM.VALUE:="Aguarde...Processando"
  	ELSE
   		MENSAGEM.LABEL_MENSAGEM.VALUE:=LOWER(_XMENSAGEM_ )
  	ENDIF
	  IF X=1
	    MENSAGEM.SHOW
  	ELSE
	    MENSAGEM.HIDE
  	ENDIF

RETU NIL

*---------------------------


Poka

Mensagem de Alerta

Enviado: 06 Mai 2020 21:46
por Vlademiro
Olá, pessoal
Toledo escreveu:Amigo, veja os seguintes exemplos na pasta \SAMPLES da sua MiniGui:

MiniGui Extended:
\SAMPLES\BASIC\WAIT_WINDOW

HMG Oficial:
\SAMPLES\Controls\WaitWindow\WAIT.WINDOW.1

Abraços,
Executei esse exemplo e funcionou perfeitamente, mas quando a aplicação tem mais de uma janela fica esquisito, porque a janela MAIN sempre fica aparecendo.

Código: Selecionar todos

    WAIT WINDOW "Buscando CEP (Aguarde)..."  NOWAIT 
    //MEU PROCESSAMENTO
    WAIT CLEAR

Fui ler a documentação e lá tem o seguinte :
"This command must be used only after main window was activated."

Tem como evitar que a janela MAIN APAREÇA ?

Tentei usar o SetFocus na minha janela de formulário para evitar que a Main sobreponha, mas não deu certo.

Uso HMG 3.4.4

Não sei se fui claro, mas é um efeito esquisito mesmo. Eu tenho a Main, chamo a janela do meu formulário, consulto o CEP, e quando boto a mensagem de "aguarde", a janela Main aparece sobrepondo tudo e logo após a WAIT CLEAR o meu formulário aparece de novo.

Obrigado

Mensagem de Alerta

Enviado: 07 Mai 2020 00:48
por JoséQuintas
Pra que complicar tanto?
Tem status bar?
Coloca lá um pedaço com numeração, indicando tarefas de background.
bola.jpg
bola.jpg (11.61 KiB) Exibido 1550 vezes

Mensagem de Alerta

Enviado: 07 Mai 2020 19:10
por Vlademiro
Vou seguir o seu conselho. O status bar é o controle indicado para esse tipo de tarefa. Acho que, nesse caso, as aplicações em modo texto são melhores. Uma boa janela de mensagem (a moda antiga, tipo PopOn/PopOff) é melhor para o operador ver o aviso. Um status bar é muito discreto, mas é o que vou usar agora. Se houver reclamação eu vejo outra solução. O colega Poka postou uns códigos que eu cheguei a testar sem sucesso, mas o problema está comigo e não com o código dele. Em todo caso eu vou ficar com esse status bar mesmo (pelo menos por enquanto)

Obrigado a todos

Mensagem de Alerta

Enviado: 07 Mai 2020 19:44
por JoséQuintas
Se for o caso, coloque em vermelho quando tem tarefa, algo que fique em destaque.