Печат на всеки тип документ с помощта на Delphi

click fraud protection

Ако твоят Delphi приложението трябва да работи с различни видове файлове, една от задачите, които може да имате за вашето приложение е да разрешите на потребителя на приложението да отпечата файл, независимо от типа на файла.

Повечето приложения, ориентирани към документи, като MS Word, MS Excel или Adobe, могат лесно да отпечатват документи, създадени в тази програма. Например, Microsoft Word записва текста, който пишете в документи с разширение DOC. Тъй като Word определя какво е "суровото" съдържание на .DOC файл, той знае как да отпечатва .DOC файлове. Същото важи за всеки "известен" тип файл, съдържащ някаква информация за печат.

Какво става, ако трябва да отпечатате различни видове документи / файлове от приложението си? Можете ли да знаете как да изпратите файла до принтера, за да може той да бъде отпечатан правилно?

Печат от Delphi

Можем да попитаме Windows какво приложение може да отпечата, например PDF файл. Или, още по-добре, можем да кажем на Windows, ето един PDF файл, да го изпратим до свързаното приложение / отговарящо за отпечатването на PDF файлове.

instagram viewer

За целта отворете Windows Explorer, отворете директория, съдържаща някои файлове за печат. За повечето типове файлове в системата ви, когато щракнете с десния бутон на мишката върху файл в Windows Explorer, ще намерите командата "Печат". Изпълнението на командата Print shell ще доведе до изпращане на файла до принтера по подразбиране. Е, точно това искаме: за тип файл извикайте метод, който ще изпрати файла до свързаното приложение за печат. Функцията, която изпълняваме, е функцията API на ShellExecute.

ShellExecute: Print / PrintTo

ShellExecute обаче може да направи много повече. ShellExecute може да се използва за стартира приложение, отворете Windows Explorer, започнете търсене в началото на указаната директория и - което е най-интересно за нас - отпечатайте указания файл.

Посочете принтер

Използвайки горното повикване, документ "document.doc", разположен в корена на C устройството, ще бъде изпратен до принтера по подразбиране на Windows. ShellExecute винаги използва принтера по подразбиране за действието "print". Какво става, ако трябва да отпечатате на различен принтер, а ако искате да разрешите на потребителя да промени принтера?

Командата Shell PrintTo

Преди да копирате и поставите: глобалната променлива на принтера (тип TPrinter), налична във всички програми на Delphi, може да се използва за управление на всеки печат, извършен от приложение. Принтерът е дефиниран в единицата "принтери", ShellExecute е дефиниран в единицата "шеллапи".

  1. Пуснете TComboBox върху формуляр. Назовете го „cboPrinter“. Задайте Style на csDropDownLidt
  2. Поставете следващите два реда в равномерния манипулатор на OnCreate на формата:
    // имат налични принтери в полето за комбиниранеcboPrinter. Предмети. Присвояване (принтер Принтери);// предварително изберете принтера по подразбиране / активенcboPrinter. ItemIndex: = принтер. PrinterIndex;
използвайте за отпечатване на всеки тип документ на определен принтер

Забележка: някои видове документи нямат приложение, свързано с печат. На някои от тях не е посочено действието "printto".

instagram story viewer