This
is a straightforward demo showing how, using only VB code, you can save
the current selections made from a set of combos between application
sessions.
The principle is simple - a User Defined Type is declared with a single
Integer variable for each combo on the form whose last selection you want
to save. The UDT is written and read to a data file, with each
variable in the UDT holding the last-selected value for each combo.
On
load, the UDT is read as a Random Access file, and the index values are
set in each of the combos on the form. On unload, the current values are
saved, again using the UDT and the Random Access file once the current
index has been assigned to the UDT variables.
The Random Access file approach is also a viable method to save the actual
contents of the combo between sessions, however doing so would be easier
if one did not attempt to save both the combo data, and the last
selection, in the same file. |
Option Explicit
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Copyright ©1996-2011 VBnet/Randy Birch, All Rights Reserved.
' Some pages may also contain other copyrights by the author.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Distribution: You can freely use this code in your own
' applications, but you may not reproduce
' or publish this code on any web site,
' online service, or distribute as source
' on any media without express permission.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Type ComboIndexSelections
C1 As Integer
C2 As Integer
C3 As Integer
'...etc for as many combos as needed
End Type
Private Sub Form_Load()
With Combo1
.AddItem "a"
.AddItem "b"
.AddItem "c"
.AddItem "d"
.AddItem "e"
.AddItem "f"
.AddItem "g"
End With
With Combo2
.AddItem "a"
.AddItem "b"
.AddItem "c"
.AddItem "d"
.AddItem "e"
.AddItem "f"
.AddItem "g"
End With
With Combo3
.AddItem "a"
.AddItem "b"
.AddItem "c"
.AddItem "d"
.AddItem "e"
.AddItem "f"
.AddItem "g"
End With
'Load existing data. If file does not
'exist, it is created, and the values
'will = 0 and the first list item will
'be selected)
Dim hFile As Integer
Dim CIndex As ComboIndexSelections
hFile = FreeFile
Open "comboindex.dat" For Random Access Read As #hFile Len = Len(CIndex)
Get #hFile, 1, CIndex
Close #hFile
Combo1.ListIndex = CIndex.C1
Combo2.ListIndex = CIndex.C2
Combo3.ListIndex = CIndex.C3
End Sub
Private Sub Command1_Click()
Unload Me
End Sub
Private Sub Form_Unload(Cancel As Integer)
Dim hFile As Integer
Dim CIndex As ComboIndexSelections
CIndex.C1 = Combo1.ListIndex
CIndex.C2 = Combo2.ListIndex
CIndex.C3 = Combo3.ListIndex
hFile = FreeFile
Open "comboindex.dat" For Random Access Write As #hFile Len = Len(CIndex)
Put #hFile, 1, CIndex
Close #hFile
End Sub
|