کار با EditText در بیسیک فور اندروید

با سپاس

 

یکی از دوستان فرمودند نحوه کار با EditText رو درون یک پست مختصر و مفید توضیح بدم که بنده هم خدمتتون عرض می کنم.

 

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

 

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

 

بعد از تو دیزاینر روی خود EditText1 راست کلیک میکنیم و گزینه آخر Generate رو انتخاب کرده و هر کدوم از گزینه ها که لازم هست رو کلیک میکنیم تا به پروژه امون اضافه بشه

 

 

بعد میام تو پروژه برای اینکه ما بتونیم وقتی فارسی نوشته شد متن مون بره سمت راست و انگلیسی شده بره سمت چپ چه کنیم ؟

 

برای این کار میایم از کتابخانه Recognize کمک میگیریم .

 

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

 

Sub Globals
	Private EditText1 As EditText
	Dim rec As Recognize
	
End Sub

Sub Activity_Create(FirstTime As Boolean)

	Activity.LoadLayout("l1")
	rec.Initialize
End Sub

الان ما در بالا اومدیم Recognize رو با نام rec فراخوانی کردیم .

 

حالا چطوری از rec برای کارمون کمک بگیریم ؟

 

در این موقع ما باید بیایم رویداد چنج تکست رو به پروژه امون اضافه کنیم به صورت زیر :

 

Sub EditText1_TextChanged (Old As String, New As String)
	If rec.checkFarsiCharecter(New) Then
		EditText1.Gravity=Gravity.RIGHT
	Else
		EditText1.Gravity=Gravity.LEFT
	End If
End Sub

 

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

 

چون کیبوردم فارسی نداشت پست کردم براتون که متوجه بشید .

 

salam.gif (548×840)

 

خوب بخش بعدی مبخواهیم برای ادیت تکست شرط بزاریم که مثلا عدد اولمون ۰ باشه عدد دوم ۹ و غیره

 

یک مثال براتون میارم

 

If EditText1.Text.SubString2(0,1)=0 Then
		Else
			EditText1.Text=""
			Msgbox("ابتدای رقم باید ۰ باشد","خطا")
		End If
    
		If EditText1.Text.SubString2(1,2)=9 Then
		Else
			EditText1.Text="0"
			Msgbox("دومین رقم باید ۹ باشد","خطا")
		End If

ما الان با دستور ساپ استرینگ اومدم و شرط گذاشتم که رقم اول باید ۰ باشه در غیر این صورت یه مسیج باکس میده .

 

بعد از ۰ باید رقم دوم هم ۹ باشه که در غیر این صورت بازم یک مسیج باکس میده و کار های دیگه که میتونید بهش اضافه کنید .

 

 

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

 

مثلا الان من میگم ۱۱ کاراکتر با کد زیر بیشتر قبول نکنه :

 

	If New.Length > 11 Then
		EditText1.Text = Old
		EditText1.SelectionStart = Old.Length
	End If

 

 

دستور بعدی کار با رنگ متن و اندازه و هینت ( hint ) و رنگ هینت می باشید.

 

	EditText1.TextSize=20
	EditText1.TextColor=Colors.Yellow
	EditText1.HintColor=Colors.White

الان خط اول اومدیم سایز رو دادیم

 

خط دوم اومدیم رنگ متن نوشتاری توسط کاربر رو دادیم

 

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

 

EditText1.Hint="yahoo98"

 

یه دستور دیگری که میتونیم برای ادیت تکست بنویسیم درست وارد کردن ایمیل کاربر هست که متوجه درست یا اشتباه بودنش رو متوجه بشیم :

 

اگه ما یه edit text داشته باشیم و بخوایم بدونیم که چطوری به کاربر بگیم که اگه ایمیل اشتباه وارد کرد

مثلا صحیح به صورت dashesi@gmail.com

و نا صحیح dashesi@gmail

یا به هر صورتی که ظاهر ادرس ایمیل رو نداشته باشه به صورت زیر می تونیم کد بنویسیم

 

Sub Validate_Email(EmailAddress As String) As Boolean

    Dim MatchEmail As Matcher = Regex.Matcher("^(?i)[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])$", EmailAddress)


    If MatchEmail.Find = True Then

        'Log(MatchEmail.Match)

        Return True

    Else


        Return False

    End If

End Sub

 

کد بالا یه ساب کد هست

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

 

Sub button1_Click

    strEmail = txtEmail.Text.Trim


    If Validate_Email(strEmail) = False Then

        Msgbox("فرمت ایمیل صحیح وارد نشده است", "خطا")

        Return

    End If

 

 

و اما دستور بعدی :

دستور بعدی تشخیص زبان کیبرد کیبورد هست که ما میتونیم بدون هیچ کتابخانه ای با کد های اسکی به صورت زیر امجامش بدیم :

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

A-Z برابر ۶۵-۹۰ هست

a-z برابر ۹۷-۱۲۲ هست

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

 

Dim EditText1 As EditText
Dim st As Char
Dim t As Int
st=EditText1.Text.SubString2(0,1)
t=Asc(st)
If (t>=65 AND t<=90 ) OR (t>=95 AND t<=122) Then
Msgbox("English","")
Else
Msgbox("فارسی","")
End If

 

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

 

if EditText1.text="" or EditText2.text="" then

else

endif

 

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

 

(Sub setCursorVisible(edt As EditText, Visible As Boolean
  Dim jo = edt As JavaObject
  ((jo.RunMethod("setCursorVisible", Array As Object(Visible
End Sub

 

برای نمایش دادن :

 

(setCursorVisible(editText1 , True

 

برای نمایش ندادن :

 

(setCursorVisible(editText1 , false

 

امیدوارم مفید واقع گردد خدمت شما عزیزان

 

ارادتمند شما سید اسماعیل

دیدگاهتان را بنویسید