Stampare nuova pagina

di il
8 risposte

Stampare nuova pagina

Ciao a tutti gli amici del forum,con questo codice stampo una pagina..anche perche' non riesco a stampare la continuazione se supera le cordinate da me immesse. Chi mi puo' aiutare sono alla fine del mio programma e mi manca solo di definire le stampe

PS: sono un neofita e il software e per la mia azienda
Dim risposta As Integer
Dim riga
Dim colonne
Dim r
Dim c
Dim X
risposta = MsgBox(\"Stampo la pagina corrente!\", vbQuestion + vbYesNo, Me.Caption)
 If risposta = vbYes Then
  If Option1.Value = True Then
   Printer.Orientation = 1
    ElseIf Option2.Value = True Then
      Printer.Orientation = vbPRORLandscape
   End If
increm = Flex.Row - 1
Printer.CurrentY = 500
Printer.CurrentX = 500
Printer.FontSize = 11
Printer.FontName = \"courier new\"
Printer.Print \"topolino\"
Printer.CurrentY = 900
Printer.CurrentX = 500
Printer.FontSize = 7
Printer.Print \"Servizio Clienti: ?????????????\"
Printer.CurrentY = 1400
Printer.CurrentX = 500
Printer.Print \"Elenco Dettagliato Trasporti\"
Printer.CurrentY = 1530
Printer.CurrentX = 500
Printer.Print \".............................................................................................................................................................................\"
Printer.CurrentY = 1800
Printer.CurrentX = 500
Printer.Print \".............................................................................................................................................................................\"
    colonne = Array(500, 3000, 4000, 5000, 8500, 9500, 10500, 11500, 12500, 14000, 18000, 19500, 21000)
    riga = 1700
 With Flex
        For r = 0 To .Rows - 1
            For c = 0 To .Cols - 1
                Printer.CurrentY = riga + (r * 250)
                Printer.CurrentX = colonne(c - 0)
                Printer.Print .TextMatrix(r, c);
  
            Next c
             If Printer.CurrentY > 16000 Then
    Printer.NewPage
    Printer.CurrentY = 500
   End If
        Next r
    End With
     Printer.CurrentY = Printer.CurrentY + 300
    Printer.CurrentX = 500
    Printer.Print \"............................................................................................................................................................................\"
    Printer.CurrentX = 9500
    Printer.FontSize = 10
    Printer.Print \"Imponibile totale €\" & Space(15) & \"   \" & Text1.Text
    Printer.EndDoc
       Else
        Printer.KillDoc
         End If
grazie a tutti coloro che mi daranno una mano

8 Risposte

  • Re: Stampare nuova pagina

    Ciao.. posso darti un suggerimento??.. se metti il codice così è difficile che qualcuno ti sappia rispondere.. invece.. perchè nn provi ad isolare la zona di codice che ti da problemi??.. così ne possiamo discutere meglio...

    Saluti...
  • Re: Stampare nuova pagina

    Infatti....magari anche aggiungendo qualche spiegazione & informazione
  • Re: Stampare nuova pagina

    Ciao Pittuzzo e intel avete ragione il codice incriminato e
    With Flex 
            For r = 0 To .Rows - 1 
                For c = 0 To .Cols - 1 
                    Printer.CurrentY = riga + (r * 250) 
                    Printer.CurrentX = colonne(c - 0) 
                    Printer.Print .TextMatrix(r, c); 
      
                Next c 
                 If Printer.CurrentY > 16000 Then 
        Printer.NewPage 
        Printer.CurrentY = 500 
       End If 
            Next r 
        End With 
    
    eseguendo i due cicli For senza
    If Printer.CurrentY > 16000 Then 
        Printer.NewPage 
        Printer.CurrentY = 500 
       End If 
    
    stampa perfettamente invece aggiungendo il codice sopra
    sembra non arrivare mai a 16000 e non fa' il salto pagina
    cosa mi consigliate??

    grazie
  • Re: Stampare nuova pagina

    Ciao.. beh.. in questo modo si può affrontare il tuo problema molto meglio..
    il codice sembra giusto.. cmq forse l'errore potrebbe stare nella variabile riga.. oppure nel conteggio errato dei pixes della larghezza delle righe..

    il consiglio che ti posso dare è quello di diminuire la costante 16000 nella if finkè il programma nn stampa bene...

    Saluti...
  • Re: Stampare nuova pagina

    Da quello che vedo, come unità di misura usi i TWIPS.
    Prova a mettere un break-point e verificare quando arriva in quel punto che valore ti riporta la variabile currentY.
    Eventualmente cambia l'unità di misura in Millimetri, così ti è più facile capire dove sbagli.
  • Re: Stampare nuova pagina

    Il debug che errore ti segnala?
  • Re: Stampare nuova pagina

    Ciao e grazie a tutti per le risposte
    ho provato a cambiare unita' di misura ma nulla,non mi segnala nessun errore forse questo non lo aggiunto. Il problema arriva quando deve fare il salto pagina in poche parole l'anteprima della mia stampante dice che deve stampare 365/377 pagine ...come mai cosi tante pagine?
    cmq alla fine non stampa e non visualizza neanche l'anteprima

    mentre se la stampa non supera la pagina tutto va' a meraviglia io non so piu' dove intervenire...

    Ne approfitto per chiedervi un altro aiuto , visto che il progetto in questione e personale per me'.

    se usassi per stampare le flex
    Printer.Paintpicture MSFlexgrid.Picture,0,0 , sarebbe piu' facile fare il salto pagina???? se si mi dite come.

    ciao e grazie ancora
  • Re: Stampare nuova pagina

    Mmh.. ci puoi provare.. ma cmq è molto più difficile gestire il cambio di pagina di righe di testo piuttosto che di immagini..
    cmq per me perdi molto meno tempo nel provare a cambiare le costanti (come ti avevo già detto qualcke post fa).. prova a vedere quando entri nella if del 16000 con una msgbox o un beep.. vedi tu.. se dopo il beep cambia foglio in maniera corretta ma nn stampa niente devi modificare la proprietà scaleMode (forse in pixel).. altrimenti sono sbagliate le costanti del codice..

    cmq su questi problemi l'unico modo è provare finkè nn ti tirna tutto.. io qualche hanno fa ho avuto un problema simile al tuo di stampa da una MSFlexGrid.. e sono riuscito a stampare correttamente dopo aver consumato mezza risma di carta di prove.. ...

    Saluti...
Devi accedere o registrarti per scrivere nel forum
8 risposte