Skriv ut olika dokumenttyper från Delphi

Om din Delphi-applikation behöver fungera på olika typer av filer är en av uppgifterna du kan ha för din applikation att låta användaren av applikationen skriva ut en fil, oavsett filtyp.

De flesta dokumentorienterade applikationer, som MS Word, MS Excel eller Adobe, kan enkelt skriva ut dokument som skapats i det programmet. Till exempel sparar Microsoft Word den text du skriver i dokument med DOC-förlängning. Eftersom Word bestämmer vad som är det "råa" innehållet i en .DOC-fil vet det hur man skriver ut .DOC-filer. Detsamma gäller för alla "kända" filtyper som innehåller viss utskrivbar information.

Vad händer om du behöver skriva ut olika typer av dokument / filer från din ansökan? Kan du veta hur du skickar filen till skrivaren för att den ska skrivas ut korrekt?

Skriv ut från Delphi

Vi kan fråga Windows vilket program som kan skrivas ut, till exempel en PDF-fil. Eller ännu bättre, vi kan berätta för Windows, här är en PDF-fil, skicka den till applikationen som är associerad / ansvarig för att skriva ut PDF-filer.

För att göra detta öppnar du Windows Utforskaren, navigerar till en katalog som innehåller några utskrivbara filer. När du högerklickar på en fil i Utforskaren hittar du kommandot "Skriv ut" för de flesta filtyper på ditt system. Om du utför kommandot Print shell kommer filen att skickas till standardskrivaren. Det är precis vad vi vill: för en filtyp, ring en metod som skickar filen till det tillhörande programmet för utskrift. Funktionen vi är efter är ShellExecute API-funktionen.

ShellExecute: Print / PrintTo

ShellExecute kan dock göra mycket mer. ShellExecute kan användas för att starta ett program, öppna Windows Utforskare, initiera en sökning som börjar i den angivna katalogen, och vad som är av största intresse för oss-skriva ut den angivna filen.

Ange skrivare

Med hjälp av ovanstående samtal skickas ett dokument "document.doc" som ligger på roten till C-enheten till Windows standardskrivare. ShellExecute använder alltid standardskrivaren för "utskrift" -åtgärden. Vad händer om du behöver skriva ut till en annan skrivare, vad om du vill låta användaren byta skrivare?

PrintTo Shell-kommandot

Innan du kopierar och klistrar in: Skrivarens globala variabel (TPrinter-typ) tillgänglig i alla Delphi-program kan användas för att hantera alla utskrifter som utförs av ett program. Skrivaren definieras i "skrivare" -enheten, ShellExecute definieras i "shellapi" -enheten.

  1. Släpp en TComboBox på ett formulär. Namnge det "cboPrinter". Ställ in stil på csDropDownLidt
  2. Lägg de nästa två raderna i formulärets OnCreate jämnt hanterare:
     // har tillgängliga skrivare i kombinationsrutancboPrinter.Items.Assign (printer.Printers);// förval den standard / aktiva skrivarencboPrinter.ItemIndex: = printer.PrinterIndex;
använda för att skriva ut vilken dokumenttyp som helst till en specifik skrivare

Obs! Vissa dokumenttyper har inte en applikation kopplad till utskrift. Vissa har inte angiven "princip" -åtgärd.