הדפס כל סוג של מסמך באמצעות דלפי

אם שלך דלפי היישום צריך לפעול על סוגים שונים של קבצים, אחת המשימות שעשויות להיות לכם ליישום היא לאפשר למשתמש של האפליקציה להדפיס קובץ, לא משנה מה סוג הקובץ.

רוב היישומים המכוונים למסמכים, כמו MS Word, MS Excel או Adobe יכולים להדפיס בקלות מסמכים שנוצרו באותה תוכנית. לדוגמה, מיקרוסופט Word שומר את הטקסט שאתה כותב במסמכים עם סיומת DOC. מכיוון ש- Word קובע מהו התוכן "הגולמי" של קובץ DOC, הוא יודע להדפיס קובצי .DOC. הדבר נכון גם לגבי כל סוג קובץ "ידוע" המכיל מידע הניתן להדפסה.

מה אם אתה צריך להדפיס סוגים שונים של מסמכים / קבצים מהיישום שלך? האם אתה יכול לדעת כיצד לשלוח את הקובץ למדפסת על מנת שיודפס כראוי?

הדפס מדלפי

אנחנו יכולים לשאול את Windows איזה יישום יכול להדפיס, למשל, קובץ PDF. או אפילו יותר טוב, אנו יכולים לומר ל- Windows, הנה קובץ PDF אחד, לשלוח אותו ליישום המשויך / האחראי על הדפסת קובצי PDF.

לשם כך, פתח את סייר Windows, נווט לספרייה המכילה כמה קבצים להדפסה. ברוב סוגי הקבצים במערכת שלך, כשתלחץ באמצעות לחצן העכבר הימני על קובץ בסייר Windows, תאתר את הפקודה "הדפס". ביצוע הפקודה Print shell תביא לכך שהקובץ יישלח למדפסת ברירת המחדל. ובכן, זה בדיוק מה שאנחנו רוצים: עבור סוג קובץ, התקשר לשיטה שתעביר את הקובץ ליישום המשויך להדפסה. הפונקציה שאחרינו היא פונקציית ה- API של ShellExecute.

instagram viewer

ShellExecute: Print / PrintTo

עם זאת, ShellExecute יכול לעשות הרבה יותר. ניתן להשתמש ב- ShellExecute הפעל יישום, פתח את סייר Windows, התחל חיפוש שמתחיל בספרייה שצוינה - והדבר שמעניין אותנו ביותר - הדפס את הקובץ שצוין.

ציין מדפסת

באמצעות השיחה שלעיל, מסמך "document.doc" שנמצא בשורש כונן C יישלח למדפסת ברירת המחדל של Windows. ShellExecute משתמש תמיד במדפסת ברירת המחדל לפעולה "הדפסה". מה אם אתה צריך להדפיס למדפסת אחרת, מה אם אתה רוצה לאפשר למשתמש לשנות את המדפסת?

הפקודה PrintTo Shell

לפני ההעתקה וההדבקה: ניתן להשתמש במשתנה הגלובלי של המדפסת (סוג TPrinter) הזמין בכל תוכניות Delphi לניהול כל הדפסה המתבצעת על ידי יישום. המדפסת מוגדרת ביחידת "מדפסות", ShellExecute מוגדר ביחידת "שלפי".

  1. שחרר TComboBox על טופס. תן לזה בשם "cboPrinter". הגדר סגנון ל- csDropDownLidt
  2. שים את שתי השורות הבאות במטפל OnCreate אפילו של הטופס:
    // יש מדפסות זמינות בתיבה המשולבתcboPrinter. פריטים. הקצה (מדפסת. מדפסות);// בחר מראש במדפסת ברירת המחדל / הפעילהcboPrinter. ItemIndex: = מדפסת. PrinterIndex;
השתמש בכדי להדפיס כל סוג מסמך למדפסת שצוינה

הערה: בחלק מסוגי המסמכים אין יישום המשויך להדפסה. לחלקם לא מוגדרת הפעולה "פרינטו".