Druk elk type document af met Delphi

click fraud protection

Als jouw Delphi applicatie moet op verschillende soorten bestanden werken, een van de taken die u voor uw applicatie kunt hebben, is de gebruiker van de applicatie een bestand laten afdrukken, ongeacht het bestandstype.

De meeste documentgeoriënteerde applicaties, zoals MS Word, MS Excel of Adobe, kunnen eenvoudig documenten afdrukken die in dat programma zijn gemaakt. Bijvoorbeeld, Microsoft Word slaat de tekst op die u schrijft in documenten met DOC-extensie. Aangezien Word bepaalt wat de "onbewerkte" inhoud van een .DOC-bestand is, weet het hoe .DOC-bestanden moeten worden afgedrukt. Hetzelfde geldt voor elk "bekend" bestandstype dat enige afdrukbare informatie bevat.

Wat als u vanuit uw applicatie verschillende soorten documenten / bestanden moet afdrukken? Weet u hoe u het bestand naar de printer moet sturen om het correct af te drukken?

Afdrukken vanuit Delphi

We kunnen Windows vragen welke applicatie bijvoorbeeld een pdf-bestand kan printen. Of, nog beter, we kunnen Windows vertellen, hier is één PDF-bestand, stuur het naar de applicatie die verantwoordelijk is / verantwoordelijk is voor het afdrukken van PDF-bestanden.

instagram viewer

Open hiervoor Windows Verkenner en navigeer naar een map met enkele afdrukbare bestanden. Voor de meeste bestandstypen op uw systeem, wanneer u met de rechtermuisknop op een bestand in Windows Verkenner klikt, vindt u de opdracht "Afdrukken". Als u de opdracht Print shell uitvoert, wordt het bestand naar de standaardprinter gestuurd. Nou, dat is precies wat we willen: voor een bestandstype, roep een methode aan die het bestand naar de bijbehorende applicatie stuurt om af te drukken. De functie die we zoeken is de ShellExecute API-functie.

ShellExecute: Print / PrintTo

ShellExecute kan echter veel meer. ShellExecute kan worden gebruikt start een applicatie, open Windows Verkenner, start een zoekopdracht die begint in de opgegeven directory en, wat voor ons het meest interessant is, het opgegeven bestand af te drukken.

Specificeer Printer

Met behulp van de bovenstaande aanroep wordt een document "document.doc" in de root van de C-schijf naar de standaardprinter van Windows gestuurd. ShellExecute gebruikt altijd de standaardprinter voor de "print" -actie. Wat als u moet afdrukken naar een andere printer, wat als u de gebruiker de printer wilt laten veranderen?

Het PrintTo Shell-commando

Voordat u kopieert en plakt: de algemene printervariabele (type TPrinter) die beschikbaar is in alle Delphi-programma's, kan worden gebruikt om elke afdruk die door een toepassing wordt uitgevoerd, te beheren. De printer is gedefinieerd in de eenheid "printers", ShellExecute is gedefinieerd in de eenheid "shellapi".

  1. Zet een TComboBox neer op een formulier. Noem het "cboPrinter". Stel Stijl in op csDropDownLidt
  2. Zet de volgende twee regels in de OnCreate nog-handler van het formulier:
    // hebben beschikbare printers in de keuzelijst met invoervakcboPrinter. Artikelen. Toewijzen (printer. Printers);// selecteer vooraf de standaard / actieve printercboPrinter. ItemIndex: = printer. PrinterIndex;
gebruik om elk documenttype af te drukken naar een gespecificeerde printer

Opmerking: sommige documenttypen hebben geen applicatie die is gekoppeld aan afdrukken. Bij sommige is de "printto" -actie niet gespecificeerd.

instagram story viewer