MSGBOX COM TIMER

HUBER 23/12/2014 10:57:15
#443366
Olá amigos !

Com certeza que preciso é bem simples porém estou apanhando e não encontrei nada que me ajudasse. Que preciso é ir executando comando timer enquanto faço um processo.
Exemplo

Criei objeto timer com interval 1000 e enabled = False

Quero por exemplo que um label fica piscando, testei até com msgbox conforme abaixo

timer1.enabled = true
If MsgBox([Ô]CONFIRMA?[Ô], vbQuestion + vbYesNo, [Ô]TESTE) = vbYes Then

Ele só entra no timer após eu responder a mensagem, já usei o doevents em vários lugares e não funciona



ASHKATCHUP 23/12/2014 14:12:59
#443374
Possivel? Sim.

Mas bem complicado, já que o MSGBOX suspende a execução do programa principal.

Então, tu tem as seguintes opções:
-Usar um MSGBOX próprio (custom)
-Criar um TIMER usando API do Windows


A solução mais [Ô]fácil[Ô] é a segunda.


Dá uma olhada em: http://www.developerfusion.com/code/141/close-a-message-box-automatically/
SINCLAIR 23/12/2014 16:45:48
#443378
O Colega ASHKATCHUP deu o caminho possível, mas indicou a segunda saída.

Eu, particularmente, optaria pela primeira. Seria assim: Em um formulário tem uma TextBox e nela se coloca a mensagem a ser exibida. Os botões Sim e Não inserem em uma variável Global booleana o conteúdo True (Sim) ou False (quando clica no Não). No formulário de mensagem tem um timer com o seguinte código:

Text1.Visible = not Text1.Visible


Fiz até uma função que recebe como parâmetro o texto da mensagem e faz o seguinte:

Em um módulo coloca um código como este:
Public blnSim as Boolean

Public Function ExibirMensagem (strMensagem as String, blnPiscarMensagem as Boolean) as Integer
Load frmMensagem
frmMensagem.Text1.Text = strMensagem
frmMensagem.Timer1.Enabled = blnPiscarMensagem
frmMensagem.Show vbModal
if blnSim = True then ExibirMensagem = vbYes else ExibirMensagem = vbNo
End Function


No formulário tem 2 botões, sendo Sim e Não, cada um com o seguinte código

No caso do botão Sim (quando ele é clicado)
blnSim = True


No caso do botão Não (quando ele é clicado)
blnSim = False


Bastaria chamar com algo assim:
dim intMsg as Integer

[ô]Na variável intMsg retornará vbYes ou vbNo
intMsg = ExibirMensagem([Ô]Você está vendo um texto piscante e poderá clicar em Sim ou Não[Ô], True)

ASHKATCHUP 25/12/2014 22:30:32
#443411
A tua alternativa também é muito boa, colega ZEUZEBIO3!!
MARCELO.TREZE 27/12/2014 19:57:13
#443434
Resposta escolhida
mais simples ainda é usar uma messagebox não modal, usando api do windows, veja

[ô]no General do form
Private Declare Function MessageBox Lib [Ô]user32[Ô] Alias [Ô]MessageBoxA[Ô] (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
Private Const MB_OKCANCEL As Long = &H1

[ô]para chamar a messagebox
Private Sub Command1_Click()
Dim ret As Variant
ret = MessageBox(0, [Ô]Esta é uma messagebox não modal[Ô], [Ô]Messagebox não modal[Ô], MB_OKCANCEL)
End Sub


faça ai o teste, eu não testei aqui mas acredito que vai funcionar
MARCELO.TREZE 27/12/2014 20:17:43
#443436
esqueci de informar o resto, se funcionar o código acima vc pode usar as seguintes função

Os botões que aparecem no formulário são definidos pela variável MB_OKCANCEL , podemos usar também as seguintes:

MB_ABORTRETRYIGNORE - Define três botões : Abort, Retry, e Ignore.
MB_OK - Define somente um botão : OK. (este é o padrão)
MB_RETRYCANCEL - Define dois botões : Retry and Cancel.
MB_YESNO - Define dois botões - : Yes and No.
MB_YESNOCANCEL - Define três botões : Yes, No, and Cancel.

Se quiser definir um ícone na caixa de mensagem basta usar uma das seguintes contantes :

MB_ICONEXCLAMATION,MB_ICONWARNING - Exibe um ícon com de uma exclamação.
MB_ICONINFORMATION, MB_ICONASTERISK - Exibe um ícone com a letra i em um círculo.
MB_ICONQUESTION -Exibe um ícone de interrogação.
MB_ICONSTOP,MB_ICONERROR,MB_ICONHAND - Exibe um icone de Stop

Para definir qual é o botão padrão temos as seguintes constantes :

MB_DEFBUTTON1 - Define o primeiro botão como padrão.
MB_DEFBUTTON2 - Define o segundo botão como padrão.
MB_DEFBUTTON3 - Define o terceiro botão como padrão.
MB_DEFBUTTON4 - Define o quarto botão como padrão.
Tópico encerrado , respostas não são mais permitidas