![]() |
|
طريقة لكيفية طباعة MSFlexGrid مباشرة - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغات البرمجة الاخرى (http://vb4arb.com/vb/forumdisplay.php?fid=4) +--- قسم : قسم لغة vb6.0 (http://vb4arb.com/vb/forumdisplay.php?fid=18) +---- قسم : قسم مقالات vb6.0 (http://vb4arb.com/vb/forumdisplay.php?fid=29) +---- الموضوع : طريقة لكيفية طباعة MSFlexGrid مباشرة (/showthread.php?tid=5593) |
طريقة لكيفية طباعة MSFlexGrid مباشرة - RaggiTech - 14-10-12 كاتب الموضوع : أحمد جمال
بسم الله الرحمن الرحيم .السلام علكيم ورحمة الله وبركاته . هذا الموضوع كنت قد طرحته في المنتدى السابق لطباعة MSFlexGrid على أي حجم ورق مطلوب أو بالعرض أو غير ذلك مما لا تنفع فيها استخدام أدوات التقارير ، هنا سوف نستخدم كائن الطباعة Printer مع مجموعة من خصائصه ووظائفه ، والتي بإمكانك التوسع فيها عن طريق مراجعة درس الاستاذ تركي العسيري : كائن الطباعة للمبتدئين . وقد حصلت من المنتدى على كود ينظم مثل هذه العملية للطباعة ، وقد عدلت فيه أشياء بسيطة في أحد برامجي وسأسرد الكود مع شرح موجز : * ضبط مجموعة من خصائص الطباعة مثل الخط والمحاذاة : كود : Printer.RightToLeft = True* اضفنا مصفوفة من المتغيرات لنحدد بها أبعاد الطباعة لاحقاً : كود : Dim Plt(3)* نصفر أحد اعضاء هذه المصفوفة ، ونبدأ بجمع العرض الكلي للجدول ونضعه فيه : كود : Plt(2) = 0* نحدد مكان الجهة اليسرى في الطباعة - أي سنبدأ من اليمين ، وبطول معين حتى نصل إلى نقطة نهاية الطباعة في اليسار - . ونحصل على هذه النقطة بعملية حسابية بسيطة ، ونخزنها في أحد المتغيرات من المصفوفة التي عرفناها . كود : If Printer.ScaleWidth >= Plt(2) Then '**** Left Border position ****كود : [FONT=Tahoma]Plt(0) = Shemal '**** Left Border position ***** نحدد النص الذي نريد طباعته ، وليكن البسملة : كود : mytext = "بسم الله الرحمن الرحيم"* والآن نحدد منتصف الصفحة بعملية حسابية : كود : Printer.CurrentY = 150* وهكذا نطبع النص المطلوب بالشكل التالي : كود : Printer.Print mytext* والآن نغير المكان الذي نطبع منه مجدداً لبدء عملية طباعة الجدول ، مع تغيير بعض الخصائص لتختلف عن خصائص الكلمة الأولى : كود : p = Shemal + 50كود : [FONT=Tahoma]Printer.DrawStyle = 0: Printer.DrawWidth = 5 '**** To print a line ***** والآن نبدأ بحلقة تكرار بعدد صفوف الجدول : كود : For C = 0 To MSFlexGrid.Cols - 1والآن ، سنمر على حقل وراء الآخر ونطبعه ، مع مراعاة أن بعض الأعمدة أعرض من بعض ، فمثلاً لو كان العمود الأول مختلفاً عنهم جميعاً فسنضعه في شرط خاص بالشكل التالي : كود : If C = 0 Thenنزود قيمة P . نضع مؤشر الطباعة على محور X عند P . نطبع محتويات الحقل . نعيد P إلى ما كانت عليه . نزيد P بمقدار عرض العمود . نزيد C بمقدار 1 . * ونضع جملة أخرى إذا كانت C = MSFlexGrid.Cols - 41 . كود : If C = MSFlexGrid.Cols - 41 Then* وجملة أخيرة دون شروط : كود : Printer.CurrentX = p* ونغلق حلقة التكرار : كود : Next Cوهكذا نكمل على نفس المنوال ، وفي المرة السابقة قمنا بطباعة النصوص ، ثم نطبع الخطوط ... وهكذا . وقد يكون في شرحي بعض الخطأ بسبب أنني لست كاتب هذا الكود ، ولكنني سأرفق لك الكود كاملاً ، وطبق عليه بنفس الطريقة مع الجدول الذي لديك . وهذا هو الكود بالكامل : كود : Private Sub Command1_Click()كود : [FONT=Tahoma]'*** This Code requires a Form with the MSFlexGrid and the CommonDialog Controls in it, to add it, Right Click the Tool Box \Components\ Microsoft FlexGrid Control 6.0 and the Microsoft Common Dialog Control 6.0والله الموفق .... والسلام عليكم ورحمة الله وبركاته . |