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

مشکل در اعمال تنظیمات (بسیار مهم)


MahdiHD

سوال

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

#Region  Activity Attributes 
	#FullScreen: True
	#IncludeTitle: False
#End Region

Sub Process_Globals
Dim Font As String
Dim Size As Int
End Sub

Sub Globals
Dim Color As ColorPickerDialog
	Private btncolor As Button
	Private BtnSave As Button
	Private FontSize As SeekBar
	Private FontType As Spinner
	Private Label1 As Label
	Private Label2 As Label
	Private Label3 As Label
	Private Label4 As Label
	Private Label5 As Label
	Private OpenList As Button
End Sub

Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("frm5")
FontType.AddAll(Array As String("BYEKAN","BKOODAK","BMITRA","MJLINER","BTITR"))
Label4.TextSize=18
FontSize.Value = Size
'Label1.Typeface=Typeface.LoadFromAssets("BYEKAN.TTF")
'Label2.Typeface=Typeface.LoadFromAssets("BYEKAN.TTF")
'Label3.Typeface=Typeface.LoadFromAssets("BYEKAN.TTF")
Label4.Typeface=Typeface.LoadFromAssets("Yekan.ttf")
Label5.Typeface=Typeface.LoadFromAssets("Yekan.ttf")
End Sub
Sub FontType_ItemClick (Position As Int, Value As Object)
If Position = 0 Then
Label4.Typeface=Typeface.LoadFromAssets("Yekan.ttf")
End If
If Position = 1 Then
Label4.Typeface=Typeface.LoadFromAssets("Koodak.ttf")
End If
If Position = 2 Then
Label4.Typeface=Typeface.LoadFromAssets("Mitra.ttf")
End If
If Position = 3 Then
Label4.Typeface=Typeface.LoadFromAssets("Linerscreen.ttf")
End If
If Position = 4 Then
Label4.Typeface=Typeface.LoadFromAssets("Btitrbd.ttf")
End If
End Sub
Sub FontSize_ValueChanged (Value As Int, UserChanged As Boolean)
Label4.TextSize=Value
Label5.Text=Value
End Sub
Sub btncolor_Click
 Color.Show("کلکسیون رنگ ها","انتخاب","انصراف","",LoadBitmap(File.DirAssets,"000.png"))
 'btncolor.Typeface=Typeface.LoadFromAssets("yekan.ttf")
 code.saveData("setting.txt","FontColor",Color.RGB)
 Label4.TextColor=Color.RGB
 'btncolor.TextColor=Color.RGB
End Sub
Sub BtnSave_Click
	Font=FontType.SelectedItem
	Size=FontSize.Value
	Dim list1 As List
	list1.Initialize
	list1.Add(Font)
	list1.Add(Size)
	File.WriteList(File.DirInternal,"Settings.stg",list1)
	ToastMessageShow("تنظیمات با موفقیت اعمال شد",False)
	StartActivity(Menu)
	Activity.Finish
End Sub


Sub OpenList_Click
	StartActivity(Menu)
	Activity.Finish
End Sub

و با استفاده از کد زیر تنظیمات رو در صفحه مطالب اعمال کردم :

label1.TextColor=Colors.Black

If File.Exists(File.DirInternal,"Settings.stg")=True Then
Dim list1 As List
list1=File.ReadList(File.DirInternal,"Settings.stg")
Setting.font=list1.Get(0)
Setting.size=list1.Get(1)

Dim a As String
a = code.getData("setting.txt","FontColor")
label1.TextColor = code.getData("setting.txt","FontColor")
Else
Setting.font="BYEKAN"
Setting.size=25
End If

label1.Typeface=Typeface.LoadFromAssets(Setting.font &".ttf")
label1.TextSize=Setting.size

و با استفاده از کد زیر یک code module با نام code ساختم:

Sub saveData(sFilename As String,sKey As String,sValue As String)
Dim m1 As Map
m1.Initialize
If File.Exists(File.DirInternal,sFilename) = True Then
 m1 = File.ReadMap(File.DirInternal,sFilename)
End If
m1.Put(sKey,sValue)
File.WriteMap(File.DirInternal,sFilename,m1)
End Sub


Sub getData(sFilename As String,sKey As String) As String
Dim m1 As Map
m1.Initialize
If File.Exists(File.DirInternal,sFilename) = True Then
  m1 = File.ReadMap(File.DirInternal,sFilename)
Else
  Return ""
End If
If m1.ContainsKey(sKey) = True Then
 Return m1.get(sKey)
Else
 Return ""
End If
End Sub

و این هم یک عکس از پوشه files برنامه من هست :

post-3189-0-08548000-1438935029_thumb.png

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

label1.Typeface=Typeface.LoadFromAssets(Setting.font &".ttf")
لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

دوستان شما هیچ کدوم متوجه مشکل من نشدین در واقع نام فونت هایی که من توی اسپینر نوشته بودم با نام اصلی فونت ها فرق می کرد به همین خاطر وقتی در قسمت مطالب پسوند ttf رو می زاشت کنارش و می خواست اعمال کنه فونت رو پیدا نمی کرد من اسم فونت های اسپینر رو با نام فونت های اصلی یکی کردم درست شد ولی در عوض من با توضیحات شما به طور کامل معنی مفهوم این چند خط کد رو فهمیدم :gol: بسیار بسیار ممنونم البته راه خدوم اصلی تر بود چون که سایز و فونت رو در یک لیست در یک فایل ذخیره می کرد و با یک شرط هم سایز هم فونت رو اعمال می کرد :fekr:

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

سلام

میشه سورس تنظیمات رو که درست کردین قرار بدین؟

منم مشکل شما رو دارم 

label1.TextColor=Colors.Black

If File.Exists(File.DirInternal,"Settings.stg")=True Then
Dim list1 As List
list1=File.ReadList(File.DirInternal,"Settings.stg")
Setting.font=list1.Get(0)
Setting.size=list1.Get(1) برا من این خط رو ارور میگیره

Dim a As String
a = code.getData("setting.txt","FontColor")
label1.TextColor = code.getData("setting.txt","FontColor")
Else
Setting.font="irsans"
Setting.size=18
End If

label1.Typeface=Typeface.LoadFromAssets(Setting.font &".ttf")
label1.TextSize=Setting.size
لینک ارسال
به اشتراک گذاری در سایت های دیگر

دوست عزیز تاپیک برای هشت ماه پیش هست! لازم نبود آن را بالا بیاورید.

شما تاپیک را بررسی‌کنید و در صورتی که ران حل مشکل خود را نیافتید تاپیک جداگانه بزنید.

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

شما باید در اولین ورود به برنامه شرط بگذارید که اگر فایل نبود فایل رو کپی کنه!

امتحان کنید

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

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

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

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

بله!

در اولین اجرا!

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

سلام

کار های اقا کاظم رو انجام بده عزیزم

کد فراخوانی فونت رو هم به این شکل، امتحان کن

lbl.Typeface=Typeface.LoadFromAssets(File.ReadString(File.DirInternal,"FontType.txt") & ".ttf")
لینک ارسال
به اشتراک گذاری در سایت های دیگر

بله!

در اولین اجرا!

فایل setting.txt رو باید براش کد بنویسیم دیگه؟ درسته یا منظورتون یک فایل دیگه است؟

سلام

کار های اقا کاظم رو انجام بده عزیزم

کد فراخوانی فونت رو هم به این شکل، امتحان کن

lbl.Typeface=Typeface.LoadFromAssets(File.ReadString(File.DirInternal,"FontType.txt") & ".ttf")
راستی شما دیگه از یک فایل تکست دیگه استفاده کردید ؟ اگر از کد شما استفاده کنم دیگه نیاز نیست تغییر دیگه ای در کد های دیگم ایجاد کنم و تنظیمات در متن اعمال می شه؟ راستی باید نام فایل تکستی که شما در کد ذکر کردید رو براش دستور کپی بنویسم؟
لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

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

BNazanin

BTitr

کلا اسم ها، بدون ttf. باید باشن :)

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

عزیزم

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

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

BNazanin

BTitr

کلا اسم ها، بدون ttf. باید باشن :)

ببخشید من یکم گیج شدم ! شما می فرمایید من باید فایل تکست رو بسازم و نام فونت هام رو توش بزارم ؟ یعنی فایل setting.txt رو که توی کد نام بردم رو بسازم و بزارم توی فایل برنامه و توش نام فونت هام رو بنویسم؟ و دستور کپی رو بدم؟راستی اصلا نباید کاری به فایل setting.stg داشته باشم دیگه؟
لینک ارسال
به اشتراک گذاری در سایت های دیگر

این Setting.stg رو نمیدونم چرا به کاربردی

خودتو گیج کردی عزیزم

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

توی اسپینر، اسم هارو بدون ttf. ذخیره کن

وقتی روی دکمه ذخیره تنظیمات کپی میکنی، بیا و WriteString کن این اسم رو 

بعد هم با این کد من، readstring کن

همین

حالا، دو جا باید دستور شرطط رو بذاری(که اگه بود، کپی نکنه، اگه فایل نبود، کپی کنه)

یکی توی اکتیویتی اولت، مثل منو یا اسپلش

یکی توی تنظیمات

همین :)

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

این Setting.stg رو نمیدونم چرا به کاربردی

خودتو گیج کردی عزیزم

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

توی اسپینر، اسم هارو بدون ttf. ذخیره کن

وقتی روی دکمه ذخیره تنظیمات کپی میکنی، بیا و WriteString کن این اسم رو

بعد هم با این کد من، readstring کن

همین

حالا، دو جا باید دستور شرطط رو بذاری(که اگه بود، کپی نکنه، اگه فایل نبود، کپی کنه)

یکی توی اکتیویتی اولت، مثل منو یا اسپلش

یکی توی تنظیمات

همین :)

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

کد کپی رو قرار بده عزیزم

اسم یه دونه فونت فقط باید توی فایل تکست باشه

بعد هم با کدی که من دادم، کار میکنه!!!

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

اسم یه دونه فونت فقط باید توی فایل تکست باشه

ببخشید یکم خنگ شدم نمی دونم چرا !!! فقط شما بگو منظورت از این حرف چیه ؟ اون دو تا کار (دستور کپی‌کردن و استفاده از کد شما) رو بکنم دیگه نیاز نیست هیچ کار دیگه ای بکنم یا نه ؟ اگه جواب این سوال بله باشه که هیچ سوالی دیگه ندارم اما اگه نه باشه لطفا کامل توضیح بده باید چی‌کار کنم فرض‌کن با یه فرد مبتدی طرف هستی ! (البته من توی واقعیت هم مبتدی هست جلوی شما عزیزان) چون که این مسئله به طرز شدیدی داره من رو دیوونه می کنه!

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

سلام

در قسمت تنظیمات نام فونت رو در یک فایل txt  به نام Font ذخیره کنید.

بعد به این صورت در اکتیویتی main بنویسید :

If File.Exists(File.DirInternal,"Font") = False Then
	File.WriteString(File.DirInternal,"Font","BYekan")
	End If
لینک ارسال
به اشتراک گذاری در سایت های دیگر

شما لطف داری عزیزم
من نمیدونم از اول چی کار کردی

ببین

یه فایل تکست توی پوشه فایل ها باید بذاری و توش مثلا از اول bnazanin رو نوشته باشی

خود اون فونت رو هم باید در پوشه فایل ها داشته باشی

این از این

 

برای کپی،

if file.exist(file.dirinternal,"fonttype.txt") = false then
file.copy(file.dirasset,"fonttype.txt",file.dirinternal,"fonttype.txt")
end if


این شرط رو باید توی اکتیویتی تنظیماتت و توی اکتیویتی اصلی مثل صفحه اصلیت، قرار بدی...

یه اسپینر داری

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

Bnazanin  Btitr   bYekan(دقت کن که این فونت ها باشن توی پوشه فایل ها مثلا برای فونت Bshahab.ttf باید فقط Bshahab رو بنویسی!)

در رویداد کلیک دکمه ذخیره تنظیمات میای و 

File.WriteString(File.DirInternal,"FontType.txt",Spinner1.SelectedItem)

این از اکتیویتی تنظیماتت

توی اکتیویتی متن، میای و به این شکل اضافه میکنی کد رو...

lbl.Typeface=Typeface.LoadFromAssets(File.ReadString(File.DirInternal,"FontType.txt") & ".ttf")

همین :)

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

سلام

در قسمت تنظیمات نام فونت رو در یک فایل txt به نام Font ذخیره کنید.

بعد به این صورت در اکتیویتی main بنویسید :

If File.Exists(File.DirInternal,"Font") = False Then	File.WriteString(File.DirInternal,"Font","BYekan")	End If
این همون کد کپی هست دیگه ؟ راستی با چه کدی باید فونت ها رو توی فایل تکست ذخیره کنم ؟ آیا فونت ها توی فایل setting.txt ذخیره می شن یا باید کد بنویسم ؟ راستی با این کارها کاربر هر فونتی رو که انتخاب‌کنه روی متن اعمال می شه دیگه اخه اگه دقت کنین من شش تا فونت دارم اگر لطف‌کنید تغییرات مورد نیاز رو توی کد صفحه مطلب و کد صفحه تنظیمات که فرستادم اعمال‌کنید و بهم بدید که واقعا ممنون می شم این کد کپی رو هم خودم توی صفحه main می زارم خیلی خیلی ممنون
لینک ارسال
به اشتراک گذاری در سایت های دیگر

اره کد کپیه

 

ببین

شما خود فونت رو ، باید دستی کپی کنی توی پوشه Files

اسم یه فونت اولیه رو هم باید بنویسی توی فایل تکست fonttype.txt

توی Sub BtnSave_Click

این کد رو بنویس...

File.WriteString(File.DirInternal,"FontType.txt",Spinner1.SelectedItem)

این کدهم، باید بذاری توی ماژول متنت

lbl.Typeface=Typeface.LoadFromAssets(File.ReadString(File.DirInternal,"FontType.txt") & ".ttf")

کپی رو هم که متوجه شدی :gol:

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

بایگانی شده

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

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

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