mohammad soliemani 0 ارسال شده در 27 آبان، ۱۴۰۰ اشتراک گذاری ارسال شده در 27 آبان، ۱۴۰۰ سلام خدمت دوستان عزیز چجوری می توانم در ادیت تکست پشت هر خط عدد بگذارم؟ مثلا اینجوری👇 سیب زمینی گوجه پیاز و... مثل قابلیتی که توی همین سایت هست لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
DexterFstone 396 ارسال شده در 27 آبان، ۱۴۰۰ اشتراک گذاری ارسال شده در 27 آبان، ۱۴۰۰ در ۱۴۰۰/۸/۲۷ در ۰۹:۵۸، mohammad soliemani گفته است: سلام خدمت دوستان عزیز چجوری می توانم در ادیت تکست پشت هر خط عدد بگذارم؟ مثلا اینجوری👇 سیب زمینی گوجه پیاز و... مثل قابلیتی که توی همین سایت هست سلام Global: Dim Index as int = 0 Sub Insert (Text as String, EditText as EditText) Index = Index + 1 EditText.text = Index & ". " & Text & CRLF End Sub Example: Insert("Mooz",et1) Insert("havij",et1) Insert("kivi",et1) output et1 text: 1. Mooz 2. havij 3. kivi لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
امیرحسین قاسمی 610 ارسال شده در 27 آبان، ۱۴۰۰ اشتراک گذاری ارسال شده در 27 آبان، ۱۴۰۰ سلام، احتمالا قابلیت مورد نظر شما، چنین چیزی هست: برای پیاده سازی قابلیت بالا باید به این شکل عمل کنیم: ابتدا در دیزاینر یک ویو از نوع ادیت تکست می سازیم و طول و عرض آن را تنظیم می کنیم. (در برنامه بالا طول و عرض ادیت تکست که نام آن EditText1 است، به شکل زیر در دیزاینر تنظیم شده است) : EditText1.SetLeftAndRight(0,100%x) EditText1.SetTopAndBottom(0,100%y) تیک دوتا کتابخونه JavaObject و EditTextPlus رو می زنیم. دانلود کتابخونه EditTextPlus حال یک سری متغیر نیاز داریم که در سرتاسر اکتویتی کار کند: Sub Globals Private EditText1 As EditText Dim etplus As EditTextPlus Dim mylines As Int=0 Dim temp As String Dim total As String="" Dim EnterClicked As Boolean=False End Sub بخش اکتویتی کریت: به صورت پیشفرض هنگامی که کیبورد بالا می آید دکمه آن "انجام شد" است و ما برای اینکه بتوانیم خطوط جدیدی در ادیت تکست ایجاد کنیم (توی ادیت تکست اینتر بزنیم) باید یک سری کد در اکتویتی کریت قرار دهیم. و در خط آخر نیز گفته ایم که متن ها در کل ادیت تکست پخش شوند و ادیت تکست فقط یک خط نباشد. Sub Activity_Create(FirstTime As Boolean) Activity.LoadLayout("Layout") Dim JO As JavaObject = EditText1 JO.RunMethod("setImeOptions",Array As Object(KeyCodes.KEYCODE_ENTER)) Dim O As Object = JO.CreateEvent("android.widget.TextView.OnEditorActionListener","Enter",Null) JO.RunMethod("setOnEditorActionListener",Array As Object(O)) EditText1.SingleLine=False End Sub حال ساب های زیر را بین دو ساب دیگر قرار دهید: Sub check(str As String)As Boolean If str.Contains(".") Then Try Dim before As Int=str.SubString2(0,str.IndexOf(".")) temp=before&"." Return True Catch Return False End Try End If End Sub Sub MySetSelection(position As Int) Dim jo As JavaObject= EditText1 jo.RunMethod("setSelection",Array As Object(position)) End Sub Sub MyGetSelectionStart As Object Dim jo As JavaObject=EditText1 Return jo.RunMethod("getSelectionStart",Null) End Sub Sub Enter_Event(MethodName As String,Args() As Object) As Object If EnterClicked=False Then etplus.insertTextToCursorPosition(EditText1,CRLF&"") EnterClicked=True Return True Else EnterClicked=False Return True End If End Sub در بالا، ساب اول (check) بررسی می کنه که آیا قبلا متن یک خط شماره گذاری شده یا نه! ساب دوم (MySetSelection) مکان Cursor یا همون خط چشمک زن توی ادیت تکست رو تنظیم می کنه. ساب سوم (MyGetSelectionStart) مکان فعلی Cursor رو میگیره. ساب چهارم (Enter_Event) هم رویداد کلیک روی دکمه اینتر توی کیبورد هست که توی این ساب گفتیم بیا برو خط بعدی. (این ساب دو بار پشت سر هم اجرا میشه و به همین دلیل با متغیر بولین کنترلش کردیم که فقط بار اول کدهای داخلش کار کنه و گرنه اگر این کار رو نمی کردیم با یک کلید دوتا اینتر می خورد!) توجه کنید که نیازی به ساب های دوم و سوم نبود و می تونستیم با متدهای ادیت تکست که توی خود b4a هست نیز کارهای همین ساب ها رو انجام بدیم اما من ترجیح دادم خودم ساب هاشو بنویسم. و اما مهمترین ساب این هست(این ساب رو هم مثل ساب های دیگه بین دوتا ساب قرار بدین) : Private Sub EditText1_TextChanged (Old As String, new As String) Try If EditText1.Text<>total Then If EditText1.Text="" Then mylines=0 End If If mylines<>etplus.getLineCount(EditText1) Then total="" mylines=etplus.getLineCount(EditText1) For i=1 To mylines Dim mylinestr As String=etplus.getTextOfALines(EditText1,i) If check(mylinestr) Then mylinestr=mylinestr.Replace(temp,"") Try mylinestr=mylinestr.Replace("","") Catch End Try mylinestr=i&"."&mylinestr If i<>mylines Then mylinestr=mylinestr&CRLF End If Else mylinestr=i&"."&mylinestr If i<>mylines Then mylinestr=mylinestr&CRLF End If End If total=total&mylinestr Next EditText1.Text=total MySetSelection(EditText1.Text.Length) End If End If Catch End Try End Sub این ساب بالا زمانی اجرا میشه که متن داخل ادیت تکست تغییر کنه و شماره گذاری خطوط توی همین ساب انجام میشه. ممکنه کمی گیج کننده به نظر برسه اما اگه بشینید و تحلیلش کنید خیلی راحته. -این قابلیت هم توی ادیت تکست های چپ چین و هم راست چین شده کار میکنه(هم برای متون فارسی و هم انگلیسی). -توی این مثال نام ادیت تکست ما EditText1 بود اگه برای شما نامش فرق می کنه باید کل کلمات EditText1 توی کدها به نام ادیت تکست شما تغییر پیدا کنه. هزینه استفاده از مطالب و کدهای این پست: "5 عدد صلوات بر محمد و آل محمد" لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
سوال
mohammad soliemani 0
سلام خدمت دوستان عزیز
چجوری می توانم در ادیت تکست پشت هر خط عدد بگذارم؟
مثلا اینجوری👇
مثل قابلیتی که توی همین سایت هست
لینک ارسال
به اشتراک گذاری در سایت های دیگر
2 پاسخ به این سوال تاکنون داده شده است
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.