PDA

View Full Version : سوال: ذخیره رنگ و فونت (کسی میدونه چرا این دسورات کار نمیکنه؟)



aftabeshargh
پنج شنبه 18 اسفند 1390, 23:21 عصر
سلام
از دستورات زیر تو یه برنامه کوچیک استفاده کردم و الان کار میکنه " اما دقیقا همین دستورات رو در یه فرم پروژه جدید کپی کردم فقط قسمت فونت جواب میده و رنگ نه
یعنی بعد از انتخاب فونت و رنگ برای یک لیبل و بستن برنامه و اجرای مجدد برنامه فقط فونت رو برای لیبل فراخوانی میکنه نه رنگ رو

توی دکمه انتخاب فونت :

FontDialog1.ShowDialog()
lblmo.Font = FontDialog1.Font

SaveSetting("ghalammo", "Font", "Fontname", lblmo.Font.Name)
SaveSetting("ghalammo", "Font", "Fontsize", lblmo.Font.Size)

دکمه انتخاب رنگ :

ColorDialog1.ShowDialog()
lblmo.ForeColor = ColorDialog1.Color

SaveSetting(My.Application.Info.ProductName, "Colormo", "R", lblmo.ForeColor.R)
SaveSetting(My.Application.Info.ProductName, "Colormo", "G", lblmo.ForeColor.G)
SaveSetting(My.Application.Info.ProductName, "Colormo", "B", lblmo.ForeColor.B)

و لود فرم :


Try
Dim Fontname As String = GetSetting("ghalammo", "Font", "Fontname", "")
Dim Fontsize As Byte = GetSetting("ghalammo", "Font", "FontSize", "")
lblmo.Font = New System.Drawing.Font(Fontname, Fontsize)

Catch ex As Exception

End Try
Try
Dim Fontnamef As String = GetSetting("ghalamf", "Font", "Fontname", "")
Dim Fontsizef As Byte = GetSetting("ghalamf", "Font", "FontSize", "")
lblfilm.Font = New System.Drawing.Font(Fontnamef, Fontsizef)
Catch ex As Exception

End Try


Dim R, G, B As String

R = GetSetting(My.Application.Info.ProductName, "Colorj", "r", "")
G = GetSetting(My.Application.Info.ProductName, "Colorj", "g", "")
B = GetSetting(My.Application.Info.ProductName, "Colorj", "b", "")
'lblj.ForeColor = Color.FromArgb(R, G, B)

If GetSetting(My.Application.Info.ProductName, "Colormo", "r", "") = "" Then SaveSetting(My.Application.Info.ProductName, "Colormo", "r", lblmo.ForeColor.R)
If GetSetting(My.Application.Info.ProductName, "Colormo", "g", "") = "" Then SaveSetting(My.Application.Info.ProductName, "Colormo", "g", lblmo.ForeColor.G)
If GetSetting(My.Application.Info.ProductName, "Colormo", "b", "") = "" Then SaveSetting(My.Application.Info.ProductName, "Colormo", "b", lblmo.ForeColor.B)

' Dim rr, gg, bb As Integer
R = GetSetting(My.Application.Info.ProductName, "Colormo", "r", "")
G = GetSetting(My.Application.Info.ProductName, "Colormo", "g", "")
B = GetSetting(My.Application.Info.ProductName, "Colormo", "b", "")
lblmo.ForeColor = Color.FromArgb(R, G, B)

If GetSetting(My.Application.Info.ProductName, "Colorfi", "r", "") = "" Then SaveSetting(My.Application.Info.ProductName, "Colorfi", "r", lblfilm.ForeColor.R)
If GetSetting(My.Application.Info.ProductName, "Colorfi", "g", "") = "" Then SaveSetting(My.Application.Info.ProductName, "Colorfi", "g", lblfilm.ForeColor.G)
If GetSetting(My.Application.Info.ProductName, "Colorfi", "b", "") = "" Then SaveSetting(My.Application.Info.ProductName, "Colorfi", "b", lblfilm.ForeColor.B)

' Dim rr, gg, bb As Integer
R = GetSetting(My.Application.Info.ProductName, "Colorfi", "r", "")
G = GetSetting(My.Application.Info.ProductName, "Colorfi", "g", "")
B = GetSetting(My.Application.Info.ProductName, "Colorfi", "b", "")
lblfilm.ForeColor = Color.FromArgb(R, G, B)

فرید نجفلو
پنج شنبه 18 اسفند 1390, 23:44 عصر
دوست عزیز شما چرا از Settings برنامتون استفاده نمی کنید
Settings از این نوع داده ها به خوبی پشتیبانی میکنه یعنی شما می تونید با یک خط کل مشخصات فونت رو ذخیره و بازیابی کنید
مثال:
My.Settings.lblFont=lbl.Font
My.Settings.Save
بازیابی:
lbl.Font=My.Settings.lblFont
این تاپیک رو بخونید:
آموزش Settings (حتما بخونید) (http://barnamenevis.org/showthread.php?331456-آموزش-Settings-(حتما-بخونید))

aftabeshargh
جمعه 19 اسفند 1390, 10:50 صبح
سلام
فقط برای فونت جواب میده " رنگ رو ذخیره نمیکنه
My.Settings.rlist = lbllist.ForeColor
My.Settings.Save()
تو لود :
lbllist.ForeColor = My.Settings.rlist

فرید نجفلو
جمعه 19 اسفند 1390, 11:22 صبح
سلام
وقتی می خوای Setting مربوط به رنگ رو تعیین کنی از آخر لیست Browse رو انتخاب کن تو پنجره باز شده یه تکست باکس هست توش بنویس System.Drawing.Color و تایید کن البته می تونی تو لیست درختی هم بگردی پیداش کنی

یه راه دیگه اینکه مقدار ARGB رو که یه مقدار Integer هست ذخیره کنی
برای ذخیره:

My.Settings.rlist = lbllist.ForeColor.ToArgb
My.Settings.Save()

بازیابی:

lbllist.ForeColor=Color.FromArgb(My.Settings.rlist )

aftabeshargh
جمعه 19 اسفند 1390, 11:47 صبح
بعد از کلیک و انتخاب روی رنگ این خطا رو میده

aftabeshargh
جمعه 19 اسفند 1390, 11:55 صبح
برای ARGB باید settings رو شبیه عکس زیر برای rlist تنظیم کنم ؟

Hybrid
جمعه 19 اسفند 1390, 12:08 عصر
سلام ، یک نمونه واستون نوشتم درست کار میکنه :

فرید نجفلو
جمعه 19 اسفند 1390, 12:10 عصر
احتمالا یه جایی اشتباه کردین
چون من تستش کردم
شما وقتی System.Drawing.Color رو انتخاب کردی باید مستیم رنگ رو داخل اون ذخیره کنی(مثلا my.setting.BkColor=Me.BackColor)
و وقتی می خوای بخونی باز مثل رنگ می خونی یعنی me.BackColor=my.setting.BkColor
همین کار رو کردی؟
و در ضمن Argb یه مقدار Integer هست نه UInteger
u اول Usign یعنی بدون علامته به این معنی که عداد منفی رو قبول نمی کنه در عوض طرف مثبت دو برابر ظرفیتش بیشتر می شه

aftabeshargh
جمعه 19 اسفند 1390, 13:03 عصر
چون از skin استفاده کرده بودم ForeColor تغییر نمیکرد :خجالت:
نمیشه یه بلایی سر این skin آورد تا ForeColor رو تحت الشعاع قرار نده ؟

فرید نجفلو
جمعه 19 اسفند 1390, 13:25 عصر
کومپوننت بهتر از این پیدا نکردی؟!!
فکر کنم با VS2010 دات نت 4 هم سازگار نیست
من حدود سه چهار سال پیش می خواستم از این استفاده کنم که نشد
الانم رو سیستم من فعال نمیشه(تغییر فریم ورک هم دادم)
بگردی بهتر از این پیدا می شه