wpf

ابزار خطکش در WPF

برنامه‌نویسان بخصوص کسانی که برنامه تهیه گزارش‌های قابل چاپ ایجاد می‌کنند حتما نیاز به یک ابزاری برای تعیین محل دقیق قرار‌گیری اطلاعات دارند مثلا فرض‌کنید می‌خواهید درون یک فرم کاغذی چاپ‌شده و آماده که سربرگ شرکت را نیز دارد اطلاعات فاکتور فروش را چاپ‌کرده و تحویل‌دهید. این‌کار درظاهر ساده می‌باشد اما قرار دادن اطلاعات دقیقا در محلی‌خاص بسیار سخت است برای نمونه قراردادن نام مشتری دقیقا در محل مورد نظر(یعنی در جلوی کلمه نام‌مشتری که روی کاغذ چاپ شده‌است) نیاز به چندین بار سعی‌وخطا دارد تا کار بدرستی انجام‌شود، اما با سعی‌وخطا هم دقیقا نمی‌توان اطلاعات را درست ارنج(Arrange) نمود. اما ابزاری مانندخطکش که ابعاد کاغذ درآن مشخص‌باشد کمکی بزرگ در این راه به برنامه‌نویس می‌کند. با این ابزار دقت قراردادن اشیا در محلی خاص افزایش یافته و امکان هم‌تراز نمودن افزایش می‌یابد. البته این ابزار از نظر امکانات بسیار ابتدایی می‌باشد، یک خطکش باید دارای واحداندازه‌گیری، قابلیت زوم(Zoom)شدن و یا اسکیلینگ(Scaling)، قابلیت اسکرول(Scroll)شدن و چندین امکان دیگری باشد تا به توان از آن استفاده نمود. در این مقاله سعی می‌گردد در چند مرحله تک‌تک قابلیت‌های موردنیاز را به آن اضافه‌نمود.

  • 515
  • 0
ادامه مطلب

نمودار پای(PieChart) در WPF

برای برنامه‌نویسی در حوزه اطلاعات در بیشتر زمان‌ها نیاز به تهیه انواع نمودارها از جمله نمودارپای(PieChart)، میله‌ای(BarChart)، خطی(LineChart) و ... می‌باشد، زیبای یک برنامه به وجود همین نمودارها وابسته می‌باشد چراکه فقط با یک نگاه می‌تواند اطلاعات بسیاری را از یک نمودار دریافت کرد. ابزارهای مختلفی برای تولید این نمودارها موجود است برای نمونه اکسل(Excel)، پاوربی‌آی(PowerBI)، کلیک‌ویو(Qlikview) و ... اما همه این ابزارها خارج از محیط برنامه‌نویسی‌مان هستند و استفاده از نمودارهای تولیدشده توسط این نرم‌افزارها درون برنامه خودمان امکان‌پذیر نیست. در محیط برنامه‌نویسی ویژوال‌استودیو نیز می‌توان از ابزارهای تولید نمودار استفاده کرد مانند wpfToolkit، LiveChart، ScottPlot، oxyplot، Telerik، DevExpress، Syncfusion، SciChart WPF و بسیاری دیگر از این نوع ابزارها موجود است که برخی رایگان و برخی مانند تلریک را باید خریداری نمود. هرکدام از این ابزارها دارای قابلیت‌ها و محدودیت‌های خودشان می‌باشند. در این مقاله هدف ساخت یک نمودارپای بصورت مستقل از این ابزارها و فقط با کمک WPF می‌باشد. قابلیت‌هایی چون لیبل(lable)، دونات‌شکل(Doughnut)، خروج‌ازمرکز(Indent) و ... در آن درنظر گرفته‌شده که شما نیز می‌توانید قابلیت‌های مدنظر خودتان را به آن بیفزایید.

  • 564
  • 0
ادامه مطلب

تعریف یک ویژگی‌وابسته(DependencyProperty) در WPF

پیش از شروع لازم است تعریفی از ویژگی داشته‌باشیم، یک ویژگی، خاصیت و یا پراپرتی(Property) {در تمامی این مقاله ویژگی به معنی پراپرتی می‌باشد} یک مکانیزم انعطاف‌پذیر برای خواندن، نوشتن و یا محاسبه یک فیلد یا متغیر می‌باشد. ویژگی را به‌گونه‌ای می‌توان استفاده کرد که گویی یک متغیر عمومی است، یعنی مانند تعریف یک متغیرعمومی(Public) در یک کلاس عمل‌می‌کند. اما در متغیرعمومی امکان کنترل داده ورودی وجود ندارد، برای نمونه فرض کنید در کلاس شخص(Person) یک متغیرعمومی از نوع اعداد صحیح برای ورود اطلاعات قد افراد تعریف شده باشد، اما می‌دانیم قد افراد نمی‌تواند بیش از 250سانتیمتر باشد، ولی بدلیل تعریف عمومی آن، امکان کنترل قد برای جلوگیری از ورود اطلاعات نادرست نیست. اما اگر همین متغیر را به‌صورت یک ویژگی تعریف‌کنیم، امکان اعتبارسنجی(Validate) برای آن وجود دارد. در برنامه‌نویسی استاندارد(شاید استاندارد واژه مناسبی برای آن نباشد) وقتی می‌خواهید یک ویژگی تعریف‌کنید نخست یک متغیر خصوصی(Private variable) تعریف‌می‌کنید و با دستورهای Get و Set مقادیر ویژگی را تنظیم(Set) کرده و یا(Get) برمی‌گردانید(به این ویژگی‌ها CLR Property که مخفف Common Language Runtime Property است گفته‌می‌شود).

  • 812
  • 0
ادامه مطلب

بدست‌آوردن تمپلیت ابزارها‌ی تلریک و کنترل‌ها در WPF

زیبایی در طراحی ابزار یکی از صفات بارز در WPF می‌باشد، داشتن کنترل‌هایی همانند کنترل‌های موجود در برنامه‌نویسی فرم‌بیس از نظر کارایی مناسب است اما بدلیل استفاده WPF از دایرکت‌ایکس در پس‌زمینه اگر بتوان کنترل‌های گرافیکی زیباتر و جذاب‌تر با همان کارایی ایجاد کرد کاری‌است بسیار دلچسب. برنامه‌نویس‌هایی که با ابزارها و کنترل‌های تلریک آشنایی دارند, حتما RadToggleSwitchButton را دیده‌اند، یک کنترل زیبا بصورت دکمه خاموش و روشن که مانند کلید لامپ می‌باشد اما همانند یک ToggleButton در WPF عمل‌می‌کند، و یا یک RadPathButton که به شما امکان تهیه یک دکمه(Button) با شکل دلخواه(با استفاده از PathGeometry) را می‌دهد و کارایی آن دقیقا معادل Button در WPF است و یا ابزارهای ساخت منوبار و تولزبار و ... که همگی بصورت بسیار زیبا در تلریک یافت می‌شود. این قابلیت‌ها فقط بدلیل محیط گرافیکی در WPF امکان‌پذیر است. اما برای تهیه هرکدام از این کنترل‌ها باید تمپلیت(Template) آن‌ را ساخت، این‌کار چندان ساده نیست و شاید حتی دربرخی موارد غیرممکن به نظربرسد. اما اگر بشود تمپلیت یک کنترل را بدست‌آورد براحتی می‌توان نمونه مشابه(با کمی تفاوت) ایجاد کرد. در ادامه نحوه بدست‌آوردن تمپلیت یک کنترل دلخواه را خواهید دید.

  • 335
  • 0
ادامه مطلب

نقشه ایران با قابلیت انتخاب استان در WPF

موضوعات : متوسطه, سی‌شارپ, زمل

برای یک برنامه‌نویس بخصوص کسی که می‌خواهد برنامه‌ای برای مدیریت ارشد بنویسد، هیچ چیز مهمتراز نمایش داده‌ها با زیبایی هرچه‌بیشتر و قابلیت فهم بالاتر نیست. مدیریت ارشد همیشه انتظار دارد با یک نگاه تمامی اطلاعات مورد نیازش را بدست‌آورد. برای نمونه، اطلاعات فروش در استان‌ها را هم می‌توان با استفاده از یک جدول نمایش‌داد هم با استفاده از نقشه کشور. نمایش گرافیکی برروی نقشه به‌مراتب زیباتر و قابل فهم‌تر از یک جدول می‌باشد. برنامه‌نویسی هنر است اما از آن مهم‌تر نحوه نمایش و طراحی زیبا و کاربرپسند است. زمانی محیط کار در کامپیوتر سیستم عامل تکست‌بیس(TextBase) به‌نام DOS بود اما عدم زیبایی باعث تغییر محیط سیستم‌عامل به محیطی گرافیکی یعنی همین ویندوز شد که هم زیباست و هم کاربرپسند. در محیط برنامه‌نویسی WPF برای نمایش نیاز به اطلاعات موردنیاز برای دستور PATH داریم. اما از کجا چنین نقشه‌ای بیابیم که اطلاعات موردنیاز ما را داشته باشد. با یک جستجوی ساده متوجه‌می‌شوید که نقشه‌ها با فرمت svg همانی است که نیازداریم. اینگونه نقشه‌ها در اینترنت به فراوانی یافت می‌شود. فقط کافی‌است یک جستجوی ساده انجام‌دهید.

  • 543
  • 0
ادامه مطلب

خواندن داده اکسل و نمایش آن در کامبوباکس به‌همراه عکس در WPF

موضوعات : تخصصی, سی‌شارپ, زمل

خواندن داده برای یک برنامه‌نویس بخصوص اگر بخواهد برنامه‌هایی که برپایه دیتا(دیتابیس) هستند بنویسد بسیار مهم خواهدبود، بخش مهمی از این نوع برنامه‌ها عملیات‌هایی چون جستجو، درج, بروزرسانی‌ و حذف داده‌ها را شامل می‌شوند. این عملیات‌ها اگر با استفاده از اوراکل(Oracle)، اس‌کیوال(SQL) و یا برنامه‌هایی مشابه باشد تا حدود زیادی ساده و راحت است اما اگر داده‌ها در یک فایل متنی یا یک اکسل ذخیره شده‌باشد این‌گونه عملیات‌ها سخت‌تر و مشکل‌تر خواهدبود چرا که ساختار داده خوانده شده، یک ساختار جدولی نیست و امکاناتی چون جستجو، درج، بروزرسانی و حذف را باید توسط برنامه شبیه‌سازی کرد. در اینجا هدف فقط خواندن داده‌ها از یک شیت(Sheet) خاص از یک فایل اکسل است و نمایش آن‌ها درون یک کامبوباکس است، البته می‌خواهیم کامبوباکس‌مان عکس را نیز نشان دهد. در گذشته(منظور برنامه‌های فرم‌بیس) گذاشتن عکس در کامبوباکس مشکلات فراوانی داشت و نیاز به استفاده از APIها بود.

  • 819
  • 0
ادامه مطلب

کنترل با امکان جابجایی توسط موس در WPF

برنامه‌نویسان بخصوص کسانی که می‌خواهند برنامه‌هایی مشابه طراحی فرم( Form Builder) و یا ریپورت(Report Builder) در ویژوال‌استودیو یا نرم‌افزارهای مشابه بنویسند لازم دارند که وقتی یک شی یا یک کنترل توسط کاربر به برنامه اضافه می‌شود، کاربر بتواند آن را با استفاده از موس حرکت دهد و مکان آن را با موس مشخص کند. این کار در محیط فرم‌بیس(FormBase) با بکارگیری ایونت‌(Event)های MouseDown، MouseUp و MouseMove برای هر کنترل امکان‌پذیر است. اما در حالت فرم‌بیس شی‌ها و کنترل‌ها همگی درون یک فرم یا یک پانل(Panel) قرار دارند و حرکت درون هردو (فرم یا پانل) با استفاده از تنظیم دو خاصیت(Property) لفت(Left) و تاپ(Top) برای آن کنترل یا شی امکان‌پذیر است. اما در WPF ما پانل‌های مختلفی چون Canvas، Grid و ... داریم که تغییر مکان کنترل‌ها در آن‌ها روش‌های متفاوتی دارند. مثلا در پانل Canvas برای تنظیم محل یک شی باید با استفاده از دستورهای SetLeft و SetTop و بکارگیری خاصیت وابسته(Attached Property) Left و Top محل شی را درون Canvas تغییر داد اما برای Grid لازم است خاصیت Margin را برای آن شی یا کنترل تغییردهیم. در اینجا هدف آموزش نحوه تغییرمکان کنترل در Canvas می‌باشد.

  • 1587
  • 0
ادامه مطلب

گییج عمودی در WPF با استفاده از ابزارهای تلریک

اگر برنامه‌نویس کامپیوتر باشید و با داده سروکار داشته باشید لزوم گزارش‌گیری را حتما مشاهده نموده‌اید. فرض کنید یک برنامه برای منابع انسانی شرکتی نوشته‌اید و تمامی داده‌های پرسنل شرکت نیز توسط اپراتورها وارد شده، حال اگر نتوانید گزارش‌هایی از اطلاعات واردشده به برنامه را تهیه کرده و به کاربران آن ارائه نمایید، برنامه شما کارایی نخواهد داشت. یا وقتی که اطلاعات مالی شرکت را در برنامه مالی(نرم‌افزار حسابداری) وارد کرده‌اید ولی نمی‌توانید حتی گزارشی از موجودی بانک‌تان را مشاهده نمایید آنگاه آن برنامه برای شما ارزش چندانی ندارد. پس فقط ورود اطلاعات نیست که مهم است بلکه گزارش‌گیری از داده‌ها بخصوص برای کاربران آن نیز اهمیت ویژه دارد. اهمیت گزارش آنگاه مهم‌تر می‌شود که لازم باشد گزارشی به مدیریت ارشد برای تصمیم‌های مهم که می‌تواند سرنوشت شرکت را تغییر دهد ارائه نمایید. در برنامه نویسی با ابزارهایی چون ویژوال‌استودیو(Visual Studio) یا دلفی(Dephi) و ... ابزارهایی همانند ریپورت بیلدر(Report Builder) وجود دارد که به شما در ارائه گزارش کاربری کمک می‌کند، اما برای گزارش‌های مدیریتی چه باید کرد.

ابزارهایی چون کلیک‌ویو و پاوربی‌آی و ... کاملا محیط مخصوص به خود دارند و محیط گزارش‌گیری در آن‌ها از محیط نرم‌افزارنویسی جدا می‌باشد. اما آیا می‌توان محیط گرافیکی زیبایی چون کلیک‌ویو را درون ویژوال‌استودیو وارد کرد. پاسخ بلی هست. شرکت ماکروسافت برای محیط برنامه‌نویسی ویژوال‌استودیو یک پایه گرافیکی به‌نام WPF (کوتاه‌ شده (Windows Presentation Foundation ایجاد کرده‌است.

برنامه‌نویسی در این محیط کاملا با محیط اصلی ویژوال‌استودیو متفاوت است. اما فرض براین است که شما با این محیط آشنایی دارید. البته درآینده حتما آموزش برنامه‌نویسی WPF را ارائه خواهم‌کرد. درادامه نحوه ساخت یک گییج خطی عمودی(Vertical Linear Gauge) را با بکارگیری ابزارهای تلریک(Telerik) فراخواهید گرفت.

  • 504
  • 0
ادامه مطلب