سلام . خواستم ببینم میشه بدون استفاده از بانک اطلاعاتی تغییرات یک فرم رو مثل تغییرات option ها رو ذخیره کرد؟
Printable View
سلام . خواستم ببینم میشه بدون استفاده از بانک اطلاعاتی تغییرات یک فرم رو مثل تغییرات option ها رو ذخیره کرد؟
میتونی از رجیستری استفاده کنی.
درود به شما دوست عزیز با کدهای زیر میتونید تغییرات optionها رو درون یک فایل.ini ذخیره و باز یابی کنی.
این کدو داخل ماژول بنویس:
Option Explicit
Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
Declare Function GetPrivateProfileSection Lib "kernel32" Alias "GetPrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Function GetProfile(lpAppName$, lpKeyName$, lpDefault, lpFileName$)
Dim lpReturnString$, nSize%, Valid%
lpReturnString$ = Space$(128)
nSize% = Len(lpReturnString$)
Valid% = GetPrivateProfileString(ByVal lpAppName$, ByVal lpKeyName$, ByVal lpDefault, ByVal lpReturnString$, ByVal nSize%, ByVal lpFileName$)
GetProfile = Left$(lpReturnString$, Valid%)
End Function
Sub WriteProfile(lpAppName$, lpKeyName$, lpString$, lpFileName$)
Dim Valid%
Valid% = WritePrivateProfileString(lpAppName$, lpKeyName$, lpString$, lpFileName$)
End Sub
این هم مثال برای استفاده:
Dim INIFile As String ' Variable for IN-file
Dim bol_a As Boolean
Private Sub Form_Load()
INIFile = App.Path & "\Settings.ini"
If GetProfile("Settings", "bol_a", "", INIFile) <> "" Then
Check1.Value = GetProfile("Settings", "bol_a", "", INIFile)
End If
If GetProfile("Settings", "with", "", INIFile) <> "" Then
Me.Width = GetProfile("Settings", "with", "", INIFile)
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
WriteProfile "Settings", "with", Me.Width, INIFile
WriteProfile "Settings", "bol_a", Check1.Value, INIFile
End Sub
در اخر اینکه باید بصورت دستی فایلSettings.ini را درکنار برنامه بسازی.(برای این مثال)
دوست عزیز چه جوری باید فایل Settings.ini رو بسازم؟
اگه میخوای یه چیزی مثل همون setting.ini درست کنی و توش تنظیمات رو ذخیره کنی و بخونی ازش کدهای پایین به دردت میخوره
اول یه Madule درست کن و توش این کد رو بنویس:
Type Settings
Op1 As String
Op2 As Integer
Op3 As Long
End Type
با این کد میتونی رکورد Settings با فیلدهای Op1 و Op2 و Op3 بسازی
که شما باید بجای Op1 و ... تنظیمات مورد نظر خودتو مشخص کنی
بعد توی کدهای فرم خودت برای اختصاص خونه های حافظه به رکوردی که ساختی از کد پایین استفاده که (میتونی توی فرم لود استفاده کنی)
Dim A As Settings
حالا وقتی میخوای ذخیره کنی از کد پایین استفاده کن
Open PATH For Random As #1
A.Op1 = ...
A.Op2 = ...
A.Op3 = ...
...
Put #1, 1, A
Close #1
PATH : آدرس فایل توی هارد
بعد از Open کردن هم میتونی تمام فیلدهای که برای رکوردت توی کد قبلی ساخته بودی مقدار دهی کنی [که شما اینجا فیلدهایی که ساختی با مقدارهای مورد نظر مقدار دهی کن]
با دستور Put شما رکوردتون رو ذخیره کردید و به دستور Close فایل رو از برنامه بستید.
حالا برای خوندن تنظیمات از کد زیر استفاده کن:
Open PATH For Random As #2
Get #2, 1, A
... = A.Op1
... = A.Op2
... = A.Op3
...
Close #2
این دفعه شما با دستور Get همون رکورد رو به خانه ی A وارد کردید
حالا همون مقدارها دوباره سرجای خودشون قرار دارن و میتونی ازشون هرجایی استفاده کنی
اگه توی برنامت لازمه که به تعداد زیاد ذخیره و لود کنی دوتا متغیر بساز
مثلاً A برای ذخیره کردن و B برای لود کردن
Dim A As Settings
Dim B As Settings
اومیدوارم جواب گرفته باشی