سلام
یکی از مهمترین و پرکاربردترین ویجت ها ، ویجت باتون ( BUTTON ) می باشد .
این ویجت مانند یک دکمه عمل می کند و معمولاً به عنوان عنصر اصلی رابط کاربری در صفحه های لمسی استفاده می شود.
اگر باتوk فوکوس شده باشد به کلیدهای GUI_KEY_SPACE و GUI_KEY_ENTER واکنش نشان میدهد.
باتون ها معمولا با یک متن درون آن نمایش داده می شود ، البته امکان لود عکس نیز در آن امکان پذیر است .
ویجت باتون را در شکل زیر مشاهده می کنید
تمامی روتین های مرتبط با باتون در فایلهای BUTTON*.c و BUTTON.h واقع شده است شکل ویجتی که شما در بالا دیده اید شکل کلاسیک آن می باشد ، در شکل زیر باتونی که پوسته آن عوض شده است را مشاهده می کنید.
پوسته یا همان اسکین برای این ویجت در دسترس است. تصویر بالا ویجت را با استفاده کردن پوسته پیش فرض نشان می دهد.
برای اطلاعات بیشتر می توانید بخش اسکین را در راهنمای emwin مطالعه کنید.
نوع | ماکرو | پیش فرض | شرح |
N | BUTTON_3D_MOVE_X | ۱ | تعداد پیکسل هایی که نوشته یا عکس باتن به جهت افقی در حالت فشرده حرکت کند |
N | BUTTON_3D_MOVE_Y | ۱ | تعداد پیکسل هایی که نوشته یا عکس باتن به جهت عمودی در حالت فشرده حرکت کند |
N | BUTTON_ALIGN_DEFAULT | GUI_TA_HCENTER | GUI_TA_VCENTER |
تراز متن داخل باتن |
N | BUTTON_BKCOLOR0_DEFAULT | ۰xAAAAAA | رنگ بکگراند در حالت معمولی |
N | BUTTON_BKCOLOR1_DEFAULT | GUI_WHITE | رنگ بکگراند در حالت فشرده |
N | BUTTON_FOCUSCOLOR_DEFAULT | GUI_BLACK | رنگ پیش فرض برای مستطیل فوکوس |
S | BUTTON_FONT_DEFAULT | &GUI_Font13_1 | فونت پیش فرض نوشته های داخل باتن |
B | BUTTON_REACT_ON_LEVEL | ۰ | در زیر توضیح داده شده است |
N | BUTTON_TEXTCOLOR0_DEFAULT | GUI_BLACK | رنگ متن داخل باتن در حالت غیر فشرده |
N | BUTTON_TEXTCOLOR1_DEFAULT | GUI_BLACK | رنگ متن داخل باتن در حالت فشرده |
دو راه برای پیکره بندی رویدادهای PID در ویجت باتن (BUTTON) وجود دارد.
راه اول و پیش فرض EMWIN شناسایی و پردازش تمام حوادثی PID است که در ناحیه ی ویجت BUTTON اتفاق می افتد.
این پیکره بندی شامل PIDهایی که به این ناحیه منتقل می شوند را فشرده در نظر گرفته و شرایط فشرده شدن آنرا قبول می کند.با قبول کردن شرایط فشرده شدن حالت آنرا نیز تغییر می دهد.
این عکس العمل با ترکیب با پنل لمسی مفید است ، اما عیبی را نیز دارد و آن این است که ممکن است به اشتباه روی آنها کلیک شود. در ادامه نحوه ی اشتباه کردن را ملاحظه می کنید.
راه دیگر برای مدیریت رویداد های PID برای ویجت باتن (BUTTON) این است که روی تغییرات سطح واکنش نشان دهد. این راه باعث می شود که وضعیت باتن ، فقط در حالت PID تغییر کند.
می توان با تعریف کردن BUTTON_REACT_ON_LEVEL و مساوی قرار دادن آن با ۱ و یا فراخوانی تابع BUTTON_SetReactOnLevel() آنرا فعال کرد.
این مثال نشان می دهد که یک ویجت باتن (BUTTON) چگونه با اشتباه می افتد ، بدون اینکه در حالت سطح پیکره بندی شده باشد.
در صورتی که اگر در حالت سطح پیکره بندی می شد این اشتباه رخ نمیداد.
رویدادهای زیر از ویجت باتون ، به پنجره والد خود ، با عنوان WM_NOTIFY_PARENT پیام ارسال می کنند.
پیغام | شرح پیغام |
WM_NOTIFICATION_CLICKED | روی باتن کلیک شده است |
WM_NOTIFICATION_RELEASED | باتنی که روی آن کلیک شده بود آزاد شد |
WM_NOTIFICATION_MOVED_OUT | باتنی که روی آن کلیک شده بود ، اشاره گر به خارج از باتن و بدون رها شدن حرکت کرد |
اگر روی ویجت باتن (BUTTON) فوکوس شده باشد ، ویجت به کلیدهای زیر واکنش نشان می دهد.
کلید | عکس العمل |
GUI_KEY_ENTER | اگر این کلید اعمال شود ، دکمه واکنش می دهد،بدین صورت که فشرده شده و بلافاصله آزاد می شود. |
GUI_KEY_SPACE | اگر این کلید اعمال شود ، حالت دکمه به فشرده تغییر داده می شود. اگر کلیدها آزاد باشند ، حالت دکمه به حالت غیر فشرده تغییر می کند. |