Dacă aplicația dvs. Delphi trebuie să funcționeze pe diferite tipuri de fișiere, una dintre sarcinile pe care le-ați putea avea pentru aplicația dvs. este de a permite utilizatorului aplicației să imprime un fișier, indiferent de tipul de fișier.
Majoritatea aplicațiilor orientate spre documente, cum ar fi MS Word, MS Excel sau Adobe, pot imprima ușor documente create în programul respectiv. De exemplu, Microsoft Word salvează textul pe care îl scrieți în documente cu extensie DOC. Deoarece Word determină care este conținutul „brut” al unui fișier .DOC, știe cum să imprime fișiere .DOC. Același lucru este valabil și pentru orice tip de fișier „cunoscut” care conține informații care pot fi tipărite.
Ce se întâmplă dacă trebuie să imprimați diverse tipuri de documente / fișiere din aplicația dvs.? Puteți ști cum să trimiteți fișierul la imprimantă pentru ca acesta să fie imprimat corect?
Putem întreba Windows ce aplicație poate imprima, de exemplu, un fișier PDF. Sau, și mai bine, putem spune Windows, iată un fișier PDF, să-l trimiteți la aplicația asociată / responsabilă cu imprimarea fișierelor PDF.
Pentru a face acest lucru, deschideți Windows Explorer, navigați la un director care conține unele fișiere imprimabile. Pentru majoritatea tipurilor de fișiere din sistemul dvs., când faceți clic dreapta pe un fișier în Windows Explorer, veți localiza comanda „Print”. Executarea comenzii Print shell va duce la expedierea fișierului la imprimanta implicită. Ei bine, asta este exact ceea ce ne dorim: pentru un tip de fișier, apelați la o metodă care va trimite fișierul către aplicația asociată pentru imprimare. Funcția pe care o urmăm este funcția API ShellExecute.
Cu toate acestea, ShellExecute poate face mult mai mult. ShellExecute poate fi utilizat pentru a lansa o aplicație, pentru a deschide Windows Explorer, pentru a iniția o căutare începând în directorul specificat și, ceea ce este cel mai interesant pentru noi, tipăriți fișierul specificat.
Folosind apelul de mai sus, un document "document.doc" situat pe rădăcina unității C va fi trimis imprimantei implicite Windows. ShellExecute utilizează întotdeauna imprimanta implicită pentru acțiunea „print”. Ce se întâmplă dacă trebuie să imprimați pe o imprimantă diferită, și dacă doriți să permiteți utilizatorului să schimbe imprimanta?
Înainte de a copia și insera: variabila globală Printer (tip TPrinter) disponibilă în toate programele Delphi poate fi utilizată pentru a gestiona orice tipărire efectuată de o aplicație. Imprimanta este definită în unitatea „imprimante”, ShellExecute este definită în unitatea „shellapi”.
// au imprimante disponibile în caseta combocboPrinter.Items.Assign (printer.Printers);// preselectați imprimanta implicită / activăcboPrinter.ItemIndex: = printer.PrinterIndex;
utilizați pentru a imprima orice tip de document la o imprimantă specificată
Notă: unele tipuri de documente nu au o aplicație asociată cu tipărirea. Unele nu au acțiunea „printto” specificată.