Question

Deux ou trois questions idiotes:

Si j'inclure dans un événement:

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

pourrais-je alors avec un peu plus de code retourner et « cliquez sur le bouton OK. Alors que, fondamentalement, le message Boox libère automatiquement, puis passe automatiquement loin?

Je sais que stupide parce que vous voulez savoir, pourquoi voulez-vous la boîte de message, puis .....

bien a) je veux juste savoir si vous pouvez le faire, et ce serait la commande

b) j'ai quelques formes de base (objets de forme) qui sont rendus visibles lorsque la boîte de message apparaît. Mais sans avoir la boîte de message là-bas, il n'y a pas d'interruption temporaire code en attendant le bouton à cliquer, et à cet effet ces jolis objets d'image étant rendu visible ne prend effet à la forme.

Je ne ai pas vraiment besoin de la boîte de message, juste la perturbation temporaire qui montre les objets.

Merci!

Était-ce utile?

La solution

A MsgBox est modale. Il n'y a que deux paramètres liés à Modality

  • ApplicationModal
  • SystemModal

Donc, si le Msgbox est par votre sauté application actuelle, aucun code fonctionnera jusqu'à ce que vous cliquez sur un bouton dans la boîte de message.

La façon de contourner ce problème est de concevoir votre propre boîte de message en utilisant un formulaire. Vous pouvez sauter cette et le garder sur et vous pouvez « cliquer » sur un bouton que vous voulez sur elle.

Si vous voulez un délai, vous pouvez utiliser l'API Win pour dormir

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

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

Autres conseils

Je sais que cela a été demandé il y a un certain temps, mais est-ce la solution que j'utilise:

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

Comment cela fonctionne est une boîte de message est affiché comme un normal serait cependant il a sa propre horloge système qui signifie que vous pouvez automatiquement fermer la boîte de message sans même faire quoi que ce soit.

Le numéro 1 signifie combien de secondes vous voulez qu'il apparaisse pour avant de fermer automatiquement.

J'utilise ceci pour enregistrer les procédures comme une notification utile que quelque chose a sauvé, mais ne nécessite pas l'utilisateur de cliquer effectivement « OK ».

En tout cas c'est mes deux centimes la valeur d'une réponse. Espérons que cela aide quelqu'un d'autre aussi!

Sendkeys "~",false

rejeter le msgbox (en supposant qu'il a le focus)

Je pense que vous êtes à la recherche pour les événements de peinture, ou de forcer un rafraîchissement de forme mais pour obtenir ce que vous voulez vraiment faire!

Edit: Ah putain, ouais, parce que c'est le code modal est suspendu ... D'oh! Comme l'a suggéré, soit écrire votre propre ou vous auriez à jeter quelque chose dans un autre thread pour le faire, et je ne sais pas comment faire multithreading dans MS Access!

Second Edit: Avez-vous regardé Application.Echo False de suspendre et de reprendre la peinture Application.Echo True mise en page?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top