Hallo Tim,
bei mir geht es ohne Probleme.
Füge mal die Zeilen in ein Modul:
' zunächst die benötigten API-Funktionen
Public 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
Public 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
' INI-Datei
Public MyIniFile As String
Public Sub Main()
MyIniFile = App.Path & "\Controls.ini"
End Sub Der Rest kommt dann in eine Form1:
' Inhalte der Controls speichern
Public Sub SaveCtrlsTemp(ByVal Form As Form, _
ByVal IniSection As String)
Dim Ctl As Control
Dim x As String
Dim value As String
' Alle Controls der übergebenen Form durchlaufen
For Each Ctl In Form.Controls
With Ctl
x = .Name
' Prüfen, ob Steuerelementfeld (Array)
On Local Error Resume Next
x = x & "(" & CStr(.Index) & ")"
On Local Error GoTo 0
End With
value = vbNullString
If TypeOf Ctl Is TextBox Then
' TextBox
value = Ctl.Text
ElseIf TypeOf Ctl Is HScrollBar Or _
TypeOf Ctl Is VScrollBar Then
' horiz./vertik. Scrollbar
value = CStr(Ctl.value)
ElseIf TypeOf Ctl Is OptionButton Or _
TypeOf Ctl Is CheckBox Then
' OptionButton/CheckBox
value = CStr(Ctl.value)
Else
' kann beliebig erweitert werden
End If
' Inhalt/Wert speichern
If value <> vbNullString Then
WritePrivateProfileString IniSection, x, value, MyIniFile
End If
Next
End Sub
' Inhalte der Controls lesen
Public Sub RestoreCtrlsTemp(ByVal Form As Form, _
ByVal IniSection As String)
Dim Ctl As Control
Dim x As String
Dim value As String
Dim lRet As Long
' Alle Controls der übergebenen Form durchlaufen
For Each Ctl In Form.Controls
With Ctl
x = .Name
' Prüfen, ob Steuerelementfeld (Array)
On Local Error Resume Next
x = x & "(" & CStr(.Index) & ")"
On Local Error GoTo 0
End With
value = Space$(256)
lRet = GetPrivateProfileString(IniSection, x, vbNullString, _
value, Len(value), MyIniFile)
If lRet <> 0 Then
value = Left$(value, lRet)
If TypeOf Ctl Is TextBox Then
' TextBox
Ctl.Text = value
ElseIf TypeOf Ctl Is HScrollBar Or _
TypeOf Ctl Is VScrollBar Then
' horiz./vertik. Scrollbar
Ctl.value = CInt(value)
ElseIf TypeOf Ctl Is OptionButton Then
' OptionButton
Ctl.value = CBool(value)
ElseIf TypeOf Ctl Is CheckBox Then
' CheckBox
Ctl.value = CInt(value)
Else
' Kann beliebig erweitert werden
End If
End If
Next
End Sub
Private Sub Form_Load()
' Control-Inhalte wiederherstellen
RestoreCtrlsTemp Me, "Controls Form1"
End Sub
Private Sub Form_Unload(Cancel As Integer)
' Control-Inhalt speichern
SaveCtrlsTemp Me, "Controls Form1"
End Sub Jetzt noch ein paar Textfelder und verschiedene Option- und CheckFelder auf die Form ziehen, kompielieren...
Dann EXE öffnen, was eingeben und auswählen.
EXE schliessen und dann wieder öffnen...
Ol'e... 
Beste Wünsche,
Br an
---
Du stolperst nicht durch die Steine die Dir in den Weg gelegt werden,
sondern durch die Einfallslosigkeit ihnen aus dem Weg gehen zu können. |