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

مشکل ارتفاع لیبل در مولتی پنل


salar_blackdroid

سوال

سلام دوستان.
 
من متونی رو از دیتابیس لود میکنم و میخوام تو هر کدوم از پنلهای 
 
مولتی پنل نشون بدم ولی خب هر متنی ارتفاع خاص خودشو داره.
 
مشکل اینه ارتفاع پنل با لیبل ها یکی نمیشه و اینکه فاصله پنل ها
 
از هم خیلی زیاد میشه و متون به شکل ناقص نشون داده میشن.
 
واقعیتش قبل زدن تاپیک ، جستجو کردم و تابع art گیرم اومد و یکسری
کدها ، ولی هیچ کدوم کارمو را ننداخت. :((
 
کد من :
 

Sub LoadDB
Activity.RemoveAllViews
Activity.LoadLayout("sv_lay")
InitSQL
cr = sql1.ExecQuery("select txt from tbl")
Dim ht As Float
Dim su As StringUtils
For i=0 To cr.RowCount-1
	cr.Position = i
	Dim p As Panel
	p.Initialize("p")
	sv1.Panel.AddView(p,0,stop,100%x,100%y)
	p.LoadLayout("pnl_lay")
	lbl1.Text = cr.GetString("txt")
	lbl1.Gravity = Gravity.RIGHT
	ht = art(lbl1.Text,lbl1,Typeface.DEFAULT,18)
	p.Height = ht+100dip
	stop = stop + p.Height
	sv1.Panel.Height = stop
	
Next
sv1.Panel.Height = sv1.Panel.Height + 20%y
End Sub

اینم عکس خروجی :

 

z6xd_2015-09-20_170153.png

 

 

ممنون از راهنمایی شما./

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

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

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

به جای esmepanelet اسم پنل داخل لایوتت رو بزار (فهمیدی مشکلتو دگ؟ )

For i=0 To cr.RowCount-1
    cr.Position = i
    Dim p As Panel
    p.Initialize("p")
    sv1.Panel.AddView(p,0,stop,100%x,100%y)
    p.LoadLayout("pnl_lay")
    lbl1.Text = cr.GetString("txt")
    lbl1.Gravity = Gravity.RIGHT
    lbl1.Height = st.MeasureMultilineTextHeight(lbl1,lbl1.Text)
    p.Height = label1.Height+100dip
   esmepanelet.height=p.height
 stop = stop + 100dip +p.Height
    sv1.Panel.Height = stop
    
Next
لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام دوست عزیز شما بیا با string utils ارتفاع لیبلو بگیر بعد مساوی با panel1.height قرار بده...

dim int1 as int
int1 = 0	


Dim s As StringUtils
	label1.Height = s.MeasureMultilineTextHeight(label1,label1.Text)
int1 = int1 + label1.height + 3%y
panel1.height = int1 
لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

 

اول ارتفاع لیبل رو از قسمت دیزاینر افزایش بده  lbl1.SetTopAndBottom

 

بعد 100dip رو هم ببر بالاتر و هر دفعه تست کن تو این خط p.Height = ht+400dip

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

سلام

 

اول ارتفاع لیبل رو از قسمت دیزاینر افزایش بده  lbl1.SetTopAndBottom

 

بعد 100dip رو هم ببر بالاتر و هر دفعه تست کن تو این خط p.Height = ht+400dip

 

آخه متن ها طول شون متفاوته ، طول مشخصی نداره که بخوام ارتفاع لیبل رو برابر اون تنظیم کنم !

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

 

سلام دوست عزیز شما بیا با string utils ارتفاع لیبلو بگیر بعد مساوی با panel1.height قرار بده...

dim int1 as int

int1 = 0    

Dim s As StringUtils

    label1.Height = s.MeasureMultilineTextHeight(label1,label1.Text)

int1 = int1 + label1.height + 3%y

panel1.height = int1 

 

 

جواب نداد.   :(

 

کارم خیلی گیره !!! 

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

مشکل میدونی چیه ، تنظیم متغیرهای Stop ینی فاصله مناسب پنل ها از هم ،

 

ارتفاع هر پنل و ارتفاع لیبل !!!

 

اینا هیچ کدوم فعلا درست اجرایی نمیشه !!!

 

کد زیر رو هم نوشتم ، ولی جواب نداد متاسفانه !!

For i=0 To cr.RowCount-1
	cr.Position = i
	Dim p As Panel
	p.Initialize("p")
	sv1.Panel.AddView(p,0,stop,100%x,100%y)
	p.LoadLayout("pnl_lay")
	lbl1.Text = cr.GetString("txt")
	lbl1.Gravity = Gravity.RIGHT
	lbl1.Height = su.MeasureMultilineTextHeight(lbl1,lbl1.Text)
	ht = ht + lbl1.Height+3%y
	p.Height = ht + 200dip
	stop = 2%y+p.Height
	sv1.Panel.Height = stop
	
Next
sv1.Panel.Height = sv1.Panel.Height + 20%y
لینک ارسال
به اشتراک گذاری در سایت های دیگر


برا حلقت اینو بزار ببین اکی میشه؟

For i=0 To cr.RowCount-1
    cr.Position = i
    Dim p As Panel
    p.Initialize("p")
    sv1.Panel.AddView(p,0,stop,100%x,100%y)
    p.LoadLayout("pnl_lay")
    lbl1.Text = cr.GetString("txt")
    lbl1.Gravity = Gravity.RIGHT
    lbl1.Height = st.MeasureMultilineTextHeight(lbl1,lbl1.Text)
    p.Height = label1.Height+100dip
    stop = stop + 100dip +p.Height
    sv1.Panel.Height = stop
    
Next

اینم تو ساب global تعریف کن

Dim s As StringUtils

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

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

 

برا حلقت اینو بزار ببین اکی میشه؟

For i=0 To cr.RowCount-1
    cr.Position = i
    Dim p As Panel
    p.Initialize("p")
    sv1.Panel.AddView(p,0,stop,100%x,100%y)
    p.LoadLayout("pnl_lay")
    lbl1.Text = cr.GetString("txt")
    lbl1.Gravity = Gravity.RIGHT
    lbl1.Height = st.MeasureMultilineTextHeight(lbl1,lbl1.Text)
    p.Height = label1.Height+100dip
    stop = stop + 100dip +p.Height
    sv1.Panel.Height = stop
    
Next

اینم تو ساب global تعریف کن

Dim s As StringUtils

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

 

 بله لیبل رو پنله ! تو لایوت pnl_lay !

 

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

 

فاصله پنل ها زیاده و متن ها ناقص نشون داده میشن !!!

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

 

 بله لیبل رو پنله ! تو لایوت pnl_lay !

 

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

 

فاصله پنل ها زیاده و متن ها ناقص نشون داده میشن !!!

 

اسم پنل تو لایوتت چیه؟

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

از این کدها استفاده کن


منم از این مشکل زیاد داشتم و همیشه این کدها جواب داده


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


فقط کارایی که بالا گفتم هم انجام بده


تو عکسی که گذاشتی پنلها فاصله ندارن در واقع متنت طولانیه و به اندازه متنت فاصله گذاشته که اگه کارایی که گفتم انجام بدی حل میشه



Sub Process_Globals
Dim cur As Cursor
End Sub

Sub Globals

Private ScrollView1 As ScrollView
Dim text As String
Dim ht As Float
Dim StrUtil As StringUtils
Dim PanelHeight As Int
Private Label1 As Label

Private Panel1 As Panel
End Sub


Sub Activity_Create(FirstTime As Boolean)


Activity.LoadLayout("Scroll")





cur.Position=0



For i=0 To cur.RowCount-1
cur.Position=i

bshare.Tag= i

PanelHeight=0



ScrollView1.Panel.Color=Colors.Transparent

Dim p1 As Panel
p1.Initialize("")
p1.LoadLayout("main")
ScrollView1.Panel.AddView(p1,0,PanelHeight,100%x,100dip)




text= cur.GetString("matn")



ht=art(text,Label1,myfont,20)
Label1.TextColor =Colors.Black



p1.Height=ht+400dip
PanelHeight=ht+400dip







Next


ScrollView1.Panel.Height=PanelHeight


End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

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")
Obj1.Target = leb
Obj1.RunMethod3("setLineSpacing", .10 ,"java.lang.float", 1.5, "java.lang.float")
Obj1.Target = leb
after = Obj1.RunMethod("getLineHeight")
ht = ((after * ht)/before)
leb.Height = ht
Return ht

End Sub

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

 

به جای esmepanelet اسم پنل داخل لایوتت رو بزار (فهمیدی مشکلتو دگ؟ )

For i=0 To cr.RowCount-1
    cr.Position = i
    Dim p As Panel
    p.Initialize("p")
    sv1.Panel.AddView(p,0,stop,100%x,100%y)
    p.LoadLayout("pnl_lay")
    lbl1.Text = cr.GetString("txt")
    lbl1.Gravity = Gravity.RIGHT
    lbl1.Height = st.MeasureMultilineTextHeight(lbl1,lbl1.Text)
    p.Height = label1.Height+100dip
   esmepanelet.height=p.height
 stop = stop + 100dip +p.Height
    sv1.Panel.Height = stop
    
Next

برادر موسوی ، با یه تغییرات جزیی به مطلوبم رسیدم !!

خدا خیرت بده داداش.

آقا من 2 ساعته میخوام پاسخ بدم نمیشه ، هی متن در حال ذخیره میاد!

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

ارادت./

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

برادر موسوی ، با یه تغییرات جزیی به مطلوبم رسیدم !!

خدا خیرت بده داداش.

آقا من 2 ساعته میخوام پاسخ بدم نمیشه ، هی متن در حال ذخیره میاد!

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

ارادت./

چون اون پنل تو پنل دوم لود میشه و پنل اولت ارتفاعش ثابته اینجوری میشه با اون تیکه که گفتم حل میشه مشکلت

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

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

بایگانی شده

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

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

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