تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
شرح أداة الطباعة(FormsPrinter)
#1
السلام عليكم

كنت قد كتبت موضوع حول إنشاء أداة طباعة تطبع مباشرة من الأدوات دون الحاجة لتعلم أساليب جديدة مختلفة عن تصميم النوافذ ، ودون الحاجة للرجوع لقواعد البيانات للحصول على المعلومات المراد طباعتها

http://vb4arb.com/vb/showthread.php?3785...8%C7%DA%C9

يرجى مراجعة الموضوع(خصوصا الصفحة الأولى منه) لاستيعاب الفكرة النظرية للاداة


هذا الموضوع سيكون بإذن الله مخصص لشرح استخدامها
الرد }}}
تم الشكر بواسطة: asemshahen5
#2
الله يعطيك العافيه
الرد }}}
تم الشكر بواسطة: asemshahen5
#3
السلام عليكم

سأبداً خطوة بخطوة ولله الحمد

الخطوة الأولى : إضافة الأداة إلى قائمة Items في Visual Studio وذلك كي لا نضطر لعمل هذه الحركة المزعجة

1- قم بتحميل ملف PrintReportVB أو PrintReportC# في المرفقات

2- بدون فك الضغط عن الملف، انقله إلى المسار التالي
.....\Documents\Visual Studio 2012\Templates\ItemTemplates\Visual C#

تغير المسار إلى Visual Basic إن كنت مبرمج بيسك

3- الآن قم بتشغيل الفيجوال ستوديو وفتح مشروع Windows Application جديد.

4- قم بإضافة New Item من القائمة

Project>Add New Item

في نافذة العناصر ستجد عنص باسم PrintReport وهو الذي أضفناه ، أضفه إلى المشروع

ستلاحظ ظهور رسالة خطأ تفيد بأن FormsPrinter.dll غير موجود ذلك لأن الأداة تتطلب هذا الملف(وهو ملف الأداة التي قمنا بعملها في هذا مشروع بناء أداة طباعة )


5 - قم بتحميل الملف FormsPrinter.rar من هذه المشاركة (إن لم تفعل سابقاً)

6- فك الضغط عنه واحتفظ به في مكان ثابت (ليتسنى لك إضافته بسهولة كلما احتجته)

7- قم بإضافة هذا الملف FormsPrinter.dll إلى المصادر وذلك كالتالي

قم بإضافة الأداة لـ References كالتالي








الآن لنجرب عملية طباعة بسيطة للتقرير وهو فارغ

VB
PHP كود :
Private Sub Form1_Load(sender As ObjectAs EventArgsHandles MyBase.Load
        Dim doc 
= New PrintReport1
        doc
.PrintPreview()
    
End Sub 


C#
PHP كود :
private void Form1_Load(object senderEventArgs e)
        {
            var 
= new PrintReport1(); p.PrintPreview();
        } 


وبهذا نكون قد انتهينا من الخطوة الأساسية


الملفات المرفقة
PrintReportVB
PrintReportC#


الملفات المرفقة
.zip   PrintReportVB.zip (الحجم : 9.79 ك ب / التحميلات : 117)
.zip   PrintReportC#.zip (الحجم : 9.88 ك ب / التحميلات : 54)
الرد }}}
تم الشكر بواسطة: asemshahen5
#4
السلام عليكم

تعلمنا كيف نضيف الأداة إلى قائمة Add New Item ، الآن سنتعرف على الأداة

يوجد داخل المجمع (ملف FormsPrinter.dll) أربع أدوات

وهم:
Section
وهي عبارة عن حاوية للأدوات التي سنطبعها ووظيفته تقسيم قالب الصفحة والتحكم شيئاً ما بعملية الطباعة.

الأدوات القابلة للطباعة Printable Controls (المتوفر حالياً 3 أدوات)
PrintLabel
PrintListView
PrintPicutreBox


كيف نضيف هذه الادوات إلى Tool Box ؟ الجواب هنا
الرد }}}
تم الشكر بواسطة: asemshahen5 , asemshahen5
#5
[h=2]رسالة إدارية[/h]لقد حددت ملف مرفق خاطئ. إذا إتبعت رابط صحيح, الرجاء راسل الإدارة.
الرد }}}
تم الشكر بواسطة: asemshahen5 , asemshahen5
#6
مالكـ كتب :[h=2]رسالة إدارية[/h]لقد حددت ملف مرفق خاطئ. إذا إتبعت رابط صحيح, الرجاء راسل الإدارة.

بأمكانك تحميلها الان
الرسالة التي ظهرت لديك لان المرفقات كانت بأنتظار موافقة الادارة
ربي يحفظك
الرد }}}
تم الشكر بواسطة: asemshahen5
#7
تم تعديل الملفات المرفقة لنتفادى "موافقة الإدارة"

من يتابع الشرح، قم بتحميل الملف ونقله كما في الشرح، ثم افتح الفيجوال ستوديو وأضف الملف .dll للأداة وأضف عنصر الأداة من Add New Items

ستلاحظ أن الأداة تحتوي بشكل افتراضي على PrintDocument باسم PDoc وPrintPreviewDialog باسم PView

وقمت بكتابة إجرائين واحد باسم Print للطباعة المباشرة والآخر باسم PrintPreview وذلك تسهيلا مني للمبتدئين ، متى ما أردت طباعة التقرير تستدعي أحد الإجرائين إما للعرض أو للطباعة المباشرة

VB
PHP كود :
Public Class PrintReport
#Region "Methods"
    
Public Sub Print()
        
Me.PDoc.Print()
    
End Sub
    
Public Sub PrintPreview()
        
Me.PView.ShowDialog()
    
End Sub
#End Region
End Class 

C#
PHP كود :
public partial class PrintReport FormsPrinter.Page
    
{
        public 
PrintReport()
        {
            
InitializeComponent();
        }
        public 
void Print()
        {
            
this.PDoc.Print();
        }
        public 
void PrintPreview()
        {
            
this.PView.ShowDialog();
        }
    } 
الرد }}}
تم الشكر بواسطة: asemshahen5
#8
الآن لنتعرف على Page وهي الصفحة التي تمثل القالب لكل صفحات التقرير

وهي التي في الصورة التالية


الصفحة لها خاصيتين

1- Document وهي من نوع PrintDocument وهي التي يتم الطباعة فيها (لنعتبرها صفحات التقرير Smile وهذا تبسيط مني للمبتدئين الذين لم يتعلموا الطباعة في .Net )
ملاحظة: تذكرون اني قمت بإضافة PDoc لهذه الخاصية بشكل افتراضي وذلك خدمة مني للمبتدئين

2- MarginBounds : تأخذ قيمة True or False وهي تفيد في اعتبار ان قالب الصفحة الذي نصمم عليه يمثل الحدود الداخلية للصفحة أو الحدود الخارجية (جربها بنفسك وستفهم ما أعني)
الرد }}}
تم الشكر بواسطة: asemshahen5
#9
بعد أن تعرفنا على Page سنتعرف على ابنتها الوحيدة والوحيدة فقط وهي Section

أحب ان أذكر بان الإضطلاع على الموضوع الأصلي هو أمر أساسي لاستيعاب الشرح

من قائمة الأدوات أضف Section إلى الصفحة(يمكنك إضافة مليون Section للصفحة)

عزيزي المبرمج اعتبر نفسك تصمم فورم عادي تلاعب بخصائص Dock و الـ Anchor كما تحب فهي واقعية في أداة FromsPrinter

السكشن ليس فيه إلا خاصية واحدة وهي Repeat يعني تكرار ، True للتكرار False للمنع(راجع الموضوع الأصلي لمعرفة قصة تكرار الطباعى لقسم معين من الصفحة !)

داخل السكشن يمكنك إضافة أي أداة قابلة للطباعة (الأداة تحتوي 3 أدوات لحد الآن وقد ذكرتهم)(معلومة للمحترفين كل أداة تحقق الواجهة IPrintableControl يمكن إضافتها للسكشن، ويتبعها تعريف كلاس Printer أيضاً Smile )

الرد }}}
تم الشكر بواسطة: asemshahen5
#10
السلام عليكم

بعد ان تعرفنا على كل من الـPage & Section
سنتعرف على الأدوات القابلة للطباعة Printable Controls

طبعا هناك خصائص مشتركة لهذه الادوات وهي :

1- SourceControl

هذه الخاصية لن تراها في نافذة الخصائص ، فقط من الكود وهي تمكنك من طباعة محتوى أداة في مكان ما في المشروع (داخل الفورم مثلاً) ولكن بشرط أن تكون الاداة نفس نوع الأداة القابلة للطباعة
يعني لن تتعب في تنسيق ListView مرتين Smile

2- ScaleVertical

هذه الخاصية تمنع\تفعل تطبيق مقياس الرسم العمودي (يعني سترسم الأدوات كما هي بالنسبة للطول)

3- ScaleHorizontal

كالسابقة ولكنها تطبق على العرض

4- StageIndex

هذه خاصية مهمة ، تحدد ترتيب مرحلة الطباعة، أي ان الأداة التي ترتيب مرحلتها 2 لن تطبع إلا إذا طبعت جميع الأدوات(التي تشترك معها في Section ) التي مرحلتها أقل من 2(حتى 0 او -1 !) حتى لو استغرقت مليون صفحة Smile
سيتضح الهدف من هذه الخاصية لاحقاً

5- PrintIndex

هذه الخاصية تحدد ترتيب طباعة الأدوات خلال المرحلة الواحدة، الفائدة أنك تستطيع طباعة صورة خلفية وتجعل ترتيبها الأول ثم تطبع عليها باقي الأدوات ،،، وفوائد أخرى

7- OnePageOnly

هذه الخاصية، إذا كانت true سيتم طباعة الأداة في صفحة واحدة حتى لو احتاجت الأداة إلى صفحات أخرى لتكمل الطباعة
الرد }}}
تم الشكر بواسطة: asemshahen5 , asemshahen5



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم