Wenn Ihre Delphi-Anwendung mit verschiedenen Dateitypen arbeiten muss, besteht eine der Aufgaben, die Sie möglicherweise für Ihre Anwendung haben, darin, dem Benutzer der Anwendung das Drucken einer Datei unabhängig vom Dateityp zu ermöglichen.
Die meisten dokumentenorientierten Anwendungen wie MS Word, MS Excel oder Adobe können problemlos mit diesem Programm erstellte Dokumente drucken. Beispielsweise speichert Microsoft Word den Text, den Sie in Dokumenten mit der Erweiterung DOC schreiben. Da Word den "unformatierten" Inhalt einer DOC-Datei ermittelt, weiß es, wie DOC-Dateien gedruckt werden. Gleiches gilt für alle "bekannten" Dateitypen, die druckbare Informationen enthalten.
Was ist, wenn Sie verschiedene Arten von Dokumenten / Dateien aus Ihrer Anwendung drucken müssen? Können Sie wissen, wie die Datei an den Drucker gesendet wird, damit sie korrekt gedruckt wird??
Wir können Windows fragen, welche Anwendung zum Beispiel eine PDF-Datei drucken kann. Oder, noch besser, wir können Windows mitteilen, dass es sich hier um eine PDF-Datei handelt, die an die Anwendung gesendet wird, die für das Drucken von PDF-Dateien zuständig ist.
Öffnen Sie dazu den Windows Explorer und navigieren Sie zu einem Verzeichnis, das einige druckbare Dateien enthält. Wenn Sie mit der rechten Maustaste auf eine Datei in Windows Explorer klicken, finden Sie für die meisten Dateitypen auf Ihrem System den Befehl "Drucken". Wenn Sie den Befehl "Shell drucken" ausführen, wird die Datei an den Standarddrucker gesendet. Genau das möchten wir: Rufen Sie für einen Dateityp eine Methode auf, die die Datei zum Drucken an die zugehörige Anwendung sendet. Die Funktion, die wir suchen, ist die ShellExecute-API-Funktion.
ShellExecute kann jedoch noch viel mehr. Mit ShellExecute können Sie eine Anwendung starten, den Windows Explorer öffnen, eine Suche starten, die im angegebenen Verzeichnis beginnt, und - was für uns am interessantesten ist - die angegebene Datei drucken.
Mit dem obigen Aufruf wird ein Dokument "document.doc" im Stammverzeichnis des Laufwerks C an den Windows-Standarddrucker gesendet. ShellExecute verwendet immer den Standarddrucker für die Aktion "Drucken". Was passiert, wenn Sie auf einem anderen Drucker drucken müssen, und wenn Sie dem Benutzer erlauben möchten, den Drucker zu wechseln??
Vor dem Kopieren und Einfügen: Mit der globalen Druckervariable (TPrinter-Typ), die in allen Delphi-Programmen verfügbar ist, können Sie alle von einer Anwendung ausgeführten Druckvorgänge verwalten. Der Drucker wird in der Unit "printers" definiert, ShellExecute in der Unit "shellapi".
// Verfügbare Drucker im Kombinationsfeld habencboPrinter.Items.Assign (printer.Printers);// wähle den Standard / aktiven Drucker vorcboPrinter.ItemIndex: = printer.PrinterIndex;
Verwenden Sie diese Option, um einen beliebigen Dokumenttyp auf einem bestimmten Drucker zu drucken
Hinweis: Für einige Dokumenttypen ist keine Anwendung zum Drucken verfügbar. Bei einigen ist die Aktion "printto" nicht angegeben.