Ir ao conteúdo

Problemas com MsgBox bloqueando o programa!


Pulllga

Posts recomendados

Postado

Olá, sou o Pulllga,

Eu tenho um programa com alguns Timers, e em determinado momento, um timer exibe um MsgBox, mas enquanto o MsgBox está na tela, o timer para!!!

Já tentei o DoEvents (sei que não se aplica aqui), mas não adianta, o que posso fazer para o MsgBox não pausar o Timer???

valeu :D:D:D

  • Membro VIP
Postado

Isso é comportamento normal do MsgBox, a função dele é esperar um decisão do usuário, mesmo que seja apenas clicar no botão "ok".

Até o usuário decidir, ficar tudo parado mesmo, do contrário o usuário ficaria louco e o programa poderia até fazer coisas que não deveria.

E o DoEvents só vai ser útil em estruturas de repetição (sei que você sabe ehehehehe).

Mas diz aí, o que você pretendia fazer? De repente, tem até outro jeito de fazer a coisa funcionar...

Postado

É que estou trabalhando em um software que já existe aqui na empresa, só estou agregando funções, a principal delas, é o envio de e-mail sem outlook, ai, quando a rotina termina, avisa com um MsgBox que o e-mail foi enviado!

Eu não quero colocar mais um form no programa, porque já tem muitos, por isso pensei no MsgBox!!!

Existe alguma outra forma de exibir mensagens sem parar o programa???

Obs.: Mesmo com a MsgBox na tela, o componente Winsock continua comunicando normal!

T+ :D:D:D

  • Membro VIP
Postado

Não existe outro jeito, mas você pode simular um MsgBox usando um PictureBox.

- Coloque um PictureBox no Form, mais ou menos do tamanho que seria um MsgBox

- Coloque um label com a mensagem dentro do PictureBox, se quiser enfeitar pode colocar um ícone de MsgBox também

- Coloque um CommandButton lá dentro também, para "fechar" esse PictureBox

- Deixe este PictureBox com a propriedade Visible = False

- Quando terminar de enviar o e-mail, na parte onde seria chamdo o MsgBox, coloque este PictureBox com a propriedade Visible = True.

Inclusive pode até colocar um Timer para fechá-lo automaticamente em uns 10 segundos, por exemplo.

Assim você exibe a mensagem, não para a execução do programa e não precisa adicionar outro Form.

:joia:

  • Membro VIP
Postado

Nossa Clemente, que gambiarra!!!

Estou sem tempo de testar agora, mas acho que usar threads e/ou MessageBoxA pode trazer resultados melhores.

Postado

Gostei da ideia da "gambiarra", o programa que estou trabalhando é 95% "gambiarra", ele não foi feito por mim, eu estou tendo que enfiar um monte de trechos de códigos, ai só fica porcaria, mas funciona!!!

T+ :D:D:D

  • Membro VIP
Postado
Nossa Clemente, que gambiarra!!!

Estou sem tempo de testar agora, mas acho que usar threads e/ou MessageBoxA pode trazer resultados melhores.

Gostei da ideia da "gambiarra", o programa que estou trabalhando é 95% "gambiarra", ele não foi feito por mim, eu estou tendo que enfiar um monte de trechos de códigos, ai só fica porcaria, mas funciona!!!

:D

É mesmo, baita gambiarra... mas acho que até funciona legal, e se fizer direito, o resultado deve ficar bonito!

Bom, pra dizer a verdade eu nunca fiz isso, foi só uma ideia que me veio na cabeça, pra não ter que colocar outro Form.

Ah, você pode também colocar outro Form e usar o velho truque da API "SendMessage" com a constante HWND_TOPMOST, para manter ele no topo sem ter que usar "vbModal".

É isso que eu faço em diversas situações, por exemplo, quando vou carregar alguma coisa demorada: enquanto vai carregando, o Form fica lá no topo exibindo percentual, barrinha de progresso, essas firulas...

No seu caso, pode até usar enquanto está enviando o email, mudando a mensagem depois que terminar de enviar.

Garanto que esse sim fica legal.

:)

Editando: Acho que encontrei alguma coisa que pode servir:

FreeVBCode - Timed MsgBox

Mas eu sinceramente achei muito código pra pouca coisa...

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!