Tisk libovolného typu dokumentu pomocí Delphi

Pokud vaše Delphi aplikace musí pracovat s různými typy souborů, jedním z úkolů, které můžete mít pro vaši aplikaci, je umožnit uživateli aplikace tisknout soubor bez ohledu na typ souboru.

Většina aplikací zaměřených na dokumenty, jako je MS Word, MS Excel nebo Adobe, může snadno tisknout dokumenty vytvořené v tomto programu. Například, Microsoft Word uloží text, který píšete v dokumentech, s příponou DOC. Protože Word určuje, co je „surový“ obsah souboru .DOC, ví, jak tisknout soubory .DOC. Totéž platí pro jakýkoli „známý“ typ souboru, který obsahuje některé tisknutelné informace.

Co když z vaší aplikace potřebujete vytisknout různé typy dokumentů / souborů? Víte, jak odeslat soubor do tiskárny, aby byl správně vytištěn?

Tisk z Delphi

Můžeme se zeptat Windows, jakou aplikaci lze vytisknout, například soubor PDF. Nebo ještě lépe, můžeme systému Windows říct, že je zde jeden soubor PDF, odeslat jej do přidružené aplikace / pověřené tiskem souborů PDF.

Chcete-li to provést, otevřete Průzkumník Windows, přejděte do adresáře obsahujícího některé tisknutelné soubory. U většiny typů souborů ve vašem systému po klepnutí pravým tlačítkem myši na soubor v Průzkumníkovi Windows vyhledejte příkaz „Tisk“. Spuštění příkazu Print shell povede k odeslání souboru na výchozí tiskárnu. To je přesně to, co chceme: pro typ souboru volejte metodu, která pošle soubor do přidružené aplikace k tisku. Funkce, kterou sledujeme, je funkce rozhraní ShellExecute API.

instagram viewer

ShellExecute: Print / PrintTo

ShellExecute však může udělat mnohem víc. ShellExecute lze použít spusťte aplikaci, spusťte Průzkumníka Windows, spusťte vyhledávání začínající v zadaném adresáři a - co nás nejvíce zajímá - vytiskněte určený soubor.

Určete tiskárnu

Pomocí výše uvedeného volání bude dokument „document.doc“ umístěný v kořenovém adresáři jednotky C odeslán na výchozí tiskárnu Windows. ShellExecute vždy používá výchozí tiskárnu pro akci „tisk“. Co když potřebujete tisknout na jinou tiskárnu, co když chcete umožnit uživateli měnit tiskárnu?

Příkaz PrintTo Shell

Před kopírováním a vložením: Globální proměnná tiskárny (typ TPrinter) dostupná ve všech programech Delphi lze použít ke správě jakéhokoli tisku prováděného aplikací. Tiskárna je definována v jednotce „printers“, ShellExecute je definována v jednotce „shellapi“.

  1. Přetáhněte TComboBox do formuláře. Pojmenujte jej „cboPrinter“. Nastavte styl na csDropDownLidt
  2. Vložte další dva řádky do OnCreate handleru ve formuláři:
    // mají v rozbalovacím seznamu k dispozici tiskárnycboPrinter. Položky. Přiřadit (tiskárna. Tiskárny);// předem vyberte výchozí / aktivní tiskárnucboPrinter. ItemIndex: = tiskárna. PrinterIndex;
slouží k tisku libovolného typu dokumentu na určené tiskárně

Poznámka: Některé typy dokumentů nemají k tisku přiřazenu aplikaci. Některé z nich nemají specifikovanou akci „printto“.