إذا كان لديك دلفي يحتاج التطبيق إلى العمل على أنواع مختلفة من الملفات ، إحدى المهام التي قد تكون لديك لتطبيقك هي السماح لمستخدم التطبيق بطباعة ملف ، مهما كان نوع الملف.
يمكن لمعظم التطبيقات الموجهة للمستندات ، مثل MS Word أو MS Excel أو Adobe طباعة المستندات التي تم إنشاؤها في هذا البرنامج بسهولة. فمثلا، مايكروسوفت يحفظ Word النص الذي تكتبه في المستندات بامتداد DOC. بما أن Word يحدد المحتويات "الأولية" لملف .DOC فإنه يعرف كيفية طباعة ملفات .DOC. وينطبق الشيء نفسه على أي نوع ملف "معروف" يحمل بعض المعلومات القابلة للطباعة.
ماذا لو كنت بحاجة إلى طباعة أنواع مختلفة من المستندات / الملفات من التطبيق الخاص بك؟ هل يمكنك معرفة كيفية إرسال الملف إلى الطابعة حتى تتم طباعته بشكل صحيح؟
طباعة من دلفي
يمكننا أن نسأل Windows عن التطبيق الذي يمكن طباعته ، على سبيل المثال ، ملف PDF. أو ، بشكل أفضل ، يمكننا إخبار Windows ، إليك ملف PDF واحد ، أرسله إلى التطبيق المرتبط / المسؤول عن طباعة ملفات PDF.
للقيام بذلك ، افتح مستكشف Windows ، وانتقل إلى دليل يحتوي على بعض الملفات القابلة للطباعة. بالنسبة لمعظم أنواع الملفات على نظامك ، عندما تنقر بزر الماوس الأيمن فوق ملف في مستكشف Windows ، ستجد موقع الأمر "طباعة". سيؤدي تنفيذ أمر الطباعة shell إلى إرسال الملف إلى الطابعة الافتراضية. حسنًا ، هذا بالضبط ما نريده: لنوع الملف ، اتصل بالطريقة التي سترسل الملف إلى التطبيق المرتبط للطباعة. الوظيفة التي نسعى إليها هي وظيفة ShellExecute API.
ShellExecute: طباعة / طباعة إلى
ومع ذلك ، يمكن لـ ShellExecute القيام بأكثر من ذلك بكثير. يمكن استخدام ShellExecute ل قم بتشغيل تطبيق، وفتح Windows Explorer ، وبدء البحث في الدليل المحدد ، و- ما هو الأكثر أهمية بالنسبة لنا - طباعة الملف المحدد.
حدد الطابعة
باستخدام المكالمة المذكورة أعلاه ، سيتم إرسال مستند "document.doc" الموجود على جذر محرك الأقراص C إلى الطابعة الافتراضية في Windows. يستخدم ShellExecute دائمًا الطابعة الافتراضية لإجراء "الطباعة". ماذا لو كنت بحاجة إلى الطباعة إلى طابعة مختلفة ، وماذا إذا كنت تريد السماح للمستخدم بتغيير الطابعة؟
أمر PrintTo Shell
قبل النسخ واللصق: يمكن استخدام المتغير العام للطابعة (نوع TPrinter) المتوفر في جميع برامج دلفي لإدارة أي طباعة يقوم بها تطبيق. يتم تعريف الطابعة في وحدة "الطابعات" ، ويتم تعريف ShellExecute في وحدة "shellapi".
- إسقاط TComboBox في نموذج. سمها "cboPrinter". اضبط النمط على csDropDownLidt
- ضع السطرين التاليين في معالج OnCreate النموذجي:
// لها طابعات متوفرة في مربع التحرير والسردcboPrinter. العناصر. تعيين (الطابعة. طابعات) ؛// pre-select the printer / active printercboPrinter. ItemIndex: = الطابعة. الطابعة
استخدمه لطباعة أي نوع مستند إلى طابعة محددة
ملاحظة: لا تحتوي بعض أنواع المستندات على تطبيق مرتبط بالطباعة. البعض ليس لديهم إجراء "printto" المحدد.