Stampa qualsiasi tipo di documento usando Delphi

Se tuo Delphi l'applicazione deve operare su vari tipi di file, uno dei compiti 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. Per 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 stamparlo 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.

instagram viewer

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, apri Esplora risorse, avvia una ricerca a partire dalla directory specificata e, ciò che ci interessa di più, stampa 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". Cosa succede se è necessario stampare su una stampante diversa, e 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. Elementi. Assegna (stampante. Stampanti);// preseleziona la stampante predefinita / attivacboPrinter. ItemIndex: = stampante. PrinterIndex;
utilizzare per stampare qualsiasi tipo di documento su una stampante specifica

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

instagram story viewer