Mensagem de Alerta

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
Cavalo Marinho
Usuário Nível 3
Usuário Nível 3
Mensagens: 156
Registrado em: 01 Ago 2009 10:01
Localização: Aracaju/Se

Mensagem de Alerta

Mensagem 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.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Mensagem de Alerta

Mensagem 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,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
Cavalo Marinho
Usuário Nível 3
Usuário Nível 3
Mensagens: 156
Registrado em: 01 Ago 2009 10:01
Localização: Aracaju/Se

Mensagem de Alerta

Mensagem por Cavalo Marinho »

Obrigado Toledo, vou olhar o exemplo pra ver se encaixa no que estou querendo.
Avatar do usuário
Poka
Usuário Nível 4
Usuário Nível 4
Mensagens: 563
Registrado em: 25 Out 2004 21:26
Localização: Leme/SP

Mensagem de Alerta

Mensagem 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
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

Mensagem de Alerta

Mensagem 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
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Mensagem de Alerta

Mensagem 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 1553 vezes
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

Mensagem de Alerta

Mensagem 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
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Mensagem de Alerta

Mensagem por JoséQuintas »

Se for o caso, coloque em vermelho quando tem tarefa, algo que fique em destaque.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder