Αναγν. άρθρου: 322710 - Τελευταία αναθεώρηση: Τρίτη, 21 Δεκεμβρίου 2010 - Αναθεώρηση: 2.0

ΔΙΑΔΙΚΑΣΙΕΣ: Εμφάνισης και πλαίσια ελέγχου του παραθύρου διαλόγου εκτύπωσης από τη Visual Basic

Συμβουλή συστήματοςΑυτό το άρθρο ισχύει για διαφορετικό λειτουργικό σύστημα από αυτό που χρησιμοποιείτε. Το περιεχόμενο του άρθρου που ενδέχεται να μην σας αφορά έχει απενεργοποιηθεί.

Σε αυτήν τη σελίδα

Ανάπτυξη όλων | Σύμπτυξη όλων

Περίληψη

Μπορείτε να χρησιμοποιήσετε το αρχείο Vbprndlg.dll αντί για τοΕκτύπωσητμήμα πλαισίου διαλόγου της Visual BasicCommonDialogControl. Εκθέτει τις ιδιότητες αυτού του αρχείου και να παρέχει λειτουργικότητα που τοCommonDialogστοιχείο ελέγχου δεν την υποστηρίζει.

Για ναCommonDialogστοιχείο ελέγχου σε Visual Basic επιτρέπει τηνΕκτύπωσηνα εμφανίζεται το πλαίσιο διαλόγου, αλλά δεν παρέχει πρόσβαση σε πολλές από τις ιδιότητες που μπορούν να οριστούν στο στοΕκτύπωσηπαράθυρο διαλόγου και που καταναλώνεται από τοΕκτυπωτής (Printer)Object. Εξαιτίας προβλημάτων στοίχιση με δομές (δηλαδή χρήστη τύπους) όταν γίνονται οι λειτουργίες προγραμματισμού διασύνδεσης (API) Win32 εφαρμογής από τη Visual Basic, δεν είναι δυνατό να αποκτήσετε πρόσθετες πληροφορίες αξιόπιστα χρησιμοποιώντας αυτές τις κλήσεις API. Ως λύση, αυτό το άρθρο παρέχει ένα αρχείο DLL που μπορείτε να χρησιμοποιήσετε αντί για τοΕκτυπωτής (Printer)μέρος τουCommonDialogControl.



Άμεση λήψη του στοιχείου ελέγχου

Το ακόλουθο αρχείο είναι διαθέσιμο για λήψη από το Κέντρο λήψης της Microsoft (Download Center):
Vbprndlg.exe (http://download.microsoft.com/download//vb60pro/Utility/1.0/WIN98MeXP/EN-US/Vbprndlg.exe)
Ημερομηνία έκδοσης: Σεπ-30-2002

Για περισσότερες πληροφορίες σχετικά με τον τρόπο λήψης αρχείων υποστήριξης της Microsoft, κάντε κλικ στον αριθμό του άρθρου παρακάτω για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft (Knowledge Base):
119591  (http://support.microsoft.com/kb/119591/EN-US/ ) Τρόπος απόκτησης αρχείων υποστήριξης της Microsoft από ηλεκτρονικές υπηρεσίες
Η Microsoft εξέτασε το αρχείο αυτό για ιούς. Η Microsoft χρησιμοποίησε το πιο πρόσφατο λογισμικό εντοπισμού ιών που ήταν διαθέσιμο κατά την ημερομηνία δημοσίευσης του αρχείου. Το αρχείο είναι αποθηκευμένο σε διακομιστές με ενισχυμένη ασφάλεια, οι οποίοι βοηθούν στην αποτροπή μη εξουσιοδοτημένων αλλαγών στο αρχείο.Το αρχείο Vbprndlg.exe περιέχει τα ακόλουθα αρχεία:

Σύμπτυξη αυτού του πίνακαΑνάπτυξη αυτού του πίνακα
Όνομα αρχείουΜέγεθος (Size)
Vbprndlg.dll100.0 KB
Vbprndlg.Exp1.0 KB
Vbprndlg.lib1.72 KB
Vbprndlg.DEPByte που 118
Readme.txt10.9 KB


Εγκατάσταση Vbprndlg.exe

  1. Εξαγάγετε τα αρχεία σε μια θέση που δεν θα διαγραφεί και έχει μια απλή διαδρομή. Αυτοί οι τύποι αρχείων συνήθως τοποθετούνται στον κατάλογο System32 κάτω από τα Windows ή Winnt καταλόγου.
  2. Κάντε κλικStart, και στη συνέχεια κάντε κλικ στο κουμπίΕκτέλεση.
  3. Πληκτρολογήστε τα ακόλουθα και στη συνέχεια κάντε κλικ στο κουμπίOk:
    RegSvr32 C:\Windows\System32\VBPrnDlg.dll
    Βεβαιωθείτε ότι χρησιμοποιείτε την πραγματική πλήρη διαδρομή προς το αρχείο DLL ως το δεύτερο μέρος αυτής της εντολής.

    Λαμβάνετε ένα μήνυμα που θα καταχωρηθεί με επιτυχία το αρχείο DLL.

Κλάση Printerdlg τεκμηρίωσης

Αυτό το DLL είναι ένα στοιχείο COM το οποίο προστίθεται ως αναφορά σε μια εφαρμογή της Visual Basic. Αφού προσθέσετε το αρχείο DLL, μπορείτε να το χρησιμοποιήσετε σε κώδικα για να εμφανίσετε τοΕκτύπωσηπαράθυρο διαλόγου και να ανακτήσει τις πληροφορίες που επιλέγει ο χρήστης. Αυτή η συμπεριφορά είναι ίδια με τη συμπεριφορά τουΕκτύπωσηπαράθυρο διαλόγου με τοCommonDialogΈλεγχος της Visual Basic.

Το παράθυρο διαλόγου Ιδιότητες πλαισίου

Για την τεκμηρίωση σχετικά με οποιαδήποτε από αυτές τις ιδιότητες, ανατρέξτε στην τεκμηρίωση για τοCommonDialogControl.Printer.hDCείναι μόνο για ανάγνωση, αλλά όλες τις παρακάτω ιδιότητες εκτός από εκείνες που έχουν επισημανθεί με αστερίσκο (*) απευθείας αντιστοίχιση σε τοΕκτυπωτής (Printer)το αντικείμενο όταν χρησιμοποιείτε την ακόλουθη σύνταξη:
Printer.Copies = printDlg.Copies
				
  • Αντίγραφα
  • Προέλευση (Orientation)
  • ColorMode
  • όνομα_προγράμματος_οδήγησης
  • Διπλής όψης
  • PaperBin
  • PaperSize
  • Θύρα
  • PrintQuality
  • hDC
  • Όνομα_εκτυπωτή *
  • Ελάχιστο *
  • Μέγιστος αριθμός *
  • FromPage *
  • ToPage *
Όνομα_εκτυπωτήαντιστοιχεί σεΌνομα_συσκευήςΣτοΕκτυπωτής (Printer)Object. Τα τέσσερα τελευταία ιδιότητες που έχουν επισημανθεί με αστερίσκο (*) που χρησιμοποιούνται για να προσδιορίσετε εάν ένα υποσύνολο των διαθέσιμων σελίδων πρέπει να εκτυπωθούν. Για να ενεργοποιήσετε τοΕπιλέξτε τις σελίδεςμέρος τουΕκτύπωσηπαράθυρο διαλόγου,Μέγιστοπρέπει να οριστεί σε έναν αριθμό που είναι μεγαλύτερα απόΤο ελάχιστο. Εάν,Το ελάχιστοείναι μεγαλύτερο απόΜέγιστο, παρουσιάζεται ένα σφάλμα, όταν εμφανιστεί το παράθυρο διαλόγου. Εάν ο χρήστης επιλέξει ένα υποσύνολο τουPrinterDlgαντικείμενο βεβαιώνεται ότι βρίσκεται εντός των ορίωνΤο ελάχιστοANDΜέγιστο, και επιστρέφεται με τοFromPageANDToPageΙδιότητες (Properties). Αυτές οι ιδιότητες δεν αντιστοίχιση απευθείας επάνω στοΕκτυπωτής (Printer)αντικείμενο, έτσι ώστε το πρόγραμμα που προκαλεί το παράθυρο διαλόγου και να ελέγχει την εκτύπωση πρέπει να χειριστεί αυτές τις ιδιότητες.

Ιδιότητες και μέθοδοι ελέγχου του παραθύρου διαλόγου

  • Σημαίες-Αυτό είναι το ίδιο με τοΣημαίεςιδιότητα από τοCommonDialogControl. Ελέγχει ορισμένες από τις δυνατότητες του παραθύρου διαλόγου. Η τιμή αυτή ορίζεται using "Ή" με διαφορετικές σταθερές με τηνVBPrinterConstantsδομή. Για παράδειγμα:
    printDlg.Flags = VBPrinterConstants.cdlPDDisablePrintToFile _
                         Or VBPrinterConstants.cdlPDNoPageNums
    					
    Οι σταθερές αυτές είναι οι εξής:
    Constant                  Value       Description
    ---------------------------------------------------------------------------
    cdlPDAllPages             &H0         Returns or sets the state of the All 
                                          Pages option button.
    
    cdlPDCollate              &H10        Returns or sets the state of the  
                                          Collate check box.
    
    cdlPDDisablePrintToFile   &H80000     Disables the Print To File check box.
    
    cdlPDHelpButton           &H800       Causes the dialog box to display the 
                                          Help button.
    
    cdlPDHidePrintToFile      &H100000    Hides the Print To File check box.
    
    cdlPDNoPageNums           &H8         Disables the Pages option button and 
                                          the associated edit control.
    
    cdlPDNoSelection          &H4         Disables the Selection option button.
    
    cdlPDNoWarning            &H80        Prevents a warning message from being
                                          displayed when there is no default 
                                          printer.
    
    cdlPDPageNums             &H2         Returns or sets the state of the 
                                          Pages option button.
    
    cdlPDPrintSetup           &H40        Causes the system to display the 
                                          Print Setup dialog box instead of 
                                          the Print dialog box.
    
    cdlPDPrintToFile          &H20        Returns or sets the state of the 
                                          Print To File check box.
    
    cdlPDReturnDC             &H100       Returns a device context for the 
                                          printer selection made in the dialog 
                                          box. The device context is returned 
                                          in the hDC property of the dialog 
                                          box.
    
    cdlPDReturnDefault        &H400       Returns the default printer name.
    
    cdlPDReturnIC             &H200       Returns an information context for 
                                          the printer selection made in the 
                                          dialog box. An information context 
                                          provides a fast way to get 
                                          information about the device without 
                                          creating a device context. The 
                                          information context is returned in 
                                          the hDC property of the dialog box.
    
    cdlPDSelection            &H1         Returns or sets the state of the
                                          Selection option button. If neither 
                                          cdlPDPageNums nor cdlPDSelection is 
                                          specified, the All option button is 
                                          in the selected state.
    
    cdlPDUseDevModeCopies     &H40000     If a printer driver does not support
                                          multiple copies, setting this flag 
                                          disables the Number of Copies spinner
                                          control in the Print dialog box. If a
                                          driver does support multiple copies, 
                                          setting this flag indicates that the 
                                          dialog box stores the requested 
                                          number of copies in the Copies 
                                          property.
    
    					
    Μπορείτε να χρησιμοποιήσετε τοΣημαίεςΓια να προσδιορίσετε αν ο χρήστης επιλέξει ένα πεδίο όπως η ιδιότηταΕκτύπωση σε αρχείο. Για να το κάνετε αυτό, ανατρέξτε για να δείτε εάν ηcdlPDPrintToFileη σημαία έχει οριστεί όταν το στοιχείο ελέγχου έχει επιστραφεί από την εμφάνιση του παραθύρου διαλόγου.

  • CancelError-Αυτή είναι μια σημαία δυαδικής τιμής που καθορίζει αν θα επιστραφεί ένα σφάλμα στο πρόγραμμα, εάν ο χρήστης κάνει κλικΆκυρο (Cancel). Από προεπιλογή, αυτή είναι FALSE (Ψευδής), έτσι ώστε το σφάλμα δεν παρουσιάζεται εάν ο χρήστης κάνει κλικΆκυρο (Cancel). Όταν ορίζεται στην τιμή True, ο αριθμός σφάλματος 32755 (& H7FF3) παρουσιάζεται όταν ο χρήστης κάνει κλικΆκυρο (Cancel). Μπορείτε να παγιδεύσετε αυτό το σφάλμα να χειριστεί την περίπτωση όπου ο χρήστης ακυρώσει το παράθυρο διαλόγου.
  • ShowPrinter- This is the only method in this class. Calling this method displays the dialog box. This accepts the handle of the calling window as a parameter. For example, the following method returns a Boolean:
    printDlg.ShowPrinter Me.hWnd
    						
    This can be ignored. The value is True if the user clicksΕκτύπωσηand False otherwise (that is, if the user clicksΆκυρο (Cancel)).
ΣΗΜΕΙΩΣΗ: In all these examples,printDlgis an instance of the class that is contained in this DLL. It is declared by using the following code:
Dim printDlg As PrinterDlg
Set printDlg = New PrinterDlg
				

Βήματα για τη δημιουργία του δείγματος

To create a sample application that will use the DLL to determine the user's preferences and then write them to the Debug window, follow these steps:
  1. In Microsoft Visual Basic, create a new Standard EXE project. Από προεπιλογή, δημιουργείται η φόρμα Form1.
  2. Στο διακομιστήΤο έργομενού, κάντε κλικ στο κουμπίΑναφορές.
  3. ΕπιλογήMicrosoft VB Printer Dialog(PSS), και στη συνέχεια κάντε κλικ στο κουμπίOk.
  4. Προσθήκη ενόςΣτοιχείο CommandButtonελέγχου στη φόρμα. Από προεπιλογή, το στοιχείοCommand1δημιουργείται.
  5. Διπλό κλικCommand1.
  6. Επικολλήστε τον ακόλουθο κώδικα στο στοCommand1_ClickΣυμβάν:
    Dim printDlg As PrinterDlg
    Set printDlg = New PrinterDlg
    ' Set the starting information for the dialog box based on the current
    ' printer settings.
    printDlg.PrinterName = Printer.DeviceName
    printDlg.DriverName = Printer.DriverName
    printDlg.Port = Printer.Port
    
    ' Set the default PaperBin so that a valid value is returned even
    ' in the Cancel case.
    printDlg.PaperBin = Printer.PaperBin
    
    ' Set the flags for the PrinterDlg object using the same flags as in the
    ' common dialog control. The structure starts with VBPrinterConstants.
    printDlg.Flags = VBPrinterConstants.cdlPDNoSelection _
                     Or VBPrinterConstants.cdlPDNoPageNums _
                     Or VBPrinterConstants.cdlPDReturnDC
    Printer.TrackDefault = False
    
    ' When CancelError is set to True the ShowPrinterDlg will return error
    ' 32755. You can handle the error to know when the Cancel button was
    ' clicked. Enable this by uncommenting the lines prefixed with "'**".
    '**printDlg.CancelError = True
    
    ' Add error handling for Cancel.
    '**On Error GoTo Cancel
    If Not printDlg.ShowPrinter(Me.hWnd) Then
        Debug.Print "Cancel Selected"
        Exit Sub
    End If
    
    'Turn off Error Handling for Cancel.
    '**On Error GoTo 0
    Dim NewPrinterName As String
    Dim objPrinter As Printer
    Dim strsetting As String
    
    ' Locate the printer that the user selected in the Printers collection.
    NewPrinterName = UCase$(printDlg.PrinterName)
    If Printer.DeviceName <> NewPrinterName Then
        For Each objPrinter In Printers
           If UCase$(objPrinter.DeviceName) = NewPrinterName Then
                Set Printer = objPrinter
           End If
        Next
    End If
    
    ' Copy user input from the dialog box to the properties of the selected printer.
    Printer.Copies = printDlg.Copies
    Printer.Orientation = printDlg.Orientation
    Printer.ColorMode = printDlg.ColorMode
    Printer.Duplex = printDlg.Duplex
    Printer.PaperBin = printDlg.PaperBin
    Printer.PaperSize = printDlg.PaperSize
    Printer.PrintQuality = printDlg.PrintQuality
    
    ' Display the results in the immediate (Debug) window.
    ' NOTE: Supported values for PaperBin and Size are printer specific. Some
    ' common defaults are defined in the Win32 SDK in MSDN and in Visual Basic.
    ' Print quality is the number of dots per inch.
    With Printer
        Debug.Print .DeviceName
        If .Orientation = 1 Then
            strsetting = "Portrait. "
        Else
            strsetting = "Landscape. "
        End If
        Debug.Print "Copies = " & .Copies, "Orientation = " & _
           strsetting
        If .ColorMode = 1 Then
            strsetting = "Black and White. "
        Else
            strsetting = "Color. "
        End If
        Debug.Print "ColorMode = " & strsetting
        If .Duplex = 1 Then
            strsetting = "None. "
        ElseIf .Duplex = 2 Then
            strsetting = "Horizontal/Long Edge. "
        ElseIf .Duplex = 3 Then
            strsetting = "Vertical/Short Edge. "
        Else
            strsetting = "Unknown. "
        End If
        Debug.Print "Duplex = " & strsetting
        Debug.Print "PaperBin = " & .PaperBin
        Debug.Print "PaperSize = " & .PaperSize
        Debug.Print "PrintQuality = " & .PrintQuality
        If (printDlg.Flags And VBPrinterConstants.cdlPDPrintToFile) = _
           VBPrinterConstants.cdlPDPrintToFile Then
             Debug.Print "Print to File Selected"
        Else
             Debug.Print "Print to File Not Selected"
        End If
        Debug.Print "hDC = " & printDlg.hDC
    End With
    Exit Sub
    '**Cancel:
    '**If Err.Number = 32755 Then
    '**    Debug.Print "Cancel Selected"
    '**Else
    '**    Debug.Print "A nonCancel Error Occured - "; Err.Number
    '**End If
    					
  7. Press the F5 key to start debugging and to start the application. Κάντε κλικCommand1Για να ανοίξετε τοΕκτύπωσηπαράθυρο διαλόγου.
  8. After you return from theΕκτύπωσηdialog box, look in the Debug window at the output that was returned.
ΣΗΜΕΙΩΣΗ: If you want a specific error to be raised and handled when the user clicksΆκυρο (Cancel)(similar to the behavior that occurs with theCommonDialogcontrol), uncomment the lines that are prefixed with "'**".

Αναφορές

For additional information about using the Print dialog box in Visual Basic, click the article number below to view the article in the Microsoft Knowledge Base:
173981  (http://support.microsoft.com/kb/173981/EN-US/ ) PRB: Behavior Differences of Print Dialog on Different Platforms
For additional information about printer settings, click the article numbers below to view the articles in the Microsoft Knowledge Base:
190218  (http://support.microsoft.com/kb/190218/EN-US/ ) HOWTO: Retrieve Settings From a Printer Driver
194789  (http://support.microsoft.com/kb/194789/EN-US/ ) HOWTO: Determine Available PaperBins with DeviceCapabilities API

Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
Λέξεις-κλειδιά: 
kbdownload kbcmndlgprint kbfile kbhowto kbhowtomaster kbsample kbmt KB322710 KbMtel
Μηχανικά μεταφρασμένοΜηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:322710  (http://support.microsoft.com/kb/322710/en-us/ )