کد نویسی حرفه ای - آموزش اول - دکمه

the_king

مدیرکل انجمن
توی اولین آموزش از این سری کد نویسی حرفه ای که نمی دونم جمعا چند تا آموزش میشه، به ساختن دکمه می پردازیم.
دکمه یا Button ای که توسط خود MMB ارائه میشه یکسری معایبی داره :
  • حالت های فعال / غیر فعال (Enabled / Disabled) نداره
  • اگه از تصویر استفاده کنید، با تغییر اندازه دکمه، شکل ظاهری اش از ریخت می افته.
  • روی رخداد Enter که ماوس روی دکمه قرار می گیره و رخداد Leave که ماوس دکمه رو ترک می کنه کنترلی ندارید.
  • برای دریافت متنی که قبلا روی دکمه نوشتید قابلیتی ارائه نمی کنه و فقط می توانید عوض اش کنید.
  • امکان تغییر تصویر دکمه رو در حین اجرای برنامه ندارید.
  • برای ایجاد کردن دکمه در حین اجرا شدن برنامه قابلیتی پیش بینی نشده.

خوب، به قدر کافی از دکمه های MMB ایراد گرفتم، نه؟ حالا خودم یکسری کد معرفی می کنم که باهاشون بشه
دکمه های قشنگ گرافیکی Skin دار ساخت که هیچکدوم از ایرادات ذکر شده رو نداشته باشه.
  • حالت های فعال / غیر فعال (Enabled / Disabled) داره و می توانید هر زمان که خواستید تغییر اش بدید.
  • می توانید Skin دکمه ها رو تغییر بدید و همچنین با تغییر اندازه دکمه، شکل ظاهری اش حفظ میشه.
  • رخداد Enter که ماوس روی دکمه قرار می گیره و رخداد Leave که ماوس دکمه رو ترک می کنه رو کنترل می کنه.
  • برای دریافت کردن و تغییر دادن متنی که روی دکمه نوشتید امکانات لازم رو پیش بینی کرده.
  • اگه Skin دیگری برای دکمه ساخته اید، مکان تغییر تصویر دکمه رو در حین اجرای برنامه دارید.
  • برای ایجاد کردن و حذف کردن دکمه در حین اجرا شدن برنامه نه محدودیتی در تعداد دارید و نه ابعاد.

محتویات فایل پیوستی رو در یک پوشه از حالت فشرده خارج کنید و بعد فایل MBD پروژه رو اجرا کنید. مسیر پوشه
Skin رو از شما خواهد پرسید که باید دقیقا مسیر پوشه خود Skin رو بهش نشون بدید. برای دفعه های بعدی یادش
می مونه. در ضمن اگه پروژه رو کامپایل کنید و فایل exe کنار پوشه Skin باشه، دیگه مسیر رو نمی پرسه.

پروژه Create Button.mbd به همراه پوشه Skin ضمیمه این پست می باشد.
 

پیوست ها

  • 01-Create Button.zip
    15 کیلوبایت · بازدیدها: 47

the_king

مدیرکل انجمن
توضیحات تکمیلی و نحوه استفاده :

FindSkin اسکریپتی است کارش مشخص کردن مسیر $skin است تا تصاویر دکمه رو بشه فراخوانی کرد.
قبل از هر چیز بایستی اسکریپ FindSkin اجرا بشه تا مسیر $skin روی پوشه Skin تنظیم بشه. می توانید بجای
اجرا کردن FindSkin خودتون مقدار $skin رو روی پوشه مورد نظر تنظیم کنید. پیشنهاد ام اینه که اینکار همانند خود
پروژه پیوستی در اسکریپ Page Start انجام بشه :
کد:
RunScript("FindSkin")

CheckHover اسکریپتی است که هر 50 میلی ثانیه یکبار بررسی می کنه که آیا ماوس روی یکی از دکمه ها قرار گرفته
یا نه. و بر اساس این بررسی رخداد های Enter و Leave و Up دکمه ها رو فراخوانی می کنه. چون اجرا شدن این رخداد
برای نمایش صحیح دکمه ها لازمه، حتما در همون ابتدای اجرا پروژه فراخوانی اش کنید :
کد:
RunScript("CheckHover")

CreateButton رو زمانی فراخوانی کنید که بخواهید یک دکمه روی Page تون بسازید و قرار بدهید.
قبل از فراخوانی اش حتما مقادیر زیر رو مشخص کنید :
$buttonName نام دکمه شما خواهد بود، مثلا MyButton1 ، از بکار بردن نام های تکراری برای چندین دکمه بپرهیزید.
$buttonText عنوان نمایشی دکمه شما است، مثلا Sample
$buttonState وضعیت دکمه شما است، که باید enabled و یا disabled باشد.
buttonLeft موقعیت افقی x دکمه شما روی صفحه است، مثلا 20
buttonTop موقعیت عمودی y دکمه شما روی صفحه است، مثلا 50
buttonWidth طول دکمه شما است، مثلا 100
buttonHeight عرض دکمه شما است، مثلا 30
بعد از مشخص کردن مقادیر بالا دکمه را با فراخوانی کردن CreateButton می سازید :
کد:
buttonName$ = 'MyButton1'
buttonText$ = 'Sample'
buttonState$ = 'enabled'
buttonLeft = 20
buttonTop = 50
buttonWidth = 100
buttonHeight = 30
RunScript("CreateButton")

DeleteButton دکمه مورد نظر رو حذف خواهد کرد. قبل از فراخوانی اش، مقدار $buttonName رو مشخص کنید :
کد:
buttonName$ = 'MyButton1'
RunScript("DeleteButton")

GetButtonText می تواند عنوان نمایشی دکمه رو بر می گرداند، شما مقدار $buttonName رو قبل از فراخوانی اش
مشخص کنید تا بعد از فراخوانی اش مقدار $buttonText را تنظیم کند :
کد:
buttonName$ = 'MyButton1'
RunScript("GetButtonText")

SetButtonText می تواند عنوان نمایشی یک دکمه را تغییر دهد، شما مقدار $buttonName و $buttonName را
قبل از فراخوانی اش مشخص کنید :
کد:
buttonName$ = 'MyButton1'
buttonText$ = 'Sample'
RunScript("SetButtonText")

GetButtonState وضعیت دکمه (enabled / disabled) را بر می گرداند. شما مقدار $buttonName رو قبل از
فراخوانی اش مشخص کنید تا بعد از فراخوانی اش مقدار $buttonState را تنظیم کند :
کد:
buttonName$ = 'MyButton1'
RunScript("GetButtonState")

SetButtonState وضعیت دکمه (enabled / disabled) را تغییر می دهد. شما مقدار $buttonName و همچنین
$buttonState رو قبل از فراخوانی اش مشخص کنید :
کد:
buttonName$ = 'MyButton1'
buttonState$ = 'disabled'
RunScript("GetButtonState")

GetButtonPos موقعیت و طول و عرض دکمه را بر می گرداند. شما مقدار $buttonName رو قبل از
فراخوانی اش مشخص کنید تا بعد از فراخوانی اش مقدار buttonLeft و buttonTop و buttonWidth و buttonHeight
را تنظیم کند :
کد:
buttonName$ = 'MyButton1'
RunScript("GetButtonPos")

MoveButton موقعیت (x و y) دکمه را تغییر می دهد، بدون آنکه در ابعاد دکمه تغییری ایجاد کند. شما مقدار
$buttonName و buttonLeft و buttonTop رو قبل از فراخوانی اش مشخص کنید :
کد:
buttonName$ = 'MyButton1'
buttonLeft = 20
buttonTop = 50
RunScript("MoveButton")

ResizeButton موقعیت و طول و عرض دکمه را تغییر می دهد. شما مقدار $buttonName و buttonLeft و buttonTop
و buttonWidth و buttonHeight رو قبل از فراخوانی اش مشخص کنید :
کد:
buttonName$ = 'MyButton1'
buttonLeft = 20
buttonTop = 50
buttonWidth = 100
buttonHeight = 30
RunScript("ResizeButton")

ShowButton همانند دستور Show برای خارج کردن یک دکمه از حالت پنهان بکار می رود. شما مقدار $buttonName
رو قبل از فراخوانی اش مشخص کنید :
کد:
buttonName$ = 'MyButton1'
RunScript("ShowButton")

HideButton همانند دستور Hide برای پنهان کردن یک دکمه بکار می رود. شما مقدار $buttonName رو قبل از
فراخوانی اش مشخص کنید :
کد:
buttonName$ = 'MyButton1'
RunScript("HideButton")

InvertButton همانند دستور Invert برای آشکار / پنهان کردن یک دکمه بکار می رود. شما مقدار $buttonName رو قبل از
فراخوانی اش مشخص کنید :
کد:
buttonName$ = 'MyButton1'
RunScript("InvertButton")

رخداد ButtonClick رو شما فراخوانی نمی کنید، بلکه داخلش اش هر کدی که خواستید بنویسید تا زمانی که روی
یک دکمه کلیک شد اجرا گردد. نام دکمه فشرده شده توسط $buttonName در دسترس شما است.

به بقیه رخداد ها یعنی ButtonDown و ButtonUp و ButtonEnter و ButtonLeave کاری ندارید،
مگر اینکه بدانید چه چیزی را تغییر می دهید. این رخداد ها بصورت خودکار فراخوانی می شوند.

CreateSegment برای ساختن تکه های 9 گانه گرافیکی دکمه فراخوانی می شود. شما اصولا کاری با آن ندارید.

متغیر buttonCount همواره تعداد دکمه های ساخته شده را نشان می دهد. به هیچ وجه مقدار اش را تغییر ندهید.
$buttonNames یک آرایه است که نام دکمه ها در آن نوشته شده، مثلا [2]$buttonNames نام دومین دکمه است.
به هیچ وجه مقادیر این آرایه را تغییر ندهید.
$buttonTexts یک آرایه است که عنوان نمایشی دکمه ها در آن نوشته شده، مثلا [2]$buttonTexts عنوان دومین
دکمه است. به هیچ وجه مقادیر این آرایه را بصورت دستی تغییر ندهید، فقط از SetButtonText استفاده کنید.


نکات قابل توجه :
  • اگر طول عنوان یک دکمه از ابعاد دکمه بزرگتر باشد، بصورت خودکار طول نوشته عنوان کاهش پیدا می کند.
  • هر دکمه از 9 جزء گرافیکی HotSpot و یک Text تشکیل شده، یعنی جمعا هر دکمه 10 تیکه کنار هم است.
  • برای ترکیب کردن این آموزش با آموزش های بعدی عجله نکنید، در آینده کد مجموعه این آموزش ها بصورت مناسبی با هم ادغام خواهند شد.
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا