سه شنبه ۵ اردیبهشت ۱۳۹۶
 
 
 
کلمه عبور خود را فراموش کرده اید؟
 

 
 
 آشنایی با Visual Basic Power Pack
Visual Basic
تاریخ ثبت:  ۸۸/۹/۶
تعداد نمایش:  ۵۱۶۲
  نویسنده: وحید رحمانی فرد
 
   ۷  نفر تا این لحظه به این مقاله امتیاز داده اند.
 
   Bookmark and Share

خیلی وقت­ها بعضی­ها از VB 6.0 یاد می­کنند و به این فکر می­کنند که ایجاد اشکال ساده هندسی و همچنین پرینت کردن یک فرم با محتویاتش در آن چقدر ساده بود. با ورود Visual Studio .NET 2002 کمی تغییر در روند طراحی نرم افزارها ایجاد شد. یکی از این تغییراتی که کمی بیش از بقیه به چشم می­آمد عدم وجود امکاناتی برای رسم اشکال هندسی و همچنین پرینت کردم محتویات یک فرم به سادگی فراخوانی  ()Form1.print بود.

 برای حل این مشکل تیم نرم­افزاری مایکروسافت اقدام به ایجاد بسته­ای تحت عنوان Visual Basic Power Pack در نسخه های .NET نموده است. با استفاده از این بسته که هم اکنون نسخه 3.0 آن به همراه Visual Studio .NET 2010 ارائه شده است می­توان به راحتی تمام اعمال فوق را انجام داد.

با نصب این نسخه در قسمت ToolBox ویژوال استادیو، جبعه ابزاری به صورت زیر نمایان می شود:

تصویر 1. نمای کلی از جعبه ابزار Visual Basic Power Pack

این جعبه ابزار دارای 5 کامپوننت است. در این مقاله کامپوننت­های فوق را مورد بررسی قرار می­دهیم.

کامپوننت­های هندسی

در جعبه ابزار Visual Basic Power Pack، سه کامپوننت برای رسم تصاویر هندسی در نظر گرفته شده است. مزیت این کامپوننت­ها نسبت به روش رسم اشکال توسط +GDI / GDI در این است که برنامه­نویس در زمان طراحی قادر به مشاهده کامل واسط کاربری بوده و می­تواند توسط پنجره خصوصیات IDE تمامی تنظمیات را با سرعت و دقت بالا انجام دهد.

آن دسته از برنامه­نویسان که از فضا نام System.Drawing برای ایجاد اشکالی این چنینی استفاده کرده­اند قطعاً با سختی آن روش برای کار آشنا هستند. ابتدا باید شئ­ای از Graphic ایجاد کرد. نوع قلم را تعیین کرد. مختصات را به صورت دستی باید ست نمود و ...

یکی دیگر از مزایای این اشکال، امکان ایجاد مدل پر کردن داخل آنها فقط و فقط با استفاده از تنظیم یک خصوصیت در پنجره خصوصیات است. همچنین اشکالی که این چنین ایجاد می­شود «در حالت طراحی» رویدادهای Click و Double Click و ... را نیز پشتیبانی می­کنند. برای ایجاد چنین امکانی با مدل قبلی «کد نویسی به منظور ایجاد اشکال هندسی» کمی مشکل بود.

نکته مهم دیگر در مورد این اشکال گرافیکی این است که دیگر نیازی به Render کردن آنها در زمان تغییر اندازه و حالت فرم نیست. NET. این عمل را به خوبی برای برنامه نویس انجام می­دهد و نیازی به نگرانی در مورد آن نیست. برای مثال باید از کدهای زیر به منظور رسم یک دایره در زمان اجرا استفاده کرد:

Graphics gr;

gr = this.CreateGraphics();

gr.DrawEllipse(new Pen(Color.Black, 2), 10, 10, 100, 100);

حال باید برای زمانی که فرم تغییر اندازه و یا تغییر حالت می­دهد نیز در کدنویسی انجام دهیم. برای این منظور در رویداد Paint کدنویسی انجام می­گیرد.

 کنترل PrintForm

برای چاپ محتویات یک فرم در زمان اجرا، بدون در نظر گرفتن PrintForm، روش­های متعددی وجود دارد. یکی از این روش­ها ایجاد یک تصویر JPG از فرم مد نظر و سپس چاپ آن می­باشد. روش دیگر ایجاد شئ گرافیکی از فرم و تک تک اعضای آن در زمان اجرا می­باشد. روش­های فوق نیازمند کدنویسی زیادی می­باشند و برنامه نویسی باید آشنایی نسبی با کتابخانه +GDI داشته باشد. به عنوان مثال می­توانید با مراجعه به آدرس­های زیر نحوه انجام دو روش فوق را مطالعه کنید:

http://www.c-sharpcorner.com/UploadFile/srajlaxmi/PrintingWindowsForm01182008021239AM/PrintingWindowsForm.aspx

http://www.c-sharpcorner.com/UploadFile/mgold/HowToPrintingFormControlsinCSharpand.NET11212005063649AM/HowToPrintingFormControlsinCSharpand.NET.aspx

 

اما با به کارگیری کامپوننت PrintForm می­توان به راحتی در زمان اجرا محتویات یک پنجره را برای چاپگر ارسال نمود. این کامپوننت از نسخه موجود در VB 6.0 بهینه تر شده است و قابلیت کار با مجموعه Printerها را نیز دارد. پس از قرار دادن یک نمونه از این کامپوننت بر روی فرم می­توان به راحتی با فراخوانی متد ()Print آن، فرم را چاپ نمود. برای چاپ توسط این متد پارامترهای متعددی وجود دارد. در ادامه آنها را بررسی می­کنیم. برای تست این متد از فرمی به صورت زیراستفاده می کنیم:

تصویر 2. فرم نمونه

در این فرم 9 عدد دکمه وجود دارد. به دلیل عدم وجود فضا برای جای دادن تمامی دکمه­ها فرم به صورت اسکرول دار شده است. اکنون مشاهده می­کنید که چگونه با استفاده از متد ()Print خروجی­های متفاوتی می­توان بدست آورد. اولین حالت فراخوانی متد ()Print با استفاده از سربارگذاری اول آن می­باشد:

printForm1.Print();

توجه داشته باشید که کامپوننت PrintForm در Component Tray قرار میگیرد. لذا شما بر روی فرم چیزی مشاهده نخواهید کرد. با به کارگیری این متد، محدوده قابل مشاهده از فرم بدون Border فرم «منظور کناره های فرم و نوار عنوان است» چاپ می­شود.

خروجی نمونه 1.

اما اگر از سربارگذاری دوم استفاده کنید، برای چاپ فرم از امکانات بیشتری برخوردار خواهید بود. دومین سربارگذاری این فرم  دارای 2 پارامتر است. پارامتر اول به فرمی که قرار است چاپ شود اشاره می­کند. اگر قصد دارید از فرم جاری پرینت تهیه کنید به سادگی از کلمه کلیدی this استفاده کنید. اما اگر قصد دارید از درون فرم جاری، فرم دیگری را برای پرینت ارسال کنید باید یک نمونه از فرم مذکور را در پارامتر اول قرار دهید. توجه داشته باشید که نمونه مذکور باید نمایان «خصوصیت Visible برابر true» و همچنین دارای Focus باشد.

پارامتر دوم در این سربارگذاری نحوه چاپ فرم را بیان می­کند. برای این پارامتر از ثوابت زیر می­توانید استفاده کنید:

    ClientAreaOnly: این گزینه که حالت پیش­فرض در سربارگذاری اول نیز می­باشد، فقط از محدوده داخلی فرم تعیین شده بدون در نظر گرفتن Border فرم پرینت می­گیرد.

    Scrollable: این حالت برای زمانی که اطلاعات بیشتری نسبت به سایز فرم در فرم جای داده شده­اند مفید است. مانند مثال فوق که تعدادی از دکمه­ها در تصویر وجود ندارد. بابه کارگیری این گزینه، تمامی فرم چاپ می­شود. خروجی این حالت برای فرم فوق به صورت زیر است:

خروجی نمونه 2. حالت Scrollable

    FullWindow: در این حالت، تمامی محتوای نمایان پنجره به همراه Border آن نمایش داده می­شود. خروجی نمونه به صورت زیر است:

خروجی نمونه 3. حالت FullWindow

CompatibleModeFullWindow: اگر به خروجی فوق توجه کنید، درمی یابد که خروجی بدون در نظر گرفتن حالت نمایشی ویندوز، به صورت Windows Basic چاپ شده است. اما اگر بخواهیم مثلا در جایی که از Aero استفاده می­شود به همان سبک خروجی تهیه شود از این گزینه استفاده می­کنیم. خروجی نمونه به صورت زیر است:

خروجی نمونه 4. حالت CompatibleModeFullWindow

   CompatibleModeClientAreaOnly: شباهت این مورد با ClinetAreaOnly مانند گزینه شباهت گزینه­های FullWindow و CompatibleModeFullWindow می باشد.

کامپوننت DataRepeater

همانطور که از نام این کامپوننت مشخص است، از این برای تکرار تعدادی کنترل دیگر استفاده می­کنیم. برای درک بهتر این کامپوننت به قسمت Details در گزارشات Crystal Report فکر کنید. این کامپوننت دقیقاً همان کاری را انجام می­دهد که آن قسمت در گزارشات انجام میدهد به تصویر زیر دقت کنید :

تصویر 3. خروجی DataRepeater

همانطور که مشخص است در خروجی به تعداد سطرهای موجود در جدولی که به این DataRepeater متصل شده است، کنترل­های برچسب و جعبه متن ایجاد شده و همگی با مقایر مرتبط پر شده­اند. در این برنامه ابتدا از قسمت Data Source جدول مد نظر بر روی این کامپوننت Darg شده است. توجه داشته باشید که در قسمت DataSource برای هر جدول به صورت پیش­فرض دو حالت نمایشی Grid و Detail در نظر گرفته شده است. در تصویر فوق از حالت Detail استفاده شده است. البته برنامه نویس می­تواند با انتخاب گزینه custome طرح مد نظر خود را پیاده­سازی نماید.

تصویر 4. کامپوننت DataRepeater به صورت افقی

 

  کیفیت مقاله ارائه شده از نظر شما   
برای دادن رتبه به این مقاله می بایست Login کرده باشید.
  درباره نویسنده
وحید رحمانی فرد
به برنامه نویسی علاقه زیادی دارم.
همه مقاله های نوشته شده توسط این کاربر (۶)
 
  پیام جدید
صفحه ۱ - پیامهای اصلی ۱ تا ۲ از مجموع ۲ پیام اصلی
اولین قبلی بعدی

 عنوان فرستنده تاریخ
 
گلایه علی دخیل زاده ۱۳۸۹/۱۲/۱
پاسخ به: گلایه وحید رحمانی فرد ۱۳۸۹/۱۲/۷
 
تشکر خلیل صلاح ۱۳۸۸/۹/۱۳
اولین قبلی بعدی

Copyright © 2006 - 2016 All Rights Reserved.
Please direct your questions or comments to