Page 1 of 1

Tạo file lưu những thiết đặt của chương trình

Posted: Thu 26/06/2008 5:33 pm
by clarkkent
Thủ thuật: Tạo file lưu những thiết đặt của chương trình
Tác giả: Nguyễn Trung Tín tổng hợp từ diễn đàn cũ của dunghoitoi và NoBi
Mô tả: Tạo file lưu những thiết đặt của chương trình


Cái này thấy ở diễn đàn cũ cũng hay. Làm thử thấy cũng có ích nên đưa lên đây... :D
Ta sẽ tạo ra 1 file *.ini (hay bất kì tên gì cũng được tùy thích ví dụ : *.dat, *.abc ... ) để lưu những thuộc tính của các Control trong
Form để sau khi ta thoát chương trình và mở lại thì những thiết đặt sẽ được nạp lại Form...

Module

Code: Select all

  1. Option Explicit
  2. 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
  3. 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
  4. Declare Function DeleteFile Lib "kernel32.dll" Alias "DeleteFileA" (ByVal lpFileName As String) As Long
  5.  
  6. 'Ghi file
  7. Function WriteIniFile(ByVal sIniFileName As String, ByVal sSection As String, ByVal sItem As String, ByVal sText As String) As Boolean
  8. Dim i As Integer
  9. On Error GoTo sWriteIniFileError
  10. i = WritePrivateProfileString(sSection, sItem, sText, sIniFileName)
  11. WriteIniFile = True
  12. Exit Function
  13. sWriteIniFileError:
  14. WriteIniFile = False
  15. End Function
  16. 'Doc file
  17. Function ReadIniFile(ByVal sIniFileName As String, ByVal sSection As String, ByVal sItem As String, ByVal sDefault As String) As String
  18. Dim iRetAmount As Integer
  19. Dim sTemp As String
  20. sTemp = String$(50, 0)
  21. iRetAmount = GetPrivateProfileString(sSection, sItem, sDefault, sTemp, 50, sIniFileName)
  22. sTemp = Left$(sTemp, iRetAmount)
  23. ReadIniFile = sTemp
  24. End Function


Form cần có 1 Command, TextBox, Label, CheckBox, OptionBox, ComboBox

Code: Select all

  1. Private Sub Command1_Click()
  2. 'Xoa file truoc khi ghi
  3. DeleteFile (App.Path & "\Setting.ini")
  4.  
  5. 'Ghi cac thuoc tinh cua TextBox, Label, CheckBox, OptionBox, ComboBox
  6. WriteIniFile App.Path & "\Setting.ini", "TextBox", "Text", Text1.Text
  7. Label1.Caption = Text1.Text
  8. WriteIniFile App.Path & "\Setting.ini", "Label", "Caption", Label1.Caption
  9. WriteIniFile App.Path & "\Setting.ini", "CheckBox", "Check", Check1.Value
  10. WriteIniFile App.Path & "\Setting.ini", "OptionButton", "Value", Option1.Value
  11. WriteIniFile App.Path & "\Setting.ini", "ComboBox", "Text", Combo1.Text
  12.  
  13. 'Ghi chieu cao va be rong cua Form
  14. WriteIniFile App.Path & "\Setting.ini", "FormHeight", "Height", Me.Height
  15. WriteIniFile App.Path & "\Setting.ini", "FormWidth", "Width", Me.Width
  16.  
  17. 'Ghi vi tri cua Form
  18. WriteIniFile App.Path & "\Setting.ini", "FormTop", "Top", Me.Top
  19. WriteIniFile App.Path & "\Setting.ini", "FormLeft", "Left", Me.Left
  20. End Sub
  21.  
  22. Private Sub Form_Load()
  23. 'Doc cac thuoc tinh cua TextBox, Label, CheckBox, OptionBox, ComboBox
  24. Text1.Text = ReadIniFile(App.Path & "\Setting.ini", "TextBox", "Text", "")
  25. Label1.Caption = ReadIniFile(App.Path & "\Setting.ini", "Label", "Caption", "")
  26. Check1.Value = ReadIniFile(App.Path & "\Setting.ini", "CheckBox", "Check", "0")
  27. Option1.Value = CBool(ReadIniFile(App.Path & "\Setting.ini", "OptionButton", "Value", "False"))
  28. Combo1.Text = ReadIniFile(App.Path & "\Setting.ini", "ComboBox", "Text", "")
  29.  
  30. 'Doc chieu cao va be rong cua Form
  31. Me.Height = ReadIniFile(App.Path & "\Setting.ini", "FormHeight", "Height", "3600")
  32. Me.Width = ReadIniFile(App.Path & "\Setting.ini", "FormWidth", "Width", "4800")
  33.  
  34. 'Doc vi tri cua Form
  35. Me.Top = ReadIniFile(App.Path & "\Setting.ini", "FormTop", "Top", "0")
  36. Me.Left = ReadIniFile(App.Path & "\Setting.ini", "FormLeft", "Left", "0")
  37. End Sub


Có gì sai sót thì các bạn bổ sung nhé... :D

Re: Tạo file lưu những thiết đặt của chương trình

Posted: Wed 15/10/2008 8:30 pm
by miniclip05
Cho mình hỏi câu lệnh này nghĩa là gì vậy:
sTemp = String$(50, 0)
Mình không hiểu nghĩa của nó và cũng không thực thi đc câu lệnh này, bạn xem lại.

Re: Tạo file lưu những thiết đặt của chương trình

Posted: Thu 16/10/2008 10:18 am
by QuangHoa
Hàm String$()
Cú pháp

Code: Select all

  1. Function String$(Num as long, Charater) as string

Tạo một chuổi gồm có Num ký tự Charater
Ví Dụ

Code: Select all

  1. MsgBox String$( 30, "a" )
==> Sẻ cho ra 30 chử "a" liên tiếp.
Chú ý tham số Charater nếu là một số nguyên thì sẻ cho ra Tạo một chuổi gồm có Num ký tự có mã là Charater
Ví dụ

Code: Select all

  1. MsgBox String$( 30, 65 )
==> Sẻ cho ra 30 chử "A" liên tiếp.

Code: Select all

  1. MsgBox String$( 30, 97 )
==> Sẻ cho ra 30 chử "a" liên tiếp.
Còn mã lệnh

Code: Select all

  1. sTemp = String$(50, 0)
  2.  

Sẻ cho ra 50 ký tự NULL. (Ký tự NULL (VbNUllChar) không là cái gì cả) :))
Thật ra thì nó chỉ có một tác dụng duy nhất là khởi tạo vùng nhớ cho biến sTemp vì lúc được khai báo nó chỉ là một cái biến rổng (cho dù đã được khai báo độ dài thì vẫn thế thôi).


Hãy chú ý những câu lệnh đại loại như

Code: Select all

  1. STemp="abc"
Thì VB sẻ dãn bộ nhớ cho biến Stemp rồi đưa giá trị cho nó, điều này thực hiện được vì VB biết rỏ biến sTemp nằm ở đâu trong RAM, nhưng khi truyền biến sTem cho một hàm API thì hàm API đó không thể làm được điều tương tự (Không thể dãn vùng nhớ) nên hàm API không thể gán kết quả cho biến sTemp được.

Re: Tạo file lưu những thiết đặt của chương trình

Posted: Sun 05/01/2014 2:05 pm
by quydo89
bạn ơi với cái thuộc tính enabled của text sao mình không làm theo được .... bạn viết câu thuộc tính enabled của text để lưu hộ mình với thanks bạn nhiều

Re: Tạo file lưu những thiết đặt của chương trình

Posted: Sun 05/01/2014 9:43 pm
by quydo89
mình làm được rồi heh