Newsgroup: it.comp.appl.access
Titolo: Come 'vedere' avvio stampa anteprima a schermo?

Procedura Access che avvio anteprima di un documento a schermo
L'avvio anteprima abilita la visualizzazione dei tasti STAMPA, 
DIMENSIONI, MARGINI ecc tipici dei report in anteprima
Vorrei avviare del codice quando l'operatore materialmente manda in 
stampa il report, e quindi quando preme STAMPA, appare pannellino scelta 
stampante, e poi preme OK
Quindi SOLO se la stampa viene materialmente inviata alla stampante 
vorrei far partire del codice
Come fare?
 


mmm
 
dovresti in qualche modo allora interrogare lo spooler di stampa
 
forse con queste ?
https://learn.microsoft.com/en-us/windows/win32/printdocs/printing-and-print-spooler-functions
 
 
 
BFS


Ho bypassato il problema semplicemente creando un altro menu comandi da 
usare per avviare materialmente la stampa, come dimostrato al link:
 
https://www.access-programmers.co.uk/forums/threads/print-event-intercept.324758/#post-1844092
 
 
In sostanza aggiunge un menu di comandi personalizzato alla pressione 
del tasto destro sul report e sulla funzione fnPrint() ci metti quel che 
vuoi, esattamente come mi serviva
Certo che, il monitoraggio dello spooler di stampa di Windows sarebbe 
stata l'ovvia soluzione al problema che ho descritto, forse non cosi' 
banale da realizzare a colpi di vba
Ma il menu volante col destro mi sembra gia' un'eccellente soluzione
 


ottimo
dovresti però anche inibire o intercettare un eventuale CTRL+P che un 
utente può eseguire per avviare la stampa dall'anteprima
 
BFS
 


Si sarebbe perfetto
In questo momento mi basta poter indicare il mouse-destro/Stampa per 
avviare la stampata sia di quanto a video che del codice accessorio
Per gli interessati ho trovato anche questo che mi pare molto utile per 
monitorare lo spooler di Windows, come la api che hai consigliato
 
https://web.archive.org/web/20191031183312/http://www.merrioncomputing.com/Programming/WatchPrinter.htm
 
 


Ciao, ho avuto un problema simile e l'ho risolto creando una maschera che contenesse, come sotto maschera, il report in anteprima.
Questo utilizzo ti permette di inserire dei pulsanti per gestire la stampa: ad esempio, avevo bisogno di poter mandare in stampa una sola pagina, oppure scegliere da pagina a pagina, oppure far gestire la stampa ad un programma esterno (ZebraDesigner 3).
Inoltre, cambiando da VBA l'Oggetto origine del controllo sotto maschera, puoi mandare in anteprima tutti i report che desideri, senza dover creare maschere differenti.
Questo è un esempio di codice:
Private Sub Form_Load()
  On Error Resume Next
  Dim risp
  risp = Left(DLookup("id_eti", "T_DaStampare"), 6)  ' leggo il tipo di etichetta da stampare
  Me.Caption = "Stampa Etichetta - Anteprima " & risp
  Select Case risp
    Case "K445/C": Me.SR_Etichetta.SourceObject = "Report.R_EtiK445_Oriz"
    Case "888/B ": Me.SR_Etichetta.SourceObject = "Report.R_Eti888B"
    Case "000/A ": Me.SR_Etichetta.SourceObject = "Report.R_Eti000A_Oriz"
    Case "111/B ": Me.SR_Etichetta.SourceObject = "Report.R_Eti111B_Oriz"
    Case "888/D ": Me.SR_Etichetta.SourceObject = "Report.R_Eti888D"
    Case Else
      MsgBox "Questo Tipo di etichetta non è previsto." & vbCrLf & "Potete richiederlo e verrà rilasciato in un prossimo aggiornamento del programma.", vbInformation, "In fase di preparazione"
      DoCmd.Close
      Exit Sub
  End Select
End Sub

Salve,
 
RobertoA:

Con pocche righe di codice.
Puoi scaricare il mio demo db da 
https://www.isladogs.co.uk/aeu-11/
 e 
vedere il no. 8 "Report in page previw or sent to printer".
 
Puoi vederlo anche nel video della presentazione: 
https://www.youtube.com/watch?v=k9jgkzG2IaU
 
 
-- 
Ciao
Karl
*********
Access Bugs: 
https://www.accessforever.org
 
Access News: 
https://youtu.be/XMOHBSudo-U
 
Access DevCon: 
http://AccessDevCon.com
 
Access FAQ: 
https://www.donkarl.com/it
 
 

 
 
Molto interessante, il codice e' piu' semplice del mio
Buono a sapersi per le prossime volte
Sul file indicato ci sono diversi esempi, a mio avviso molto 
interessanti come l'utilizzo della non documentata StrPtr, un updater 
frontend che non fa mai male, ed altre routine particolari
Consiglio a tutti gli associati alla 'banda scarsotti' di darci 
un'occhiata     :)