PDA

View Full Version : سوال: تغییر skin



ali-a2
پنج شنبه 15 تیر 1391, 15:42 عصر
با سلام

میخواستم بپرسم چجوری وقتی یک اسکین عوض میشه(توسط کاربر) دفعات بعدی که کاربر برنامه اجرا میکنه همون اسکینی ک انتخاب شده رو کاربر ببینه .

با تشکر

arenaw
پنج شنبه 15 تیر 1391, 16:35 عصر
سلام
میتونی از SaveSetting و GetSetting استفاده کنی
این اسکینی که میگی فقط میتونی یه مقدار داشته باشه؟
مثلا مقدار 1 2 یا 3 داشته باشه
یا اینکه شامل رنگ کنترل ها و فونتشونو ایناست؟

ho3ein.3ven
پنج شنبه 15 تیر 1391, 17:17 عصر
سلام . منظورت از اسکین همین کامپوننت actskin4.ocx اینه . اگه اینه که می تونی برای هر اسکین یک شماره بزاری و تو یه فایل ذخیرش کنی و هر بار که برنامه خواست اجرا بشه اون شماره رو از فایل بخونه و بعد همون اسکین رو لود کنی

سید حمید حق پرست
پنج شنبه 15 تیر 1391, 18:05 عصر
سلام علیکم

اگر actskin4.ocx رو میگید من 16 تا اسکین داشتم که براتون نوشتم و میتونید دانللود کنید
کدش خیلی راحته 4 خطه فقط . بنده برای اینکه همون اسکین که کاربر انتخاب کرده رو برای دفعه بعد که اجرا کنه و همون سکین باشه از فایل txt استفاده کردم شما اگر خواستید از رجستری ویندوز استفاده کنید

موفق باشید


یا علی (ع)

محسن واژدی
پنج شنبه 15 تیر 1391, 18:43 عصر
سلام علیکم
دوستان راه حل را گفتند، برای ذخیره تنظیمات پوسته در ریجستری میتوانید از کد زیر هم استفاده کنید، برای استفاده این کد را در ماژول کد کپی کنین:
Public Function SaveLoadSkin(eStatus As SaveLoadSkinConstants, Optional sSkinSelNam$, Optional sDefaultSkin$) As String
Dim sSN$
If eStatus = slsSave Then
If sSkinSelNam$ > "" Then SaveSetting App.Title, "Skins", "SelSkinName", sSkinSelNam$
SaveLoadSkin = sSkinSelNam$
Else
sSN$ = GetSetting(App.Title, "Skins", "SelSkinName", sDefaultSkin$)
SaveLoadSkin = sSN$
'========================================
'== LOAD SKIN COMMANDS
'========================================
End If
End Function


برای مثال، برای ذخیره آخرین پوسته:
Private Sub Command1_Click()
SaveLoadSkin slsSave, "sNiceBlue"
End Sub

برای بازیابی نام پوسته:
Private Sub Form_Load()
Call SaveLoadSkin(slsLoad, , "OrangeSk")
End Sub

چند نکته در رابطه با تابع بالا:


تابع SaveLoadSkin دارای دو آرگومان هست:

sSkinSelNam: زمانی که مایل به ذخیره نام پوسته فعلی (slsSave) در ریجستری هستیم نام آنرا با قرار دادن در این آرگومان به تابع SaveLoadSkin ارسال میکنیم که در نمونه بالا sNiceBlue نام پوسته ای است که قصد ذخیره آنرا داریم (آرگومان sDefaultSkin فقط برای زمان بارگذاری پوسته است و در اینجا استفاده ای ندارد)
sDefaultSkin: نام پوسته پیش فرض را مینویسیم تا در زمان نبود تنظیمات در ریجستری این نام به عنوان پوسته پیش فرض برگشت داده شود، که در نمونه شماره 2 بالا OrangeSk نام پوسته پیش فرض ما هست


دستوراتی که برای اعمال پوسته بارگذاری شده هستند را جایگزین کامنت "LOAD SKIN COMMANDS" در تابع بالا کنید



اگه از ActiveSkin استفاده میکنید، علاوه بر 16 پوسته ای که آقای حق پرست مربوط به این کامپوننت معرفی کردند، حدود 40 پوسته را هم میتوانید از پست زیر دریافت کنید:
http://barnamenevis.org/showthread.php?270294#post1364676 (http://barnamenevis.org/showthread.php?270294-%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-40-%D8%A7%D8%B3%DA%A9%DB%8C%D9%86-%D8%B2%DB%8C%D8%A8%D8%A7-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C%D8%AA%D8%A7%D9%86-%28Active-Skin%29&p=1364676&viewfull=1#post1364676)


موفق باشید

سید حمید حق پرست
پنج شنبه 15 تیر 1391, 19:39 عصر
سلام علیکم
با اجازه ی جان اقای واژدی
یک روش دیگر هم برای ذخیره در رجستری وجود میباشد . فکر کنم این روش برای این دوست عزیز راحتتر باشد (استفاده از GetSetting و SaveSetting)
برای استفاده کدهای زیر را جایگزین کدهای داخل سورسی که قرار دادم بکنید :

Dim skin As String

Private Sub Command3_Click()
On Error Resume Next
If skin = 16 Then skin = 0
skin = skin + 1
Skin1.LoadSkin App.Path + "\skin\" + skin + ".skn"
Skin1.ApplySkin Me.hWnd
SaveSetting "vb6skinforform", "vb6skin", "skin", skin
End Sub

Private Sub Form_Load()
On Error Resume Next
skin = GetSetting("vb6skinforform", "vb6skin", "skin")
adr = App.Path + "\skin\" + skin + ".skn"
Skin1.LoadSkin adr
Skin1.ApplySkin Me.hWnd
End Sub
اگر در هرجای کد توضیح خواستید همینجا بگید تا توضیح بدهم

موفق باشید


یا علی (ع)

Behnam.Nikoo
پنج شنبه 15 تیر 1391, 19:56 عصر
این به کامپونت دیگس ولی خیلی به درد می خوره علاوه بر اون کاربر می تونه خودش اون رو طراحی کنه و یا اون رو

عوض کنه در صورت بسته شدن برنامه هم اسکین تغییر نمی کنه.اول کامپونت رو بارگزاری کنید و بعد برنامه رو اجرا

کنید.


skin.rar - 816.7 Kb (http://uplod.ir/f14pufvplpwo/skin.rar.htm)

سید حمید حق پرست
پنج شنبه 15 تیر 1391, 20:52 عصر
این به کامپونت دیگس ولی خیلی به درد می خوره علاوه بر اون کاربر می تونه خودش اون رو طراحی کنه و یا اون رو

عوض کنه در صورت بسته شدن برنامه هم اسکین تغییر نمی کنه.اول کامپونت رو بارگزاری کنید و بعد برنامه رو اجرا

کنید.

به نظر بنده این اسکین اصلا خوب نیست استفاده کنید . چون فقط فرم رو تغیر شکل میدهد و دیگر شئ ها رو تغییر نمیدهد . پس چه لازم ازش استفاده کنیم خودمون راحت میتونیم همچین اسکینی رو با خود وی بی و بدون کامپوننت درست کنیم . خودم که در بیشتر برنامه هام که نوشتم از اسکین استفاده نکردم و میگم به نظر بنده اگر بخوام خودم استفاده کنم از actskin4.ocx استفاده میکنم به شما هم همین پیشنهاد رو میدهم
خیلی راحت هم میتونید فایل یا فایلهای اسکین رو برای اینکه کنار برنامه نباشه در ریسورس سورستان قرار بدهید تا کنار برنامه نباشد

موفق باشید


یا علی (ع)

ali-a2
پنج شنبه 15 تیر 1391, 22:03 عصر
واقعا ممنونم از همه ی دوستان ، همه ی مشکلات بدون هیچ ابهامی رفع شد .

فقط یک سوال ، اگر از اسکین های دیگر مثلا Codejock استفاده شه ، بازم به همین گونه میشه ؟

با تشکر

محسن واژدی
پنج شنبه 15 تیر 1391, 23:20 عصر
فقط یک سوال ، اگر از اسکین های دیگر مثلا Codejock استفاده شه ، بازم به همین گونه میشه ؟

بله، تنظیمات ذخیره/بارگذاری همین است، فقط کدها و فایل های اسکین کدجاک را جایگزین میکنیم

موفق باشید