MENSAGEM EM LABEL

HUBER.FABIO 22/03/2010 17:00:45
#337643
Boa tarde amigos ! vou tentar seu claro.

Tenho um processamento dentro de um while e durante o processo algums mensagem serão mostradas (usando label - não vou usar o msgbox), o que preciso é que a cada mensagem o sistema espere a tecla ENTER ser pressionada para que o processo continue.

do while not eof()
rotinas do processo...
label1.caption = [Ô]mensagem[Ô]

fica na msg acima até que o ENTER seja pressionado

loop

só para complementar..esse processo está dentro de um Módulo que chamo de um form
MICROSCHEME 22/03/2010 17:28:25
#337648
Private Declare Sub Sleep Lib [Ô]kernel32[Ô] (ByVal dwMilliseconds As Long)

Call Sleep(5000)

Para o processamento por 5 segundos; agora se tu tá processando num loop significa que tem um início
e um final este processamento.

Então porque aguardar enter?

Se quizer realmente várias vezes parar o processamento e aguardar o enter, vai ter usar msgbox sem dúvida nenhuma

. . .

HUBER.FABIO 22/03/2010 17:42:40
#337649
Caro amigo, saudações!

Na rotina que devo seguir está bem claro conforme abaixo:

[Ô]Deve aguardar uma tecla do operador. é utilizada quando se deseja que o operador seja avisado de alguma mensagem apresentada na tela[Ô]

Isto está bem claro no manual, como uso label para mensagens no rodapé da tela então infelismente não vou poder usar o msgbox.
HUBER.FABIO 23/03/2010 10:19:34
#337693
Amigos ! HELP

Será que não exista nada realmente que eu possa usa para dar essa interrupição até que o ENTER seja pressionado, label diferenciado..OCULTAR O MSGBOX teria jeito..já viram que estou apelando..RS
MARCOLACERA 23/03/2010 10:34:04
#337694
Caro colega eu no seu lugar colocaria um outro LOOP dentro do principal, este ficaria infinitamente alimento está LABEL até que o USER tecle ENTER.
HUBER.FABIO 23/03/2010 10:46:11
#337695
Olá amigo Marco !

Já pensei nisso mais não sei como fazer para ficar num loop até que o enter seja pressionado pois meu label mostro em uma rotina que está em um módulo e meu formulário está aberto também nesse momento, fiquei meio perdido de como entrar no loop e como sair do loop..se puder as dicas agradeço
FFCOUTO 23/03/2010 20:39:57
#337765
Resposta escolhida

No módulo você deve criar uma variável publica do tipo Integer

Public LastKey As Integer     [ô]Armazena a última tecla pressionada

do while not eof()
rotinas do processo...
label1.caption = [Ô]mensagem[Ô]

fica na msg acima até que o ENTER seja pressionado
do while LastKey <> vbKeyReturn
DoEvents
loop

LastKey = 0 [ô]Reseta a variável
loop


No Form faça

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
[ô]Shift = 0 significa que não foi utilizado Ctrl ou Shift ou Alt em combinações de teclas
If Shift = 0 Then LastKey = KeyCode
End Sub

Private Sub Form_Load()

KeyPreview = True [ô]Com isso o form passa a responder a qualquer tecla pressionada no evento KeyDown

End sub



espero ter ajudado.
HUBER.FABIO 24/03/2010 09:54:01
#337785
Caro amigo FFCOUTO, quase ! preciso de ajuda novamente. Fiz uma rotina conforme abaixo e não está funcionando. Tenho um campo text e ao pressionar ENTER chamo a rotina de processo que está em um módulo. Esta rotina tem uma mensagem que tem que ficar dentro do loop (igual passou) e sair quando pressionado ENTER.

Dim retorno As Long

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If Shift = 0 Then LastKey = KeyCode
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
ChamaProcesso
End If
End Sub

Private Sub ChamaProcesso()
retorno = 10000
Do

If (retorno = 10000) Then

[ô]rotinas do processo...
Label1.Caption = [Ô]mensagem[Ô]

[ô]fica na msg acima até que o ENTER seja pressionado
Do While LastKey <> vbKeyReturn
DoEvents
Loop

LastKey = 0 [ô]Reseta a variável
Label1.Caption = [Ô][Ô]
End If
Loop Until Not (retorno = 10000)
End Sub
HUBER.FABIO 24/03/2010 10:26:38
#337790
Caro amigo FFCOUTO

Coloquei o LastKey = 0 dentro do KeyPress do meu campo text. Parece que funfo, será que era isso mesmo.

HUBER.FABIO 24/03/2010 10:56:42
#337793
Caro amigo FFCOUTO..probleminha ! HELP

Quando estou debugando o projeto a rotina agora funciona perfeitamente, mais quando em executação não funciona. Pressionando PauseBreak vi que a rotina está no Loop e meu lastkey = 9
HUBER.FABIO 24/03/2010 11:40:03
#337795
Estou testando esta..passa direto

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If Shift = 0 Then LastKey = KeyCode
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
ChamaProcesso
End If
End Sub

Private Sub ChamaProcesso()
[ô]rotinas do processo...
Label1.Caption = [Ô]mensagem[Ô]
Label2.Caption = KeyCode

[ô]fica na msg acima até que o ENTER seja pressionado
Do While LastKey <> vbKeyReturn
DoEvents
Loop

Label1.Caption = [Ô][Ô]
End Sub
Página 1 de 2 [13 registro(s)]
Tópico encerrado , respostas não são mais permitidas