2009-11-03 7 views
0

J'ai un projet avec des graphiques qui peuvent être imprimés. Lorsque vous cliquez sur le bouton d'impression, une forme Aperçu avant impression des charges avec:VB6 Form.Show ne fonctionne pas

Public Sub print() 
    printPreview.Show 
End Sub 

Tout fonctionne bien sur ma machine de développement à la fois quand je le lance en mode débogage et quand installer notre package d'installation distribuée.

Pour une raison quelconque cependant, tout le monde qui essaie d'imprimer ne peut jamais afficher l'aperçu. D'autres tests montrent que la fonction Load de l'aperçu n'est jamais appelée et que tout ce qui suit Show dans la fonction d'impression est ignoré. C'est comme si la fonction passe directement à End Sub de la fonction d'impression.

Il semble que le script printPreview.Show échoue, mais il n'y a pas d'erreur, d'avertissement ou d'indication de quelque chose de mal autre que le fait que le formulaire n'apparaît pas. Est-ce que quelqu'un a déjà vécu quelque chose comme ça?

Répondre

4

Vous pouvez avoir un On Error Resume Next dans la pile d'appels quelque part.

Vous voudrez peut-être changer la fonction pour avoir son propre gestionnaire d'erreur et y piéger des messages ou On Error GoTo 0.

Je voudrais également vérifier les journaux d'événements sur les machines où cela échoue pour toute information supplémentaire.

+0

Merci, Raj More. Cela a vraiment aidé. Il s'avère que l'installateur manquait un composant, mais l'erreur était en train d'être réduite au silence. – Everett

3

Y a-t-il un "On Error ..." en vigueur au moment de l'appel des méthodes d'impression? Je devinez que votre formulaire printPreview repose sur un ou plusieurs composants qui ne sont pas installés sur les machines des utilisateurs et qu'une erreur est lancée, que vous attrapez sans le savoir.

0

Avez-vous essayé de passer le vbModal, juste pour voir ce qui se passe? De plus (vous peut-être déjà fait), mettre quelques instructions de débogage dans le code:

Public Sub print() 
    Debug.Print "Before show" 
    printPreview.Show 
    Debug.Print "After Show" 
End Sub 

Et mettre dans et Class_Initialize de l'impression (appelé implicitement si l'instance de formulaire n'existe pas déjà!) sous forme de prévisualisation, ainsi:

' In the print preview form: 

Public Sub Class_Initialize() 
    Debug.Print "Start of PrintPreview constructor" 
    ' … rest of the code. 
    Debug.Print "End of PrintPreview constructor" 
End Sub 

Private Sub Form_Load() 
    Debug.Print "Start of PrintPreview.Form_Load" 
    ' … rest of the code. 
    Debug.Print "End of PrintPreview.Form_Load" 
End Sub 

Et assurez-vous exactement la sortie est manquante. De votre description plutôt clairsemée, je soupçonne que la méthode Class_Initialize provoque une erreur.