آموزش B4A – برنامه دوم

در برنامه اول ما یک برنامه محاسباتی ساده نوشتیم حال می خواهیم همان برنامه را کمی بهبود بدهیم. در برنامه اول برای وارد کردن اعداد باید از کیبورد استفاده می کردیم اما در این برنامه می خواهیم با استفاده از کیبوردی که خودمان می سازیم استفاده کنیم.

ابتدا edtResult را انتخاب کرده و آن را حذف می کنیم و به جای آن از یک label استفاده می کنیم. نام label را lblResult می گذاریم و text آن را خالی گذاشته و ویژگی corner radius را برابر ۵، color را برابر white و مقدار Alpha را برابر ۲۵۵ قرار می دهیم. حال باید panel مربوط به کیبوردمان را ایجاد کنیم. از منوی add view گزینه panel را انتخاب می کنیم. نام آن را pnlKeyboard و color را برابر ControlDarkDark قرار می دهیم. حال باید دکمه OK را وارد panel کیبورد قرار بدهیم که برای این کار دکمه را انتخاب کرده و ویژگی parent آن را برابر pnlKeyboard قرار می دهیم.

حال باید دکمه های کیبورد را اضافه کنیم که از منوی add view گزینه button را انتخاب می کنیم. مقادیر ویژگی های آن را مطابق شکل های زیر تغییر می دهیم:

Capture11

Capture12

حال از دکمه ای که ساختیم ۹تا کپی می گیریم که برای این کار از منوی Tools گزینه Duplicate را انتخاب می کنیم و نام دکمه ها را به btn1, btn2 و غیره تغییر می دهیم. فقط دقت داشته باشید که Event Name همه دکمه ها برابر btnEvent باشد. دکمه backspace هم به پنل اضافه می کنیم و تغییرات زیر را برای دکمه BS و OK اعمال می کنیم:

Capture13

ویژگی color مربوط به پنل را به black تغییر دهید. شکل نهایی layout شما باید شبیه شکل زیر شود:

Capture14

حال باید در کد تغییراتی را انجام دهیم. ابتدا باید edtResult را به lblResult تغییر دهیم و همینطور نوع آن را از EditText به Label تغییر می دهیم. event name مربوط به دکمه ها را btnEvent گذاشتیم حال باید رویداد مربوط به کلیک آن را بنویسیم. ابتدا باید بدانیم که کدام دکمه کلیک شده است پس با استفاده از شی sender می توانیم به ویژگی دکمه ای که فشرده شده است دسترسی داشته باشیم و سپس با استفاده از دستور select مقدار tag دکمه را می خوانیم اگر BS بود باید متن را پاک کند و اگر هم عدد بود باید در lblResult متن روی دکمه را نمایش دهد. پس کد مربوط به رویداد کلیک btnEvent به صورت زیر خواهد شد:

Sub btnEvent_Click

    Dim btnSender As Button

    btnSender=Sender

    Select btnSender.Tag

         Case “BS”

                 If lblResult.Text.Length>0 Then

                      lblResult.Text=lblResult.Text.SubString2(0,lblResult.Text.Length-1)

                 End If

        Case Else

                 lblResult.Text=lblResult.Text & btnSender.Text

         End Select

End Sub

علامت & نشانه ادغام رشته است. حال برای بهتر کردن شکل و ظاهر برنامه می توانیم رنگ lblComments را تغییر دهیم به عنوان مثال رنگ اولیه آن را زرد کنیم و بعد براساس نتیجه رنگ آن را تغییر دهیم اگر جواب درست بود رنگ آن را سبز و اگر نادرست بود رنگ آن را قرمز می کنیم که این کارا رو می توانید در متد CheckResult انجام دهید.

حال باید کاری کنیم زمانی که lblResult خالی است کاربر نتواند دکمه ۰ را کلیک کند پس در متد CreateRandomNum ویژگی visible دکمه را False میکنیم و در متد کلیک مربوط به btnEvent چند خط کد زیر را اضافه می کنیم:

If lblResult.Text.Length=0 Then

btn0.Visible=False    

Else

btn0.Visible=True    

End If

حال برنامه را اجرا کنید و شکل برنامه در نهایت باید شبیه تصویر زیر باشد.

Capture16

به همین راحتی دومین برنامه اندرویدی هم نوشته شد حال نوبت به یک سری توضیحات می رسد.

اگر در قسمت بالای IDE مربوط به B4A مشاهده کنید یک لیست کشویی از Debug را خواهید دید که ۴ آیتم در داخل آن قرار دارد:

  1. Debug (legacy)
  2. Debug (rapid)
  3. Release
  4. Realease (obfuscated)

اگر مد Debug را بر روی گزینه اول یعنی Debug (legacy) بگذارید، کد کامپایل شده شامل کد debug شده هم هست یعنی چی؟ debugging code به IDE این اجازه را می دهد که به برنامه وصل شده و در طول اجرای برنامه کدها را بررسی می کند. زمانی که برنامه اجرا می شود، تا ۱۰ ثانیه منتظر می ماند تا IDE به برنامه وصل شود. معمولا IDE فورا وصل می شود و دیگر نیازی به ۱۰ ثانیه صبر کردن نیست. بنابراین اگر شما برنامه را از روی دستگاه موبایلتان به صورت دستی اجرا کنید می توانید منتظر ماندن آن را مشاهده کنید.

اگر مد Debug بر روی این گزینه باشد فایل apk ساخته شده با پسوند Debug_ ذخیره خواهد شد. به این نکته توجه کنید که اگر می خواهید فایل apk را بر روی دستگاه موبایل نصب کنید باید مد آن را بر روی release یا release (obfuscated) بگذارید چون در داخل apk شما کدهای Debug شده هم وجود دارد که همین باعث یک سربار قابل توجهی می شود. وقتی مد Debug بر روی Debug (legacy) باشد در پایین IDE یک پنجره با عنوان debugger module باز خواهد شد.

نکاتی که در کار کردن با این مد debug باید در نظر داشت:

  1. breakpoint برای این متدها کار نخواهد کرد: Globals, Process_Globals, Activity_Pause
  2. breakpointی که بعد از فراخوانی StartService قرار داشته باشد نادیده گرفته خواهد شد. breakpointی که در Service_Start و Service_Create قرار داشته باشد برنامه را برای مدتی مثلا ۱۲ ثانیه متوقف خواهد کرد و این باعث می شود که سیستم عامل نتواند سرویس ها را تخریب یا kill کند.
  3. رویدادهایی که باید بعد از pause شدن برنامه اجرا شوند، اجرا خواهند شد. breakpoint ها در رویدادها نادیده گرفته خواهد شد البته فقط زمانی که برنامه pause است.
  4. داده هایی که از سمت دستگاه برای IDE ارسال می شوند باید حجم محدودی داشته باشند.
  5. زمانی که debugger بر روی این مد باشد، IDE فقط خواندنی خواهد شد و کاربر هیچ گونه تغییری در متن برنامه نمی تواند اعمال کند.

مد Debug (rapid) از نسخه ۳ به این IDE اضافه شد. debug rapid یک مد سطح بالا و بسیار پیچیده است که یک سری ویژگی هایی دارد که در هیچ کدام از ابزارهای توسعه اندروید نمی توانید پیدا کنید. استفاده از این مد شبیه مد قبلی است اما یک سری مزایایی دارد:

  1. کامپایل و نصب بسیار سریع که معمولا در کمتر از یک یا دو ثانیه این کار را انجام می دهد.
  2. زمانی که برنامه در حال اجرا می باشد شما می توانید کد را تغییر داده و آن را ذخیره کنید و تغییرات را در دستگاه موبایل خود مشاهده کنید. حتی می توانید متدی را اضافه یا متدی را تغییر دهید.
  3. داشتن ویژگی Watch Expression
  4.  وجود پنجره ای قدرتمند برای مشاهده وضعیت متغیرها

اما در کنار این مزایا یک سری محدودیت هایی هم وجود دارد:

  1. چون سرعت debug کردن آن بسیار سریع است به خاطر همین در بعضی مواقع به درستی debug نمی کند. مثلا برای بازی های realtime یا کارهای فشرده CPU، این debugger قابل استفاده نیست و بهتر است از legacy استفاده کنید.
  2. با اینکه در زمان اجرا قابل ویرایش است اما نمی توان متغیرهای global را حذف یا اضافه کرد.
  3. برخلاف legacy این Debugger نمی تواند بدون وصل شدن IDE کار کند. به مدت ۱۰ ثانیه صبر می کند تا IDE وصل شود و سپس خارج می شود.

در قسمت بعد در مورد چگونگی کار کردن این دو debugger توضیح خواهم داد و همچنین یک مثالی را با این دو مد کار خواهیم کرد.

دانلود سورس برنامه

مشترک خبرنامه شوید

  • RSS
  • Delicious
  • Digg
  • Facebook
  • Twitter
  • Linkedin
  • Youtube

نقش مدیر تضمین کیفیت

نقش مدیر تضمین کیفیت در چابک چیست؟ آیا ما واقعا ...

چگونه وارد کار تست ن

مثل همه ی کارها، کار تست نرم افزار و انتخاب ...

ابزارهای مفید برای ت

امروزه افراد زیادی هستند که از موبایل خود برای وبگردی ...

BDD Best Practice

معرفی BDD BDD یا توسعه رفتار محور یک متدولوژی است برای ...

Agile Test Strategy

در محیط چابک یا agile، جایی که ما روی اسپرینت ...