تغییر رنگ چک باکس CheckBox حالت های عادی، تیک خورده و غیرفعال

با سلام و سپاس خدمت کاربران سایت یاهو ۹۸ YAHOO

امروز براتون قطعه کدی کاربردی مهیا کرده ایم که امیدوارم مفید واقع گردد

Continue reading “تغییر رنگ چک باکس CheckBox حالت های عادی، تیک خورده و غیرفعال”

گرد کردن عکس [B4X]

سلام به همه

همونطور که از عنوان پیداست، با کد زیر میتونید عکس ها رو گرد کنید. کتابخونه های بسیار زیادی برای اینکار رپ شده که تو همین سایت هم موجود هست. اما چون کد زیر، در B4A و هم در B4J و هم در B4i قابل استفاده هست، اینجا میذارمش.(بهمین خاطر عنوان تاپیک رو گذاشتم B4X)

Continue reading “گرد کردن عکس [B4X]”

استفاده از آیکن های پیشفرض اندروید

با درود به کاربران عزیز 

 

امروز براتون میخواهیم آیکن های پیش فرض اندروید رو آموزش بدیم که به چه صورت میتونید از اون ها در برنامه استفاده به کنید .

برای این کار لازمه به صورت زیر عمل کنید :

 

Continue reading “استفاده از آیکن های پیشفرض اندروید”

کد تنظیم خودکار width و lable height با توجه به متن

سلام و سپاس خدمت عزیران

با کلی زیر رو کردن اینترنت و سایت مرجع بالاخره روشی پیدا کردم که میتونید طول و عرض lable رو با توجه به متن تنظیم کنید و مقدار اون رو بگیرید .

 

توی سایت ها بحث شده بود که منفی ۲ بزاریم تنظیم میشه ولی یه مشکل جدی این بود که مثلا اگه شما مقدار طول و عرض رو می خواستید در هر صورت -۲ رو بر می گردوند که با کد زیر مشکل حل شده.

 

(با کلیک روی دکمه متن تنظیم میشه و طول عرض بدست میاد.)

Continue reading “کد تنظیم خودکار width و lable height با توجه به متن”

انتخاب تم مجزا برای هر اکتیویتی برای بیسیک فور اندروید

با سلام و ارادت به کاربران یاهو۹۸

 

 

با استفاده از کد زیر میتوانید برای هر اکتیویتی یک تم مجزا مشخص کنید ! کافیست کد زیر را به Manifest اضافه کنید :

 

Continue reading “انتخاب تم مجزا برای هر اکتیویتی برای بیسیک فور اندروید”

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

با سپاس خدمت کاربران عزیز 

 

در این قسمت میخوام اینتنت اینستاگرام را به شما معرفی کنیم.

 

که با استفاده از این اینتنت میتوانید یک صفحه اینستاگرام را به صورت مستقیم نمایش بدید.

 

مثل همیشه کد ها را در بین Try و  Catch قرار دادیم تا درصورتی که برنامه اینستاگرام بر روی گوشی مربوطه نصب نشده باشه برنامه ارور نده و ناقص نمونه :

Continue reading “بازکردن لینک های اینستاگرام در برنامه برای بیسیک فور اندروید”

ارسال پیامک در برنامه

✅با سلام و ارادت خدمت کاربران یاهوو ۹۸✅

 

 

امروز میخوام روش ارسال SMS در بیسیک۴اندروید را به شما معرفی کنیم !

 

برای این کار کافیه فقط  کتابخانه Phone را در پروژه خودتون فعال کنید .

Continue reading “ارسال پیامک در برنامه”

خروج از برنامه با زدن دو بار کلید بازگشت

✅با سلام و ارادت خدمت کاربران یاهو۹۸

 

خوب امروز میخوام بهتون آموزش خروج از برنامه با دوبار کلیک کردن کلید خروج بره بیرون

 

که وقتی کاربر یک بار روی دکمه خروج میزنه بهش یه پیام نشون داده میشه مثال:👇👇

Continue reading “خروج از برنامه با زدن دو بار کلید بازگشت”

سورس پالت رنگ متریال

با سلام و سپاس

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

این سورس با کتابخانه قدرتمند ریسایکلر نوشته شده هست که بثورت متریال می باشد .

Continue reading “سورس پالت رنگ متریال”

قابلیتهای جدید B4A ورژن ۷٫X در بیسیک فور اندروید

نسخه جدید بیسیک فور اندروید اون هم با استفاده از نسخه ۸ جاوا و قابلیت های کاربردی فراوان ارائه شده است.

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

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

Sleep

Sleep قابلیت ساده و کاربردی در برنامه نویسی با ورژن جدید بیسیک خواهد بود.

کاربرد این دستور توقف اجرای کدها در مدت زمان دلخواه می باشد

مثال اول

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

Sub Activity_Create(FirstTime As Boolean)
	Activity.LoadLayout("Layout1")
	Sleep(3000)
	StartActivity("Menu")
	Activity.Finish
End Sub

در کد بالا بعد از سه ثانیه یا همون ۳۰۰۰ میلی ثانیه از زمان نمایش اسپلش اکتیویتی دوم نمایش داده میشود.

مثال دوم

اجرای رویداد بعد از زمان خاصی همیشه از سوالات دوستان بوده. مثلا با کلیک شدن یک دکمه افکت صوتی اجرا و با پایان اون دستورات مربوط به کلیک شدن اجرا بشوند.افکت های مختلف و زیبایی مثلا اجرای انیمیشن ها. و افکت های تصویری و صوتی فراوانی میشه براحتی به برنامه خودتان بسادگی اضافه کنید.

takeoff-gif.54879

کد زیر کد رویداد این کلیک ها می باشد.

Sub btn_Action
   Dim b As Button = Sender
   For i = 10 To 0 Step - 1
     b.Text = i
     Sleep(100)
   Next
   b.Text = "Takeoff!"
End Sub

نکته: همانگونه که در مثال های بالا مشاهده نمودید استفاده از Sleep در مواردی که یک یا چند مکث با تعداد مشخص و یا تعداد کم داشته باشید. کاربرد دارد و در غیر اینصورت استفاده از تایمر همانند قدیم مناسبتر می باشد.

 

قابلیت Wait For:


در این قابلیت ما می تونیم تمامی رویداد هارو در کنار کدی که می نویسیم داشته باشیم.یعنی دیگه نیازی نیست شما به صورت جداگانه برید رویداد مثلا JobDone  رو تعریف کنید.به وسیله WaitFor  هر جای ادیتور و در بلاک های مختلف می تونید رویداد هاتون رو صدا بزنید و کنترل کنید.

مزایای Wait For:

– نظم بهتر به کد نویسی

– جلوگیری از تداخل در رویداد ها ( بر فرض هندل راحت دو تا Job بدون اینکه برای هیچ کدوم تداخلی بوجود بیاد )

خب با مثال میریم جلو تا واستون قابل درک باشه.

مثال اولش رو واسه SQL  میزنیم، تا ببینیم به چ شکل عمل می کنه»

 – اضافه کردن رکورد به دیتابیس و خروجی که رویدادش به ما بر میگردونه:

For i = 1 To 1000
   sql.AddNonQueryToBatch("INSERT INTO table1 VALUES (?)", Array(Rnd(0, 100000)))
Next
Dim SenderFilter As Object = sql.ExecNonQueryBatch("SQL")
Wait For (SenderFilter) SQL_NonQueryComplete (Success As Boolean)
Log("NonQuery: " & Success)

نکته: ما از توابعی استفاده می کنیم که بعد از اجرای اونها رویدادی رخ بده ( توابعی که رویداد هایی برای آن ها تعریف شده )

حالا اینجا ما تابع AddNonQueryToBatch  رو داریم که می تونیم اطلاعات رو درج کنیم.اطلاعات رو به وسیله این تابع وارد و با اجرای تابع ExecNonQueryBatch اطلاعات درج در دیتابیس می شوند.برای اینکه از وضعیت درج اطلاعات با خبر شویم، رویدادی رو اختصاص دادند.این رویداد یک متغییر از نوع Boolean  داره که مشخص می کنه اطلاعات با موفقیت به دیتابیس وارد شده اند یا خیر.

به راحتی تونستیم به جای اینکه رویداد SQL_NonQueryComplete رو جدا تعریف کنیم، دقیقا بعد از کدی که واسش تعریف شده نوشتیم.دقیقا توی جاوا به همین شکل می تونید عمل کنید. می تونید رویداد رو هرجای کد تعریف کنید.

مثال از گرفتن اطلاعات از دیتابیس »

Dim SenderFilter As Object = sql.ExecQueryAsync("SQL", "SELECT * FROM table1", Null)
	Wait For (SenderFilter) SQL_QueryComplete (Success As Boolean, rs As ResultSet)
	If Success Then
		Do While rs.NextRow
			Log(rs.GetInt2(0))
		Loop
		rs.Close
	Else
		Log(LastException)
	End If

خب فک نکنم پیچیدگی یا ابهامی توی این کد باشه.کوئری رو به تابع میدید و بعدش میایید توی رویدادش اطلاعات رو دریافت می کنید.در صورتی که مشکلی نباشه.اینجا هندل کردن خطاها خیلی بهتر شده.یعنی کد اجرا میشه و متغییر Success بهمون این اجازه رو میده تا خطایی در برناممون رخ نده و کنترلی داشته باشه.در مورد ResultSet  هم بگم که جای نگرانی نداره و چیز جدیدی نیست، همون Cursor  هستش.مشتق شده از Cursor  هستش.( جزئی از شی گرایی هستش که هر شیی از یک شیی دیگه مشتق بشه تمامی وِِِیژگی ها و قابلیت های والدش رو به ارث میبره).

 

قابلیت Wait For:

مثالی از استفادش در OkHttpUtils2  »

Dim j As HttpJob
j.Initialize("", Me)
j.Download("https://www.google.com") 
Wait For (j) JobDone(j As HttpJob)
If j.Success Then
   Log(j.GetString)
End If
j.Release

ساده ترین مثال ممکن  لینک رو میدی بهش، رویداد رو در کنارش اضافه می کنی و نتیجه رو لاگ می کنید سخته واقعا ؟؟!!

 

مثال بعدی »

ub DownloadQuote
   Dim j As HttpJob
   j.Initialize("", Me) 'name is empty as it is no longer needed
   j.Download("http://quotesondesign.com/wp-json/posts?filter[orderby]=rand")
   Wait For (j) JobDone(j As HttpJob)
   If j.Success Then
     'The result is a json string. We parse it and log the fields.
     Dim jp As JSONParser
     jp.Initialize(j.GetString)
     Dim quotes As List = jp.NextArray
     For Each quot As Map In quotes
       Log("Title: " & quot.Get("title"))
       Log("Content: " & quot.Get("content"))
     Next
   End If
   j.Release
End Sub

خب اینم میاد یه سری پست رو به صورت جیسون میگیره و پردازش می کنه.عمل دانلود انجام میشه اگه موفقیت امیز بود مقادیرش رو میگیره و میریزه داخل شی جیسون.دیگه ادامش چیز جدیدی نداره.

استفاده از کد بالا هم فقط کافیه تابع DownloadQuote  رو یه جایی صدا بزنید.

 

مثال بعدی »

Sub DownloadTwoLinks
   Dim j As HttpJob
   j.Initialize("", Me) 'name is empty as it is no longer needed
   j.Download("https://www.google.com")
   Wait For (j) JobDone(j As HttpJob)
   If j.Success Then
     Log(j.GetString)
   End If
   j.Release
   'second request
   Dim j As HttpJob 'redim and initialize
   j.Initialize("", Me)
   j.Download("https://www.duckduckgo.com")
   Wait For (j) JobDone(j As HttpJob)
   If j.Success Then
     Log(j.GetString)
   End If
   j.Release
End Sub

خب اینجا هم دو تا لینک رو میدیم بهش تا دانلود کنه واسمون.هر جای کد واستون نا مفهوم بود، کد رو خودتون تست کنید و ببینید به چ شکل عمل می کنه.می تونید با Log  گذاشتن نحوه عملکردش رو ببینید.

 

مثال بعدی »


Sub Activity_Create(FirstTime As Boolean)
   DownloadMany(Array("http://www.google.com", "http://duckduckgo.com", "http://bing.com"))
End Sub

Sub DownloadMany (links As List)
   For Each link As String In links
     Dim j As HttpJob
     j.Initialize("", Me) 'name is empty as it is no longer needed
     j.Download(link)
     Wait For (j) JobDone(j As HttpJob)
     If j.Success Then
       Log("Current link: " & link)
       Log(j.GetString)
     End If
     j.Release
   Next
End Su

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

 

مثال بعدی »

Sub DownloadImage(Link As String, iv As ImageView)
   Dim j As HttpJob
   j.Initialize("", Me)
   j.Download(Link)
   Wait For (j) JobDone(j As HttpJob)
   If j.Success Then
     iv.Bitmap = j.GetBitmap
   End If
   j.Release
End Sub

 

دانلود عکس و قرار دادنش توی ایمیج ویو، نحوه استفادش:

 

Sub Activity_Create(FirstTime As Boolean)
   Activity.LoadLayout("1")
   DownloadImage("https://b4x-4c17.kxcdn.com/android/forum/data/avatars/m/0/1.jpg?1469350209", ImageView1)
   DownloadImage("https://b4x-4c17.kxcdn.com/images3/code.png", ImageView2)
End Sub

 

این نحوه ی استفاده از قابلیت Wait For  هستش تا واسه ی شما جا بیوفته.

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

پیروز باشید .

 

مدرس : آرتا و مهدی نژاد

ایجاد فاصله بین دو متن در بیسیک فور اندروید

با سلام و سپاس

 

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

 

ابتدا تیک کتابخانه  reflection بزنید و بعد ساب زیر رو اضافه کنید :

 

sub setLineSpace (lbl as label,meghdar as float)

  Dim r As Reflector
  r.Target = lbl
  r.RunMethod3("setLineSpacing",1, "java.lang.float", meghdar, "java.lang.float")

end sub

 




setLineSpace(lbl1,1.3)

 

جای اون ۱٫۳ میتونی از مقادیر دیگه استفاده کنید بنا به استفاده خودتون

سورس کد دیتابیس آنلاین ( ایجاد ویرایش و حذف ) بیسیک فور اندروید

با سلام خدمت کاربران گرامی وب سایت یاهو ۹۸ YAHOO

طی در خواست های مکرر دوستان بر آن شدم که :

Continue reading “سورس کد دیتابیس آنلاین ( ایجاد ویرایش و حذف ) بیسیک فور اندروید”