![]() |
|
مشروع بناء أداة طباعة - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : الأقسام التعليمية - المنتدى القديم (http://vb4arb.com/vb/forumdisplay.php?fid=90) +--- قسم : مكتبة أدوات الأعضاء (http://vb4arb.com/vb/forumdisplay.php?fid=115) +--- الموضوع : مشروع بناء أداة طباعة (/showthread.php?tid=7613) |
مشروع بناء أداة طباعة - أبو يعقوب - 10-02-13 [COLOR="#FF0000"]************************ يرجى مراجعة الشرح على الرابط http://vb4arb.com/vb/showthread.php?4653-%D4%D1%CD-%C3%CF%C7%C9-%C7%E1%D8%C8%C7%DA%C9%28FormsPrinter%29 ************************[/COLOR] التقارير والطباعة، هاجس يؤرق المبرمجين، أو لنقل هو هاجس يؤرقني أنا شخصياً وأمثالي ممن لايحبون تصميم التقارير المعقدة ولا يحبون أسلوب تصميم التقارير (لا أطيق تصميم التقارير) خاصة المتبع في Crystal Report ، بل لازلت لا أعلم هل ينبغي تنصيب ملفات إذا استخدمنا Crystal report، هل هو مجاني ؟ ثم إن هناك أمرٌ أهم، أنا من المبرمجين الذين يعتنون بمظهر البرنامج وهو أول ما أتفنن فيه في مشاريعي ، فالناس يحبون المظاهر، حتى إني قاطعت DataGridView القبيحة وصرت أستخدم ListView كبديل جميل (طبعا مع تطوير كبير)... لاحظ الصورة التالية البيانات معروضة على أداة List View ، تخيل لو طُلب منك طباعة(برمجياً وممنوع أستخدام Print Screen) لهذه البيانات بنفس التنسيق والألوان،لا أدري إن كنت ستقوم بتصميم تقرير يعرض نفس البيانات ويقوم بالتنسيق بنفس الشروط، أما أنا فأرفض أن أكرر الجهد مرتين، فكيف إذا كان المطلوب هو طباعة كل جدول (يعني مضاعفة العمل). هذا الموضوع سيكون سلسلة مختصرة لمتابعة بناء الأداة التي توصلنا إلى هذه النتيجة: وفي النهاية سأرفق الأداة =================== المشروع : بناء أداة طباعة وتصميم تقارير وصف المشروع: أداة تقوم بطباعة البيانات من أدوات التحكم(Controls) وتتيح تصميم التقارير بأدوات التحكم العادية الهدف: تسهيل وتبسيط عملية الطباعة وتصميم التقارير مشروع بناء أداة طباعة - أبو يعقوب - 10-02-13 نبدأ نظرياً من النهاية، النهاية ترسم لنا الطريق إلى نقطة البداية ![]() تأتي التقارير عادة في هذه الصورة(Header - Details - Footer)، رأس الصفحة للعناوين ويتكرر في كل صفحة، اما التفاصيل فهي المحتوى والمادة الأساسية، وأما ذيل الصفحة فيحتوي في الغالب رقم الصفحة ويتكرر في كل صفحة أيضاً. صورة توضيحية بعد إذن القارئ سنقوم بتحليل بسيط لهذا التقرير، وذلك لوضع قاعدة عامة(حاول التعميم واستنباط القواعد ما استطعت، فبذلك تبتعد عن الأخطاء وتقترب من المثالية) 1- الأجزاء الثلاثة (Header - Details - Footer) كل منها يسمى قسم أو Section. 2- كل قسم يحتوي على بيانات مطبوعة. 3- بعض الأقسام تتكرر في كل صفحة(Header - Footer) وبعضها لا(Details). 4 - اليانات لايمكنها التواجد خارج الأقسام. بناء على هذه الملاحظات نضع قاعدة عامة تصف التقرير بشكل أعم: التقرير عبارة عن صفحة أو أكثر كل صفحة تحتوي على أقسام كل قسم يحتوي على معلومات. وبناء على ذلك يكون قالب التقرير العام بهذا الشكل يبتع.... مشروع بناء أداة طباعة - أبو يعقوب - 10-02-13 نواصل من حيث انتهينا مع تفصيل أكثر توصلنا إلى أن التقرير(نتحدث عن التقرير المطبوع وليس تقرير بما هو نتيجة مفيدة لبحث عن بيانات) = صفحات، والصفحة = أقسام، والقسم = معلومات ... بيانات مطبووعة مشروع بناء أداة طباعة - أبو يعقوب - 11-02-13 سنتحدث الآن عن نقطة هامة جداً تخص مساحة صفحة التقرير أثناء التصميم ومساحته أثناء الطباعة ! أثناء التصميم سيكون عبارة عن كنترول عادي جداً كما في الصورة ويستطيع المبرمج تغيير مساحته بصورة طبيعية دون الاهتمام بمطابقة مساحة الصفحة، إذ ليس من العدل أن نشغل بال المصمم بهذه الأمور ما هو الحل ؟ الحل هو استخدام مقياس رسم (Scale) ، وإذا أمعنا النظر سنزيد في التفصيل ونقول : نحتاج مقياس رسم أفقي وآخر عمودي وذلك لأن النسبة بين الطول والعرض غير ثابتتين الصورة التالية توضح الفكرة فعلى هذا يكون مقياس الرسم الأفقي = مقدار عرض ورقة التصميم ÷ مقدار عرض ورقة الطباعة >> م س = س1 ÷ س2 مقياس الرسم العمودي = مقدار طول ورقة التصميم ÷ مقدار طول ورقة الطباعة >> م ص = ص1 ÷ ص2 طبعا على المصمم أن يراعي نسبة الطول إلى العرض لتتناسب مع الورقة الحقيقية(هو المسئول عن الشذوذ في المساحة) وهذا المقياس يطبق على جميع أجزاء التقرير (صفحة - قسم - أدوات) مشروع بناء أداة طباعة - أبو يعقوب - 12-02-13 بعد هذه المشاركة سأتوقف حتى أنتهي من الأداة وما لدي الآن هو مجرد مسودة ناقصة وإذا اكتملت سأرفقها لكم النتيجة النهائية ستكون عبارة عن UserControl باسم Page يقبل فقط Section وهي أداة مشتقة من Panel، والأخيرة تقبل أدوات تدعم واجهة IPrintableControl سأقوم بتطوير 4 أدوات 1- ListView 2- TextBox 3- Label 4 - PictureBox ويمكن مستقبلاً دعم المزيد من الأدوات لتكون قابلة للطباعة، ولكن هذا القدر كافي فأكثر التقارير تعتمد فقط على النصوص والجداول والصور صور أولية هذه صورة تصميم التقرير بكل سهولة مع ادوات التحكم العادية وهذه صورة للتقرير وهو مطبوع
مشروع بناء أداة طباعة - Sajad - 12-02-13 [COLOR="#800000"]السلام عليكم بالتوفيق ان شاءالله[/COLOR] مشروع بناء أداة طباعة - ربيع - 13-02-13 ما شا الله مجهود رائع وجميل بانتظار تتمة الموضوع
مشروع بناء أداة طباعة - أبو يعقوب - 16-02-13 دعواتكم بالتوفيق، واجهتني صعوبة هندسية والحمد لله تجاوزتها، إذا تم كما أريد سنستغني عن كل أداة تقارير وستكون التقارير منطقية (أي على الفورم بالأدوات العادية) وإن شئنا طباعتها نصمم لها تقرير بنفس الأدوات والبيانات يجوز أخذها من أدوات التقرير الأصلية، وبالتالي تختص الأداة فقط بالطباعة ولا دخل لها بقاعدة البيانات ولن نضطر إلى تصميم بطريقة مملة ومعقدة !، كما ان الأداة ستكون مفتوحة هندسياً وقابلة للتطوير عن طريق إضافة أدوات أخرى يمكن طباعتها مثل RitchTextBox + DataGridView مشروع بناء أداة طباعة - أبو يعقوب - 25-02-13 السلام عليكم طال الغياب والغنائم جاهزة بنسبة 95% ![]() بعد جهد جهيد تمكنت من بناء أساس محترم وصار لدينا أداة Component ممتاز للطباعة يطبع نصوص وجداول وصور (TextBox/Label + ListView + PictureBox) هذه صورة لوقت التصميم وهذه صورة للطباعة بقيت لمسات وتكون الأداة بين أديكم وسنسميها FormsPrinter حاليا للتجريب والتنقيح مشروع بناء أداة طباعة - أبو يعقوب - 26-02-13 تم الانتهاء من النسخة الأولية ، لا تخلو من الأخطاء فلم أشغل عقل الException بعد ! الأداة عبارة عن ملف dll سحب وإلقاء في ToolBox وستظهر مجموعة أدوات تم التحديث : 30 -7 - 2013 الكود[url="http://vb4arb.com/vb/uploaded/105_01375165400.rar"] FormsPrinterTester[/url] الأداة (ملف dll) FormsPrinter |