Clipper On Line • Ver Tópico - Mensagem de Alerta

Mensagem de Alerta

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Mensagem de Alerta

Mensagempor Cavalo Marinho » 11 Dez 2013 19:20

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 de usuário

Cavalo Marinho
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 142
Data de registro: 01 Ago 2009 10:01
Cidade/Estado: Aracaju/Se
Curtiu: 3 vezes
Mens.Curtidas: 3 vezes

Mensagem de Alerta

Mensagempor Toledo » 11 Dez 2013 20:42

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 de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3065
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 246 vezes
Mens.Curtidas: 242 vezes

Mensagem de Alerta

Mensagempor Cavalo Marinho » 11 Dez 2013 21:09

Obrigado Toledo, vou olhar o exemplo pra ver se encaixa no que estou querendo.
Avatar de usuário

Cavalo Marinho
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 142
Data de registro: 01 Ago 2009 10:01
Cidade/Estado: Aracaju/Se
Curtiu: 3 vezes
Mens.Curtidas: 3 vezes

Mensagem de Alerta

Mensagempor Poka » 12 Dez 2013 07:56

Olá

Veja se esta rotina serve

                                                                              
# 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 de usuário

Poka
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 427
Data de registro: 25 Out 2004 21:26
Cidade/Estado: Leme/SP
Curtiu: 0 vez
Mens.Curtidas: 18 vezes

Mensagem de Alerta

Mensagempor Vlademiro » 06 Mai 2020 21:46

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.

    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 de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 671
Data de registro: 11 Jul 2005 02:46
Curtiu: 14 vezes
Mens.Curtidas: 50 vezes

Mensagem de Alerta

Mensagempor JoséQuintas » 07 Mai 2020 00:48

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) Visualizado 464 vezes
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 14660
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 864 vezes

Mensagem de Alerta

Mensagempor Vlademiro » 07 Mai 2020 19:10

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 de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 671
Data de registro: 11 Jul 2005 02:46
Curtiu: 14 vezes
Mens.Curtidas: 50 vezes

Mensagem de Alerta

Mensagempor JoséQuintas » 07 Mai 2020 19:44

Se for o caso, coloque em vermelho quando tem tarefa, algo que fique em destaque.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 14660
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 864 vezes




Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 2 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro