لیمیت به زبان ساده

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

 

امروز براتون یه آموزش کاربردی در زمینه لیمیت دادن به رکورد ها در بیسیک فور اندروید و php آماده کرده ایم .

 

Continue reading “لیمیت به زبان ساده”

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

 

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

 

امروز براتون آموزش تصویری و به زبان فارسی  تهیه کرده ایم که :

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

تکه کد Replace جداسازی + ذخیره در TXT

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

 

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

 

با این تکه کد شما میتونید تمامی مواردی که در یک خط نوشته شده رو  جوری که میخواهید جداسازی کنید.

Continue reading “تکه کد Replace جداسازی + ذخیره در TXT”

لاگین با اکانت گوگل در بیسیک ۴ اندروید

با سلام و سپاس

 

دید تا حالا تو برنامه های متعددی به جای ثبت نام با کانت های گوگل و فیسبوک و غیره لاگین میشن ؟

 

حتما خیلی براتون جالب بوده ؟

 

 

امروز میخواهیم این روش رو به شما به راحت ترین شیوه بیان کنیم برای این کار باید طبق زیر عمل کنید :

 

 #Region  Project Attributes 
	#ApplicationLabel: B4A Example
	#VersionCode: 1
	#VersionName: 
	'SupportedOrientations possible values: unspecified, landscape or portrait.
	#SupportedOrientations: unspecified
	#CanInstallToExternalStorage: False
#End Region

#Region  Activity Attributes 
	#FullScreen: False
	#IncludeTitle: True
#End Region
#Extends: android.support.v7.app.AppCompatActivity
Sub Process_Globals
	'These global variables will be declared once when the application starts.
	'These variables can be accessed from all modules.

End Sub

Sub Globals
	'These global variables will be redeclared each time the activity is created.
	'These variables can only be accessed from this module.
	Dim id As String = ""
	Dim sign As SignGoogle
End Sub

Sub Activity_Create(FirstTime As Boolean)
	'Do not forget to load the layout file created with the visual designer. For example:
	'Activity.LoadLayout("Layout1")


		sign.Initialize(id,Me)
		Dim ls1 As List
		ls1 = sign.GetAccountList
	
		Dim Builder As MaterialDialogBuilder
		Builder.Initialize("GoogleList")
		Dim si As MaterialSimpleListItem
		Builder.Title("یک حساب انتخاب کنید")
	
		If ls1.Size < 1 Then
		
		Else
			For i = 0 To ls1.Size -1
				Dim cs As CSBuilder
				cs.Initialize.Size(13).Append(ls1.Get(i)).PopAll
				si.Initialize(Null, cs)
				si.BackgroundColor = Colors.White
				Builder.AddSimpleItem(si)
			Next
	
			Builder.Show
		End If

End Sub
Sub GoogleList_SimpleItemSelected (Dialog As MaterialDialog, Position As Int, Item As MaterialSimpleListItem)

	ToastMessageShow(Item.Content, False)
	sign.SelectAccount(Item.Content)
	sign.RequestSign("UserLogin")
	Dialog.Dismiss
End Sub
Sub UserLogin(Data As Map,Login As Boolean)


	Log(Data.Get("id"))
	Log(Data.Get("email"))
	Log(Data.Get("name"))
	Log(Data.Get("family_name"))
	Log(Data.Get("picture"))

End Sub
Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

و یک کclass هم دارین به این صورت :

Private Sub Class_Globals
	Private clientId As String : clientId = "" 'enter client id here
	'Private clientSecret As String : clientSecret = "" 'client secret here
	Private AccessToken As String
	Private userInfoLink As String : userInfoLink = "https://www.googleapis.com/oauth2/v1/userinfo"
	Private m_GoogleAccountManager As clsB_GoogleAccountManager
	Private modules As Object
	Private evt As String
	Private l_GoogleAccounts() As Object
End Sub

'Step 1
Public Sub Initialize(sClientID As String,module As Object)
	
	clientId		= sClientID
	m_GoogleAccountManager.Initialize(0)
	modules			= module
	
End Sub

'Step 3
Sub SelectAccount(AccountName As String)
	
	For Each l_joAccount As JavaObject In l_GoogleAccounts
		If l_joAccount.GetField ("name") = AccountName Then
			Exit
		End If
	Next
	
	Dim l_sScopes As String = "email profile"
	Dim l_sAuthTokenType As String = $"oauth2:${l_sScopes}"$
	Dim l_sAccessToken As String = m_GoogleAccountManager.getAuthToken_foreground(l_joAccount,l_sAuthTokenType)
	
	AccessToken = l_sAccessToken
	
End Sub

'Step 2
Sub GetAccountList As List
	
	l_GoogleAccounts = m_GoogleAccountManager.getAccountsByType("com.google")
	
	If l_GoogleAccounts.Length = 0 Then Return Null
	
	Dim l_sAccountNames As List : l_sAccountNames.Initialize
	
	For Each l_joAccount As JavaObject In l_GoogleAccounts
		Dim l_sAccountName As String = l_joAccount.GetField ("name")
		l_sAccountNames.Add(l_sAccountName)
	Next
	
	Return l_sAccountNames
	
End Sub

'Step 4
Sub RequestSign(Event As String)
	
	evt = Event
	

	Dim dl As PersianFastNetwork
	dl.initialize("dl").BuildGetQuery(userInfoLink,"getUserDetails") _
	.addParametrs("access_token",AccessToken).executRequesAsString
	ProgressDialogShow2("درحال دریافت اطلاعات...",False)


	
End Sub
Sub dl_onGetStringOkListener(Result As String , Tag As String )
	ProgressDialogHide
	If Result <> Null Then
		Select Tag
			
			Case "GetAccessToken"
				
				Dim JSON As JSONParser
				Dim map1 As Map
				JSON.Initialize(Result)
				map1=JSON.NextObject
				AccessToken=map1.Get("access_token")
				CallSub3(modules,evt,map1,False)
					
			Case "getUserDetails"
				Dim JSON As JSONParser
				Dim map1 As Map
				JSON.Initialize(Result)
				map1 = JSON.NextObject
				CallSub3(modules,evt,map1,True)
			
		End Select
	End If
End Sub

خوب حالا من توضیحات لازم رو میدم

شما یه پروژه باز میکنید و کد های لولی رو داخل اکتیویتی main پست میکنید .

بعد یه class به اسم SignGoogle میسازد و کد های class رو داخلش پست میکنید .

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

 

AddPermission(android.permission.GET_ACCOUNTS)
AddPermission(android.permission.USE_CREDENTIALS)
AddPermission(android.permission.INTERNET)

 

اول از همه ما باید وارد سایت گوگل بشیم از آدرس زیر که راحترین راه می باشد برای ساخت آیدی یا همان api keys

 

http://console.developers.google.com

 

و بعد از ساخت api key مربوطه اون رو در اکتیویتی main در قسمت id میزاریم و باهاش به گوشی لاگین میشیم که توش برنامه گوگل سرویس و پلی نصب باشه

 

مدرس : مجید گودرزی

 

این آموزش از قبل تو کانال بود فقط چون دیدیم ….. هایی کپی کدها رو تو سایت های خوشون منتشر دادن به اسم خودشون بنا به درخواست نویسنده آقای گودرزی دوباره داخل سایت گذاشته شد که ……………………. موفق باشید.

 

سورس نمایش + جستجو در دیتابیس آنلاین ( رایگان )

با سلام خسته نباشید

من یه قطعه سورس دیتابیس انلاین با محیط پر قدرت بیسیک ۴ اندروید برای شما تهیه کردم که در هیچ جا نمیتوانی اموزششو پیدا کنید .

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

قابلیت ها

  1. کدهای کوتاه و مرتب و قابل فهم
  2. جستجو
  3. تفکیک
  4. رفرش
  5. برعکس خواندن ایتمها مثلا از ۱۰ به ۰
  6. استفاده از اسکرول ویو
  7. فعال بودن کلیکی ایتم ها
  8.  خواندن ننوشته های !@#﷼٪^÷×)(ـ+\{} و انگلیسی و فارسی
  9. دیالوگ برای رفرش یا اجرای برنامه

و غیره …

 

as1.png (1920×1080)

 

در اینجا بگم من از هاست استفاده نکردم از شبیه ساز زمپ استفاده کردم و اگر هم از محیطه زمپ یا هاست اشنایی نداری میتونید از اینجا که من دادم یا یه سرج کوتاه میتونید اموزش هایی زیادی در این مورد پیدا کنید.

 

دانلود سورس + php

 

کتابخانه  Httputlis2 و JSON هم تیک بزنید .

 

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

حل کردن صفحه سفید اول اپ در بیسیک فور اندروید B4A

با سلام وسپاس 

 

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

Continue reading “حل کردن صفحه سفید اول اپ در بیسیک فور اندروید B4A”

قابلیتهای جدید 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  هستش تا واسه ی شما جا بیوفته.

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

پیروز باشید .

 

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

سورس کلانیت و ادمین برنامه دوست من , کتابخانه , php , sql

با سلام و سپاس

 

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

 

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

این سورس میاد از مخاطب مشخصات شخصی رو میگیره و در برنامه نمایش میده برای دوست یابی

Continue reading “سورس کلانیت و ادمین برنامه دوست من , کتابخانه , php , sql”

آموزش نمایش تعداد بازدید در بیسیک فور اندروید ( به صورت آنلاین * دیتابیس آنلاین )

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

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

Continue reading “آموزش نمایش تعداد بازدید در بیسیک فور اندروید ( به صورت آنلاین * دیتابیس آنلاین )”

بسته نشدن سرویس در حالات مختلف Service

سلام.

با این کارها میتونی کاری کنی که سرویس بسته نشه.

 

ماندگار کردن سرویس از طریق اضافه کردن این کد توی #Region  Service Attributes :

 

#StartCommandReturnValue: android.app.Service.START_STICKY

 

استارت کردن سرویس به صورت خودکار بعد از روشن شدن گوشی که باید  #StartAtBoot : رو برابر با true قرار بدی.

 

#StartAtBoot: true

 

اجرا کردن سرویس هر ۵دقیقه یک بار با اضافه کردن این کد به service_start به این صورت:

 

Sub Service_Start (StartingIntent As Intent)

StartServiceAt("", DateTime.Now + 60000*5,True)

End Sub

 

و اجرا کردن بلافاصله ی سرویس بعد از بسته شدن سرویس ، در رویداد service_destory :

 

Sub Service_Destroy

StartService("")

End Sub

 

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

 

سورس پاپ آپ کردن عکس با کلیک بروی آن b4a

با سپاس

 

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

 

دانلود سورس

 

دانلود نمونه APK

 

راست چین کردن تولبار در appcompat

با درود

 

در این قسمت از سایت میپردازیم به راست چین کردن اشیاء که میخواهیم قرار بدیم در تولبار 

 

والا نمیدونم منیع امیر بود خمیر بود چی بود

 

دانلود سورس

 

#Region  Project Attributes 
	#ApplicationLabel: B4A Example
	#VersionCode: 1
	#VersionName: 
	'SupportedOrientations possible values: unspecified, landscape or portrait.
	#SupportedOrientations: unspecified
	#CanInstallToExternalStorage: False
	#Extends: android.support.v7.app.AppCompatActivity
#End Region

#Region  Activity Attributes 
	#FullScreen: False
	#IncludeTitle: True
#End Region

Sub Process_Globals
	'These global variables will be declared once when the application starts.
	'These variables can be accessed from all modules.

End Sub

Sub Globals
	'These global variables will be redeclared each time the activity is created.
	'These variables can only be accessed from this module.

	Private ACToolBarLight1 As ACToolBarLight
	Dim lbl As Label
End Sub

Sub Activity_Create(FirstTime As Boolean)
	'Do not forget to load the layout file created with the visual designer. For example:
	Activity.LoadLayout("Main")
     lbl.Initialize("lbl")
	 ACToolBarLight1.AddView(lbl,ACToolBarLight1.Width,ACToolBarLight1.Height,Gravity.RIGHT)
	 ACToolBarLight1.Elevation = 4dip
	 lbl.Text = "  خانه"
	 lbl.TextColor = Colors.White
	 lbl.Gravity = Gravity.FILL
	 lbl.Typeface = Typeface.LoadFromAssets("irs.ttf")
	 lbl.TextSize = 20
	
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

 

سورس کد نحوه کار با check box + timer

با سپاس و درود 

 

در این ساعت از ساعت می پردازیم به کار با  check box + timer 

 

سورس کد پیوست شد .

 

دانلود نمونه APK

 

دانلود سورس

 

کامل ترین سورس متریال در سطح نت با ۱/۴ قیمت

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

Continue reading “کامل ترین سورس متریال در سطح نت با ۱/۴ قیمت”

شمارش معکوس همیشه فعال در b4a

سلامی دوباره خدمت کاربران گل سایت Yahoo98

 

باز هم با یه کتابخانه و آموزش دیگه که توسط اعضای سایت Yahoo98 ساخته شده در خدمت شما هستیم…

 

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

 

این شمارش ممکن است روز ها باشد و یا ساعت ها و دقیقه ها و در این آموزش مدت زمان رو ۳ دقیقه تنظیم شده است.

 

دانلود سورس