Pergunta

Então, algumas perguntas tolas:

Se eu incluir isso em algum evento:

MsgBox " ", vbOkOnly, "This little message box"

Eu poderia então com um pouco mais de código virando e clique no botão OK. Então, basicamente, a mensagem Boox aparece automaticamente e depois desaparece automaticamente?

Eu sei que é bobo porque você quer saber, por que você quer a caixa de mensagem então ...

bem a) Eu só quero saber se você pode fazer isso e qual seria o comando

b) Tenho algumas formas básicas (objetos de forma) que são visíveis quando a caixa de mensagem é exibida. Mas, sem a caixa de mensagem lá, não há interrupção temporária de código enquanto aguarda o botão ser clicado e, portanto, esses objetos bonitos de imagem que estão sendo visíveis entra em vigor no formulário.

Então, eu realmente não preciso da caixa de mensagem, apenas a interrupção temporária que mostra os objetos.

Obrigado!

Foi útil?

Solução

UMA MsgBox é modal. Existem apenas duas configurações relacionadas à modalidade

  • ApplicationModal
  • SystemModal

Portanto, se o msgbox for exibido pelo seu aplicativo atual, nenhum código será executado até que você clique em um botão na caixa de mensagem.

A maneira de contornar isso é projetar sua própria caixa de mensagem usando um formulário. Você pode preparar isso e mantê -lo ligado e, em seguida, "clicar" a qualquer botão desejar.

Se você quiser um atraso, você pode usar a API WIN para dormir

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub ApiSleep(SleepMilliseconds as Long)
    Sleep SleepMilliseconds 
End Sub

Outras dicas

Eu sei que isso foi perguntado há um tempo atrás, mas a solução que eu uso é a seguinte:

CreateObject("WScript.Shell").PopUp "Save Successful!", 1, "Save"

Como isso funciona é que uma caixa de mensagem é exibida exatamente como uma normal, no entanto, ele possui seu próprio cronômetro do sistema, o que significa que você pode fechar automaticamente a caixa de mensagem sem sequer fazer nada.

O número 1 significa quantos segundos você deseja que seja exibido antes de fechar automaticamente.

Eu uso isso para salvar procedimentos como uma notificação útil de que algo salva, mas não exige que o usuário realmente clique em "OK".

De qualquer forma, esses são meus dois centavos no valor de uma resposta. Espero que isso ajude outra pessoa também!

Sendkeys "~",false

Deve descartar o msgbox (assumindo que ele tem foco)

Eu acho que você está procurando os eventos de pintura ou forçando uma atualização de formulário para alcançar o que você realmente deseja fazer!

EDIT: Ah, droga, sim, porque é modal o código está suspenso ... D'HOH! Como sugerido, escreva o seu próprio, ou você teria que jogar algo em outro tópico para fazê -lo, e eu não tenho idéia de como fazer o Multi Threading no MS Access!

Segunda edição: você já olhou Application.Echo False para suspender e Application.Echo True Para retomar o layout da pintura?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top