adib202
یک شنبه 17 آبان 1388, 21:02 عصر
با سلام 
می خواستم بدونم چطور میشه تغییراتی رو که توی محیط برنامه مثلا تغییر تصویر پس رمینه صورت می گیره،رو ذخیره کنیم تا همیشه وقتی دوباره برنامه باز میشه اون تغییرات اعمال شده باشه و به حالت اصلی برنامه بر نگرده.لطفا اگه میشه همراه با پروژه کمک کنید.
javadt
یک شنبه 17 آبان 1388, 21:20 عصر
شما میتونی موقع بستن برنامه این تغییرات رو توی رجیستری و یا توی یک فایل تکست ذخیره کنی و موقع باز شدن اون ها رو فراخوانی کنی
butterfly8528
یک شنبه 17 آبان 1388, 21:37 عصر
سلام دوست عزیز .
http://barnamenevis.org/forum/showthread.php?t=172812
http://barnamenevis.org/forum/showpost.php?p=761622&postcount=14
موفق باشی .
tnmsoft
دوشنبه 18 آبان 1388, 09:12 صبح
دوست عزير جوابت اينه
 
http://barnamenevis.org/forum/images/attach/zip.gif FormColor.zip (http://barnamenevis.org/forum/attachment.php?attachmentid=39548&stc=1&d=1257743472) (1.6 کیلوبایت)
.:KeihanCPU:.
دوشنبه 18 آبان 1388, 11:56 صبح
خب اوّل یک مثال میزنم و  بعد میرم سره آموزش تا بهتر یاد بگیرید.
  
یک پروژه جدید باز کنید و  یک Command Button و یک  TextBox  بذارید تو فرمتون و کد زیر رو تو قسمت جنرال فرمتون کپی کنید :
  
Private Sub  Command1_Click()
     SaveSetting App.Title, "Setting", "Value", Text1.Text
End  Sub
Private Sub Form_Load()
    Text1.Text =  GetSetting(App.Title, "Setting", "Value", "Hello")
End Sub
  
برنامه رو اجرا کنید و هر  چی دلتون میخواد تو TextBox وارد  کنید و بعد کلید Command1 رو  بزنید و از برنامه خارج بشید. حالا اگه دوباره برنامه رو اجرا کنید میبینید متنی که  دفعه قبل وارد کرده بودید سره جاشه و پاک نشده !
  
حالا بریم سره آموزش  :
  
دستوات SeveSetting ،  GetSetting ،  DeleteSetting و  GetAllSettings از  توابع خود ویژوال بیسیک هستند و نیازی به فراخوانی اونا نیست. طرز کار این دستورات  خیلی ساده ست، این دستورات فقط برای ثبت و بازیابی تنظیمات استفاده میشن و هیچ کار  دیگه ای انجام نمیدن، در واقع محدوده عملیات این دستورات در رجیستری محدود به این  آدرس است : 
  
HKEY_CURRENT_USER\Software\VB  and VBA Program Settings\نام برنامه\عملیات\اطّلاعات
  
یعنی شما با این دستوات  نمیتونید به بخشهای دیگه رجیستری دسترسی داشته باشید. شکل کلّی این دستورات به صورت  زیره :
  
Sub  SaveSetting(AppName As String, Section As String, Key As String, Setting  As String)
Function GetSetting(AppName As String, Section As String,  Key As String, [Default]) As String
Function GetAllSettings(AppName As  String, Section As String)
Sub DeleteSetting(AppName As String,  [Section], [Key])
  
SevaSetting :  این دستور بسیار ساده ست فکر کنم با توضیحات بالا دیگه نیازی به آموزش نیست، ببینید  در واقع این دستور اولین کاری که میکنه، یک پوشه که بیانگر نام برنامه ست  (AppName) در  آدرسی که گفتم میسازه. بعدش میره سراغ پوشه بعدی (Section)  یعنی عملیاتی که قراره انجام بدیم مثلاً اگر قراره که موقعیّت فرم رو ذخیره کنیم  بهترین نامی که میتونیم برای این عملیات بذاریم Position است  و بعد از اون هم کلید یا همون مقداری که باید ذخیره بشه مثل Top. به  دستور زیر توجّه کنید :
  
SaveSetting "Project1",  "Position", "Top", Me.Top
  
دستور فوق باعث ساخته شدن  آدرس زیر میشه (قسمت پر رنگ) :
  
HKEY_CURRENT_USER\Software\VB  and VBA Program Settings\Project1\Position\
  
که در اون آدرس هم، کلید یا  همون فایل Top قرار  داره که حاوی یک عدد است (موقعیّت بالای فرم). به این ترتیب ما تونستیم با این  دستور اطّلاعاتی (موقعیّت قرم) رو در رجیستری ذخیره کنیم. حالا برای بدست آودرن این  اطّلاعات باید از دستور GetSetting  استفاده کنیم.
  
GetSetting :  این دستور هم خیلی ساده ست. شما باید آدرس و کلید مورد نظرتون رو تعیین کنید تا این  تابع مقدار کلید رو برگردونه. به دستور زیر توجّه کنید :
  
Me.Top =  GetSetting("Project1", "Position", "Top", "2000")
  
دستور فوق اطلاعات داخله  فایله Top رو  برمیگردونه و به فرم انتصاب میده. امّا اون عدد 2000 چیه؟  خب باید بگم که اون مقدار پیش فرضه تا اگه کلید Top در  مسیر داده شده وجود نداشت و نتونست مقداری رو برگردونه، از مقدار پیش فرض استفاده  کنه تا دچار خطا نشه، اگه از این دستور در برنامه استفاده کنید و کلیدی رو که تعیین  کردید یافت نشه مثل زمانی که برای اولین بار برنامه رو اجرا میکنید، با پیغام خطا  روبرو خواهید شد.
  
DeleteSetting :  این دستور برای پاک کردنه یک کلید (فایل) یا پوشه از مسیر داده شده ست. به عنوان  مثال اگه شما بخواید کلید Top رو  پاک کنید باید از دستور زیر استفاده کنید :
  
     DeleteSetting "Project1", "Position", "Top"
  
در دستور بالا کلید  Top حذف  میشه و اگه کلید Top رو  تعیین نکنیم (DeleteSetting "Project1",  "Position")  پوشه Position پاک  میشه و اگه پوشه Position رو  هم تعیین نکنیم (DeleteSetting  "Project1")  پوشه Project1 حذف  میشه. و مسلّماً در صورتی که فایل یا پوشه یافت نشه با پیغام خطا مواجه میشید. تا  اینجا که خیلی ساده امّا تابع GetAllSettings کمی  فرق میکنه.
  
GetAllSettings :  این دستور کمی با دستورات قبلی تفاوت داره. اول با یک مثال شروع میکنم :
  
Private Sub  Form_Load()
     Me.AutoRedraw = True
    Dim MySettings As Variant,  intSettings As Integer
     
    SaveSetting  "MyApp", "Startup", "Number1", 50
    SaveSetting "MyApp",  "Startup", "Number2", 22
     SaveSetting "MyApp", "Startup", "Number3", 36
    SaveSetting "MyApp",  "Startup", "Number4", 197
     SaveSetting "MyApp", "Startup", "FName", "Amir"
    SaveSetting "MyApp",  "Startup", "LName", "Amiri"
    SaveSetting "MyApp",  "Startup", "Message", "Hello My Friend"
    
    MySettings =  GetAllSettings(appname:="MyApp", section:="Startup")
    
    For intSettings =  LBound(MySettings, 1) To UBound(MySettings, 1)
         Print MySettings(intSettings, 0) & "   =   " & MySettings(intSettings,  1)
    Next  intSettings
         
     DeleteSetting "MyApp"
End Sub
  
                           
            
ستون  0
            
ستون    1
               
سطر 0
            
Number1
            
50
               
سطر 1
            
Number2
            
22
               
سطر 2
            
Number3
            
36
               
سطر 3
            
Number4
            
197
               
سطر 4
            
FName
            
Amir
               
سطر 5
            
LName
            
Amiri
               
سطر 6
            
Message
            
Hello…
  خب این مثال میتونه کمک خیلی خوبی باشه. در  واقع تابع GetAllSetting همون  کاری رو میکنه که تابع GetSetting  میکرد، با این تفاوت که در GetAllSettings کلید  تعیین نمیشه بلکه پوشه ای که کلیدها در اون قرار دارن تعیین میشه و همچنین مقدار  برگشتی هم یک مقدار از نوع متنی نیست بلکه آرایه ای دو بعدی از داده های موجود در  پوشه ست که نام کلید در ستون 0 و مقدار کلید در ستون 1 قرار میکیره. میبینید که در  ابتدا مقادیری رو با نامهای متفاوت در رجیستی ذخیره کردیم و بعد تمام اطّلاعات ذخیه  شده رو با یک دستور درون متغیّر MySettings  ذخیره کردیم، امّا دسترسی به این اطّلاعات چطور امکان پذیره؟
  
 شکل بالا ساختار متغیّر MySettings رو  نشون میده :
  
متغیّر MySettings که  از نوع Variant  تعریف شده، بوسیله تابع GetAllSettings به  شکلی که میبینید مقدار دهی شده. حالا اگه به نام کلید نیازی ندارید میتونید فقط از  ستون 1 که مقدارها درونش هستن استفاده کنید. 
 
در این مرحله اگه با آرایه  ها آشنا باشید کار کردن با این تابع براتون آسونه. موفق باشید.
adib202
پنج شنبه 21 آبان 1388, 14:53 عصر
میشه نحوه ذخیره تصویر پس زمینه رو هم توضیح بدین؟ممنونم
butterfly8528
پنج شنبه 21 آبان 1388, 17:24 عصر
میشه نحوه ذخیره تصویر پس زمینه رو هم توضیح بدین؟ممنونم 		
منظورتون رو واضح تر بگید .
adib202
پنج شنبه 21 آبان 1388, 18:38 عصر
منظورم اینه که چطور میشه وقتی یه تصویری رو توی یه فرم به عنوان تصویر پس زمینه تغییر میدیم اون تصویر روی فرم بمونه مثل حالت تغییر رنگ که دوستون Tnmsoft گفتن.
.:KeihanCPU:.
جمعه 22 آبان 1388, 00:21 صبح
ذخیره کردن تصویر در اینجا میتونه دو منظور داشته باشه
اگه میخوای کل تصویر رو ذخیره کنی میتونی از بانک اطلاعاتی استفاده کنید
اگر هم میخواید مثلا تصویری که کاربر انتخاب کرده رو بعدا دوباره نشون بدید بهتره مسیر عکس رو ذخیره کنید (به روشی که در بالا گفتم)
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.