من یه اسکرول ویو دارم و یک لیبل و متن رو در لیبل نمایش میدم
اما گاهی متنها که از دیتابیس فراخوانی میشه حجمش بسیار زیاده و تا بخواد لود بشه برنامه میره تو کما
میخوام یه کاری کنم که مثلا 300 تا حرف 300 تا حرف لود بشه یعنی به این صورت
500 تای اول لود بشه وقتی اسکرول ویو به انتها رسید 500 تای دیگه لود بشه
تا اینکه متن تمام بشه
دوستان کمک کنند
سورس رو پیوست کردم لطفا تصحیح بفرمائید
دوستان راهنمایی کردند که از position استفاده بشه من یه مقداریش رو نوشتم اما مشکل داره
مشکلش اینه که طول متن من 9700 تاست ولی positon اسکرول تا 870 تا بیشتر نمیره
سورس رو هم آپلود کردم دوستان لطفا راهنمایی کنند
Sub Process_Globals
Dim sql1 As SQL
Dim cur As Cursor
End Sub
Sub Globals
Private sv As ScrollView
Dim l1 As Label
Dim FontSize As String
Dim j,k As Int
Private EditText1 As EditText
Dim su As StringUtils
Dim s As String
Dim i As Int
Private EditText2 As EditText
Private EditText3 As EditText
Private EditText4 As EditText
Private EditText5 As EditText
End Sub
Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("Matlab")
sql1.Initialize(File.DirInternal,"a1.db",False)
cur= sql1.ExecQuery("SELECT * FROM mytable")
'______________________________________________________________
If sql1.IsInitialized=False Then
sql1.Initialize(File.DirInternal,"a1.db",False)
End If
'__________________________________________________________________
cur = sql1.ExecQuery("SELECT * FROM mytable WHERE id =1")
EditText1.Text= sv.ScrollPosition
Dim l1 As Label
l1.Initialize("")
l1.TextColor = Colors.Black
l1.Gravity = Gravity.RIGHT
For i = 0 To cur.RowCount-1
cur.Position = i
s = cur.GetString("matn")
l1.Text=s.SubString2(0,200)
Next
sv.Panel.AddView(l1,20,0,100%x,100%y)
l1.Width =sv.Panel.Width +70%x
l1.TextSize = 30
k = su.MeasureMultilineTextHeight(l1,s.SubString2(0,200))
l1.Height = k
sv.Panel.Height = k
End Sub
Sub sv_ScrollChanged(Position As Int)
EditText1.Text= sv.ScrollPosition
EditText5.Text=s.Length
If sv.ScrollPosition+sv.Height<=sv.Panel.Height Then
EditText4.Text="1111111111111"
j =500
If j <s.Length Then
l1.Text = s.SubString2(0,j)
i = su.MeasureMultilineTextHeight(l1,s.SubString2(0,j))
j=j+500
l1.Height = j
sv.Panel.Height = j
EditText2.Text="222222222222222"
End If
End If
EditText3.Text=j
End Sub
Sub Activity_KeyPress (KeyCode As Int) As Boolean 'Return True to consume the event
If KeyCode = KeyCodes.KEYCODE_BACK Then
Activity.Finish
End If
End Sub
Sub Button2_Click
sv.ScrollPosition=0
EditText1.Text=""
EditText2.Text=""
EditText3.Text=""
EditText4.Text=""
EditText5.Text=""
End Sub
سوال
seyed_27 171
بسمه تعالی
با سلام خدمت مدیریت محترم و دوستان
من یه اسکرول ویو دارم و یک لیبل و متن رو در لیبل نمایش میدم
اما گاهی متنها که از دیتابیس فراخوانی میشه حجمش بسیار زیاده و تا بخواد لود بشه برنامه میره تو کما
میخوام یه کاری کنم که مثلا 300 تا حرف 300 تا حرف لود بشه یعنی به این صورت
500 تای اول لود بشه وقتی اسکرول ویو به انتها رسید 500 تای دیگه لود بشه
تا اینکه متن تمام بشه
دوستان کمک کنند
سورس رو پیوست کردم لطفا تصحیح بفرمائید
دوستان راهنمایی کردند که از position استفاده بشه من یه مقداریش رو نوشتم اما مشکل داره
مشکلش اینه که طول متن من 9700 تاست ولی positon اسکرول تا 870 تا بیشتر نمیره
سورس رو هم آپلود کردم دوستان لطفا راهنمایی کنند
Sub Process_Globals Dim sql1 As SQL Dim cur As Cursor End Sub Sub Globals Private sv As ScrollView Dim l1 As Label Dim FontSize As String Dim j,k As Int Private EditText1 As EditText Dim su As StringUtils Dim s As String Dim i As Int Private EditText2 As EditText Private EditText3 As EditText Private EditText4 As EditText Private EditText5 As EditText End Sub Sub Activity_Create(FirstTime As Boolean) Activity.LoadLayout("Matlab") sql1.Initialize(File.DirInternal,"a1.db",False) cur= sql1.ExecQuery("SELECT * FROM mytable") '______________________________________________________________ If sql1.IsInitialized=False Then sql1.Initialize(File.DirInternal,"a1.db",False) End If '__________________________________________________________________ cur = sql1.ExecQuery("SELECT * FROM mytable WHERE id =1") EditText1.Text= sv.ScrollPosition Dim l1 As Label l1.Initialize("") l1.TextColor = Colors.Black l1.Gravity = Gravity.RIGHT For i = 0 To cur.RowCount-1 cur.Position = i s = cur.GetString("matn") l1.Text=s.SubString2(0,200) Next sv.Panel.AddView(l1,20,0,100%x,100%y) l1.Width =sv.Panel.Width +70%x l1.TextSize = 30 k = su.MeasureMultilineTextHeight(l1,s.SubString2(0,200)) l1.Height = k sv.Panel.Height = k End Sub Sub sv_ScrollChanged(Position As Int) EditText1.Text= sv.ScrollPosition EditText5.Text=s.Length If sv.ScrollPosition+sv.Height<=sv.Panel.Height Then EditText4.Text="1111111111111" j =500 If j <s.Length Then l1.Text = s.SubString2(0,j) i = su.MeasureMultilineTextHeight(l1,s.SubString2(0,j)) j=j+500 l1.Height = j sv.Panel.Height = j EditText2.Text="222222222222222" End If End If EditText3.Text=j End Sub Sub Activity_KeyPress (KeyCode As Int) As Boolean 'Return True to consume the event If KeyCode = KeyCodes.KEYCODE_BACK Then Activity.Finish End If End Sub Sub Button2_Click sv.ScrollPosition=0 EditText1.Text="" EditText2.Text="" EditText3.Text="" EditText4.Text="" EditText5.Text="" End Subscrolv.zip
لینک ارسال
به اشتراک گذاری در سایت های دیگر
5 پاسخ به این سوال تاکنون داده شده است
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.