Om din Delphi applikationen måste fungera på olika typer av filer, en av de uppgifter du kan ha för din applikation är 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, Microsoft Word sparar texten 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 till starta en applikation, öppna Windows Utforskaren, initiera en sökning som börjar i den angivna katalogen och - vad som är mest intressant för oss - skriv 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 händer 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.
- Släpp en TComboBox på ett formulär. Namnge det "cboPrinter". Ställ in stil på csDropDownLidt
- Lägg de nästa två raderna i formulärets OnCreate jämnt hanterare:
// har tillgängliga skrivare i kombinationsrutancboPrinter. Poster. Tilldela (skrivare. Skrivare);// förval den standard / aktiva skrivarencboPrinter. ItemIndex: = skrivare. 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.