Stampa diversi tipi di documento da Delphi

Se l'applicazione Delphi deve funzionare su vari tipi di file, una delle attività che potresti avere per la tua applicazione è consentire all'utente dell'applicazione di stampare un file, qualunque sia il tipo di file.

La maggior parte delle applicazioni orientate ai documenti, come MS Word, MS Excel o Adobe, possono facilmente stampare documenti creati in quel programma. Ad esempio, Microsoft Word salva il testo che scrivi nei documenti con estensione DOC. Poiché Word determina quali sono i contenuti "non elaborati" di un file .DOC, sa come stampare i file .DOC. Lo stesso vale per qualsiasi tipo di file "noto" contenente alcune informazioni stampabili.

Cosa succede se è necessario stampare vari tipi di documenti / file dall'applicazione? Sai come inviare il file alla stampante per poterlo stampare correttamente?

Stampa da Delfi

Possiamo chiedere a Windows quale applicazione può stampare, ad esempio un file PDF. O, meglio ancora, possiamo dirlo a Windows, ecco un file PDF, inviarlo all'applicazione associata / responsabile della stampa di file PDF.

Per fare ciò, apri Esplora risorse, vai a una directory contenente alcuni file stampabili. Per la maggior parte dei tipi di file sul sistema, quando si fa clic con il pulsante destro del mouse su un file in Esplora risorse, verrà individuato il comando "Stampa". L'esecuzione del comando Print shell comporterà l'invio del file alla stampante predefinita. Bene, questo è esattamente quello che vogliamo: per un tipo di file, chiama un metodo che invierà il file all'applicazione associata per la stampa. La funzione che stiamo cercando è la funzione API ShellExecute.

ShellExecute: Print / PrintTo

Tuttavia, ShellExecute può fare molto di più. ShellExecute può essere utilizzato per avviare un'applicazione, aprire Esplora risorse, avviare una ricerca a partire dalla directory specificata e, cosa di maggiore interesse per noi, stampare il file specificato.

Specifica la stampante

Utilizzando la chiamata sopra, un documento "document.doc" situato nella radice dell'unità C verrà inviato alla stampante predefinita di Windows. ShellExecute utilizza sempre la stampante predefinita per l'azione "stampa". Che cosa succede se è necessario stampare su una stampante diversa, cosa succede se si desidera consentire all'utente di cambiare la stampante?

Il comando PrintTo Shell

Prima di copiare e incollare: la variabile globale Stampante (tipo TPrinter) disponibile in tutti i programmi Delphi può essere utilizzata per gestire qualsiasi stampa eseguita da un'applicazione. La stampante è definita nell'unità "stampanti", ShellExecute è definita nell'unità "shellapi".

  1. Rilascia un TComboBox su un modulo. Chiamalo "cboPrinter". Imposta lo stile su csDropDownLidt
  2. Inserisci le due righe successive nel gestore uniforme di OnCreate del modulo:
     // ha stampanti disponibili nella casella combinatacboPrinter.Items.Assign (printer.Printers);// preseleziona la stampante predefinita / attivacboPrinter.ItemIndex: = printer.PrinterIndex;
utilizzare per stampare qualsiasi tipo di documento su una stampante specificata

Nota: alcuni tipi di documenti non hanno un'applicazione associata alla stampa. Alcuni non hanno l'azione "printto" specificata.