رفتن به مطلب
  • 0

مولتی و لیمیت


rezamoaser

سوال

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

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

کد مولتی و لیمیت پایینه

#Region  Activity Attributes 
	#FullScreen: true
	#IncludeTitle: false
#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 Panel1 As Panel
	Private Label1 As Label
	Dim stop As Int = 5%y
	Dim sql1 As SQL
	Dim cur1 As Cursor
	Private ScrollView1 As ScrollView
	Private Button1 As Button
	Private Label5 As Label
	Dim myfont As Typeface
	Dim text As String
	Dim ht As Float
	Dim StrUtil As StringUtils
	Dim PanelHeight As Int
	Private btncopy As Button
	Private btnshare As Button
	Private Btnnumber As Button
	Private Label4 As Label
	Dim s As Int
	Private Button1 As Button
	Private Label1 As Label
	Private Label2 As Label
	Private ScrollView1 As ScrollView
	
	Dim offset As Int = 0
End Sub

Sub Activity_Create(FirstTime As Boolean)
    	 Activity.LoadLayout("ScrollView1")
     If File.Exists(File.DirInternal,"multipanel.db") = False Then
	 File.Copy(File.DirAssets,"multipanel.db",File.DirInternal,"multipanel.db")	
     End If
	 sql1.Initialize(File.DirInternal,"multipanel.db",False) 
	  			show("SELECT * FROM tbl LIMIT 10 OFFSET "&offset&"")
	
	 cur1 = sql1.ExecQuery("select * from tbl")
	 
	 For i = 0 To cur1.RowCount-1
	 cur1.Position = i
	 Dim p As Panel
	 p.Initialize("p")
	 ScrollView1.Panel.AddView(p,0,stop,100%X,100%y)
	 stop = stop + 35%y
	 p.LoadLayout("mine")
	 Label1.Text = cur1.GetString("txt")
	 ScrollView1.Panel.Height = stop


	myfont = Typeface.LoadFromAssets("byekan.ttf")
	Activity.LoadLayout("mine")

	For i=0 To cur1.RowCount-1
	cur1.Position=i
	text= cur1.GetString("txt") 
	ScrollView1.Panel.Color = Colors.Transparent
	
	Dim p1 As Panel
	p1.LoadLayout("mine")
	ScrollView1.Panel.AddView(p1,0,PanelHeight,100%x,100dip)
	
	Label4.text="عاشقانه"
	Label4.Typeface=Typeface.LoadFromAssets("byekan.ttf")

	btnshare.Tag = i
	btncopy.Tag = i
	Btnnumber.text = i 
	Btnnumber.Typeface=Typeface.LoadFromAssets("byekan.ttf")

	ht=art(text,Label1,myfont,20)
	Label1.TextColor=Colors.Black
	p1.Height=ht+70dip
	PanelHeight=PanelHeight+ht+70dip
	Next
	ScrollView1.Panel.Height=PanelHeight
	Label5.text="عاشقانه"
	Label5.Typeface=Typeface.LoadFromAssets("far_aman.ttf")
Next
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub Button1_Click
	StartActivity("s2")
End Sub

Sub show(query As String)
	cur1 = sql1.ExecQuery(query)

For i = 0 To cur1.RowCount-1
cur1.Position = i
Dim p As Panel
p.Initialize("p")
ScrollView1.Panel.AddView(p,0,s,96%x,100%y)
s = s + 27%y
p.LoadLayout("mine")
Label1.text = cur1.GetString("txt")
ScrollView1.Panel.Height = s
ScrollView1.Panel.Color = Colors.Transparent
Next
End Sub

Sub art(txt As String,leb As Label,font As Typeface,size As Int) As Float      
Dim before,after As Float
	Dim Obj1 As Reflector
		leb.text=txt
		leb.TextSize=size
		leb.Gravity=Gravity.CENTER
		leb.Left=leb.Left
		leb.Typeface=font
	ht = StrUtil.MeasureMultilineTextHeight(leb , txt)
            Obj1.Target = leb  
            before = Obj1.RunMethod("getLineHeight")    'Get the height of line BEFORE you change it
            Obj1.Target = leb 
            Obj1.RunMethod3("setLineSpacing", .10, "java.lang.float", 1.5, "java.lang.float")  'Change the space between lines
            Obj1.Target = leb 
            after = Obj1.RunMethod("getLineHeight")    'Get the height of line AFTER  you change it
            ht = ((after * ht)/before)
		leb.Height = ht
Return  ht

End Sub

Sub btnshare_Click
    Dim cursor3 As Cursor
    cursor3 = sql1.ExecQuery("SELECT txt FROM tbl")
    Dim btn2 As Button
    btn2=Sender
    cursor3.Position =btn2.Tag
    Dim matnsms As Label
    matnsms.Initialize("")
    matnsms.text=cursor3.GetString("txt")
    cursor3.Close
    Dim share As Intent
    share.Initialize(share.ACTION_SEND,"txt")
    share.SetType("text/plain")
    share.PutExtra("android.intent.extra.TEXT", matnsms.text)
    share.WrapAsIntentChooser("متن خود را به اشتراک بگذارید....")
    StartActivity(share)
End Sub

Sub btncopy_Click
    Dim something As BClipboard
	Dim cursor2 As Cursor
	cursor2 = sql1.ExecQuery("SELECT txt FROM tbl")

	Dim btn2 As Button
	btn2=Sender
	
	cursor2.Position =btn2.Tag
	something.clrText 
    something.settext(cursor2.GetString("txt"))
	ToastMessageShow("متن در کلیپ بورد کپی شد",False)
	cursor2.Close
End Sub


Sub ScrollView1_ScrollChanged(Position As Int)
					If ScrollView1.ScrollPosition + ScrollView1.Height = ScrollView1.Panel.Height Then
			offset = offset + 10
			show("SELECT * FROM tbl LIMIT 10 OFFSET "&offset&"")
		End If
End Sub
لینک ارسال
به اشتراک گذاری در سایت های دیگر

16 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

 

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

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

کد مولتی و لیمیت پایینه

#Region  Activity Attributes 
	#FullScreen: true
	#IncludeTitle: false
#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 Panel1 As Panel
	Private Label1 As Label
	Dim stop As Int = 5%y
	Dim sql1 As SQL
	Dim cur1 As Cursor
	Private ScrollView1 As ScrollView
	Private Button1 As Button
	Private Label5 As Label
	Dim myfont As Typeface
	Dim text As String
	Dim ht As Float
	Dim StrUtil As StringUtils
	Dim PanelHeight As Int
	Private btncopy As Button
	Private btnshare As Button
	Private Btnnumber As Button
	Private Label4 As Label
	Dim s As Int
	Private Button1 As Button
	Private Label1 As Label
	Private Label2 As Label
	Private ScrollView1 As ScrollView
	
	Dim offset As Int = 0
End Sub

Sub Activity_Create(FirstTime As Boolean)
    	 Activity.LoadLayout("ScrollView1")
     If File.Exists(File.DirInternal,"multipanel.db") = False Then
	 File.Copy(File.DirAssets,"multipanel.db",File.DirInternal,"multipanel.db")	
     End If
	 sql1.Initialize(File.DirInternal,"multipanel.db",False) 
	  			show("SELECT * FROM tbl LIMIT 10 OFFSET "&offset&"")
	
	 cur1 = sql1.ExecQuery("select * from tbl")
	 
	 For i = 0 To cur1.RowCount-1
	 cur1.Position = i
	 Dim p As Panel
	 p.Initialize("p")
	 ScrollView1.Panel.AddView(p,0,stop,100%X,100%y)
	 stop = stop + 35%y
	 p.LoadLayout("mine")
	 Label1.Text = cur1.GetString("txt")
	 ScrollView1.Panel.Height = stop


	myfont = Typeface.LoadFromAssets("byekan.ttf")
	Activity.LoadLayout("mine")

	For i=0 To cur1.RowCount-1
	cur1.Position=i
	text= cur1.GetString("txt") 
	ScrollView1.Panel.Color = Colors.Transparent
	
	Dim p1 As Panel
	p1.LoadLayout("mine")
	ScrollView1.Panel.AddView(p1,0,PanelHeight,100%x,100dip)
	
	Label4.text="عاشقانه"
	Label4.Typeface=Typeface.LoadFromAssets("byekan.ttf")

	btnshare.Tag = i
	btncopy.Tag = i
	Btnnumber.text = i 
	Btnnumber.Typeface=Typeface.LoadFromAssets("byekan.ttf")

	ht=art(text,Label1,myfont,20)
	Label1.TextColor=Colors.Black
	p1.Height=ht+70dip
	PanelHeight=PanelHeight+ht+70dip
	Next
	ScrollView1.Panel.Height=PanelHeight
	Label5.text="عاشقانه"
	Label5.Typeface=Typeface.LoadFromAssets("far_aman.ttf")
Next
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub Button1_Click
	StartActivity("s2")
End Sub

Sub show(query As String)
	cur1 = sql1.ExecQuery(query)

For i = 0 To cur1.RowCount-1
cur1.Position = i
Dim p As Panel
p.Initialize("p")
ScrollView1.Panel.AddView(p,0,s,96%x,100%y)
s = s + 27%y
p.LoadLayout("mine")
Label1.text = cur1.GetString("txt")
ScrollView1.Panel.Height = s
ScrollView1.Panel.Color = Colors.Transparent
Next
End Sub

Sub art(txt As String,leb As Label,font As Typeface,size As Int) As Float      
Dim before,after As Float
	Dim Obj1 As Reflector
		leb.text=txt
		leb.TextSize=size
		leb.Gravity=Gravity.CENTER
		leb.Left=leb.Left
		leb.Typeface=font
	ht = StrUtil.MeasureMultilineTextHeight(leb , txt)
            Obj1.Target = leb  
            before = Obj1.RunMethod("getLineHeight")    'Get the height of line BEFORE you change it
            Obj1.Target = leb 
            Obj1.RunMethod3("setLineSpacing", .10, "java.lang.float", 1.5, "java.lang.float")  'Change the space between lines
            Obj1.Target = leb 
            after = Obj1.RunMethod("getLineHeight")    'Get the height of line AFTER  you change it
            ht = ((after * ht)/before)
		leb.Height = ht
Return  ht

End Sub

Sub btnshare_Click
    Dim cursor3 As Cursor
    cursor3 = sql1.ExecQuery("SELECT txt FROM tbl")
    Dim btn2 As Button
    btn2=Sender
    cursor3.Position =btn2.Tag
    Dim matnsms As Label
    matnsms.Initialize("")
    matnsms.text=cursor3.GetString("txt")
    cursor3.Close
    Dim share As Intent
    share.Initialize(share.ACTION_SEND,"txt")
    share.SetType("text/plain")
    share.PutExtra("android.intent.extra.TEXT", matnsms.text)
    share.WrapAsIntentChooser("متن خود را به اشتراک بگذارید....")
    StartActivity(share)
End Sub

Sub btncopy_Click
    Dim something As BClipboard
	Dim cursor2 As Cursor
	cursor2 = sql1.ExecQuery("SELECT txt FROM tbl")

	Dim btn2 As Button
	btn2=Sender
	
	cursor2.Position =btn2.Tag
	something.clrText 
    something.settext(cursor2.GetString("txt"))
	ToastMessageShow("متن در کلیپ بورد کپی شد",False)
	cursor2.Close
End Sub


Sub ScrollView1_ScrollChanged(Position As Int)
					If ScrollView1.ScrollPosition + ScrollView1.Height = ScrollView1.Panel.Height Then
			offset = offset + 10
			show("SELECT * FROM tbl LIMIT 10 OFFSET "&offset&"")
		End If
End Sub

کسی نیست عایا

لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

در سورسی که قرار دادم یه تکنیک راحت برای لیمیت کردن هست

موفق باشید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

در سورسی که قرار دادم یه تکنیک راحت برای لیمیت کردن هست

موفق باشید

ممنون اما اونو امتحان کردم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

کمی خلاقیت چاشنیش کن برادر

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام  دوستم

اشتباهی که شما کردی اینه که در ساب activity creat اومدی cursor رو تعریف کردی و حلقه و عملیات رو روی اون انجام دادی 

ویژگی این sub اینه که تا برنامه اجرا بشه این اکتیویتی برات ساخته میشه اسمش با خودشه

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

اگه متوجه نشدی بگو بیشتر توضیح بدم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام  دوستم

اشتباهی که شما کردی اینه که در ساب activity creat اومدی cursor رو تعریف کردی و حلقه و عملیات رو روی اون انجام دادی 

ویژگی این sub اینه که تا برنامه اجرا بشه این اکتیویتی برات ساخته میشه اسمش با خودشه

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

اگه متوجه نشدی بگو بیشتر توضیح بدم

اگه میشه کمی بیشتر توضیح بده عزیز

لینک ارسال
به اشتراک گذاری در سایت های دیگر

اگه میشه کمی بیشتر توضیح بده عزیز

 

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

شما وقتی توی ساب Activity_Creat گفتی SELECT*FROM... یعنی دیگه لیمیتی در کار نیست

چون تابع Activity_creat دارای اولویت هستش و کامپایلر اونو اول میخونه و وقتی میبینه شما نوشتی SELECT*FROM... دیگه لیمیت کردن رو برات اعمال نمیکنه

و تمام اطلاعات رو لود میکنه در نتیجه برنامه شما دچار کرش میشه

حالا کاری که شما باید انجام بدید اینه که خوندن اطلاعات رو به sub show منتقل کنید

یعنی حلقه ی for و cursor رو منتقل کنید!

و تنها چیزی که باید توی activity_creat باشه show("SELECT * FROM tbl LIMIT 10 OFFSET "&offset&"")  این بخش هستش که فقط کامپایلر بفهمه چیو داره لود میکنه

امیدوارم متوجه شده باشی 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

شما وقتی توی ساب Activity_Creat گفتی SELECT*FROM... یعنی دیگه لیمیتی در کار نیست

چون تابع Activity_creat دارای اولویت هستش و کامپایلر اونو اول میخونه و وقتی میبینه شما نوشتی SELECT*FROM... دیگه لیمیت کردن رو برات اعمال نمیکنه

و تمام اطلاعات رو لود میکنه در نتیجه برنامه شما دچار کرش میشه

حالا کاری که شما باید انجام بدید اینه که خوندن اطلاعات رو به sub show منتقل کنید

یعنی حلقه ی for و cursor رو منتقل کنید!

و تنها چیزی که باید توی activity_creat باشه show("SELECT * FROM tbl LIMIT 10 OFFSET "&offset&"")  این بخش هستش که فقط کامپایلر بفهمه چیو داره لود میکنه

امیدوارم متوجه شده باشی 

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

Sub show(query As String)
	cur = sql.ExecQuery(query)

For i = 0 To cur.RowCount-1
cur.Position = i
Dim p As Panel
p.Initialize("p")
ScrollView1.Panel.AddView(p,0,s,96%x,100%y)
s = s + 27%y
p.LoadLayout("mine")
Label1.text = cur.GetString("txt")
ScrollView1.Panel.Height = s
ScrollView1.Panel.Color = Colors.Transparent
   For i = 0 To cur1.RowCount-1
	 cur1.Position = i
	 Dim p As Panel
	 p.Initialize("p")
	 ScrollView1.Panel.AddView(p,0,stop,100%X,100%y)
	 stop = stop + 35%y
	 p.LoadLayout("mine")
	 Label1.Text = cur1.GetString("txt")
	 ScrollView1.Panel.Height = stop
	
	myfont = Typeface.LoadFromAssets("byekan.ttf")
	Activity.LoadLayout("ScrollView1")

	For i=0 To cur1.RowCount-1
	cur1.Position=i
	text= cur1.GetString("txt") 
	ScrollView1.Panel.Color = Colors.Transparent
	
	Dim p1 As Panel
	p1.Initialize("")
	p1.LoadLayout("mine")
	ScrollView1.Panel.AddView(p1,0,PanelHeight,100%x,100dip)
	
	Label4.text="عاشقانه"
	Label4.Typeface=Typeface.LoadFromAssets("byekan.ttf")

	btnshare.Tag = i
	btncopy.Tag = i
	Btnnumber.text = i + 1
	Btnnumber.Typeface=Typeface.LoadFromAssets("byekan.ttf")

	ht=art(text,Label1,myfont,20)
	Label1.TextColor=Colors.Black
	p1.Height=ht+70dip
	PanelHeight=PanelHeight+ht+70dip
	Next
	ScrollView1.Panel.Height=PanelHeight
	Label5.text="عاشقانه"
	Label5.Typeface=Typeface.LoadFromAssets("far_aman.ttf")
	Next
	Next
End Sub
لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

شما وقتی توی ساب Activity_Creat گفتی SELECT*FROM... یعنی دیگه لیمیتی در کار نیست

چون تابع Activity_creat دارای اولویت هستش و کامپایلر اونو اول میخونه و وقتی میبینه شما نوشتی SELECT*FROM... دیگه لیمیت کردن رو برات اعمال نمیکنه

و تمام اطلاعات رو لود میکنه در نتیجه برنامه شما دچار کرش میشه

حالا کاری که شما باید انجام بدید اینه که خوندن اطلاعات رو به sub show منتقل کنید

یعنی حلقه ی for و cursor رو منتقل کنید!

و تنها چیزی که باید توی activity_creat باشه show("SELECT * FROM tbl LIMIT 10 OFFSET "&offset&"")  این بخش هستش که فقط کامپایلر بفهمه چیو داره لود میکنه

امیدوارم متوجه شده باشی 

فقطدر show تمامی باتن و لیبل ها رو درست نمیخونه

لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

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

حلقه ها رو یکی کن 

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

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

حلقه ها رو یکی کن 

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

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

خیلی سخت شده

لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

خیلی سخت شده

کسی هست کمک کنه

لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

خیلی سخت شده

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

ولی من اصلا متوجه نمیشم که مولتی پنلتون چرا اینجوریه! این همه Layout از کجا اومده ! چرا این همه حلقه!!!!!!!!! :fekr: 

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

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

 

موفق و پیروز باشید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

داداش من قبلن (ی تاپیک زدی با همین موضوع، توی اون) برات ی سورس مولتی پنل پیوست کردم ک کلن 5 خط کد هم نداره حتمن ازون استفاده کن برا مولتی پنل

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

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

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...