Avatar billede stry Nybegynder
02. september 2003 - 10:12 Der er 13 kommentarer og
1 løsning

Gem formularinstillinger

Jeg har en "opsætningsformular" hvor brugeren kan bestemme instillingerne for afviklingen af min app.
På formularen er en række forskellige kontroller såsom CheckBox'e, Combobox'e, TextBox'e osv.
Jeg vil gerne have gemt instillingerne for de enkelte kontroller i en txt-fil og så hente dem på Form_load.

Eks:
Brugeren har valgt følgende:
chkBox1 = 1 (afkrydset)
txtBox1 = "C:\Temp\"
cboBox1 = "Lørdag"

Næste gang formularen åbnes skal det være med de indstillinger.

Hvordan skal den skæres?

På forhånd tak :-)
Avatar billede stry Nybegynder
02. september 2003 - 10:22 #1
Jeg har selv lavet denne:

Private Sub SaveSetting()

Dim CtrlNr As Integer, CtrlName As String, CtrlStatus As Variant
Dim FilNr As Integer, FilName As String

FilNr = FreeFile
FilName = "E:\SettingsTest.txt"

Open FilName For Output As #FilNr

CtrlNr = 1
CtrlName = "chkToemKurv"
CtrlStatus = Me.chkToemKurv

Write #FilNr, CtrlNr, CtrlName, CtrlStatus
Close FilNr
End Sub

Private Sub Form_Load()
Me.Caption = App.Path

Dim CtrlNr As Integer, CtrlName As String, CtrlStatus As Variant
Dim FilNr As Integer, FilName As String

FilNr = FreeFile
FilName = "E:\SettingsTest.txt"

Open FilName For Input As #FilNr
Input #FilNr, CtrlNr, CtrlName, CtrlStatus
Me.chkToemKurv = CtrlStatus
Close FilNr
End Sub

Men jeg har 15-20 kontroller, så jeg skal bruge en løsning som kan håndtere mange kontroller.
Avatar billede lokespas Nybegynder
02. september 2003 - 10:30 #2
eller du kan f.eks gemme det i en init file, den er nem at komme til.
men nogle API kald
-------------------
Private Declare Function WritePrivateProfileString Lib "kernel32.dll" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Long

Dim lRet As Long
Dim chkBoxvalue As String
Dim InitFileName As String

InitFileName = App.Path + "\formopsætning.ini"

chkBoxvalue = "1"

lRet = WritePrivateProfileString("Allgemein", "chkBox1", chkBoxvalue InitFileName)
---------------------------------
Private Declare Function GetPrivateProfileString Lib "kernel32.dll" 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


Dim chkBoxvalue As String
Dim InitFileName As String
Dim lRet As Long

InitFileName = App.Path + "\formopsætning.ini"

chkBox1 = Space(100)

lRet = GetPrivateProfileString("Allgemein", "chkBox1", "", chkBoxvalue, Len(chkBoxvalue ), InitFileName)

chkBoxvalue = Left(chkBoxvalue, lRet )

chkBox1.value = clng(chkBoxvalue)
Avatar billede stry Nybegynder
02. september 2003 - 10:36 #3
>>lokespas
Jeg er rimelig ny i det her game så kan du lave et eksempel som indkluderer de 3 kontroller fra mit eks. i spørgsmålet :-)
Avatar billede lokespas Nybegynder
02. september 2003 - 10:54 #4
det kan jeg da godt :-)
Avatar billede stry Nybegynder
02. september 2003 - 10:56 #5
Tak ;-))
Avatar billede lokespas Nybegynder
02. september 2003 - 11:27 #6
'øverest oppe i Form modulet sætter du API´en, de skal "Declares" som Private
'når det er i form mondulet "public" skal de være når de er i et modul.
Private Declare Function WritePrivateProfileString Lib "kernel32.dll" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Long
Private Declare Function GetPrivateProfileString Lib "kernel32.dll" 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
Avatar billede lokespas Nybegynder
02. september 2003 - 11:27 #7
Private Sub Form_Load()

'I form load skal vi hente de gamle indstillinger
'dem henter vi med "GetPrivateProfileString" fra filen >formopsætning.ini<
'I samme dir som dit program -> App.Path (application.path)

Dim InitFileName As String
InitFileName = App.Path + "\formopsætning.ini"

Dim lRet As Long

'----------------------------------------
'chechkbox
'----------------------------------------
Dim chkBox1value As String
'her sætter vi strengen til at være 100 spaces
chkBox1value = Space(100)

lRet = GetPrivateProfileString("Allgemein", "chkBox1", "", chkBox1value, Len(chkBox1value), InitFileName)

' her fjerner vi de overskydene spaces så vi kun har hvad vi skal bruge
chkBox1value = Left(chkBox1value, lRet)

If chkBox1value <> "" Then
chkBox1.Value = chkBox1value
End If
'----------------------------------------
'textbox
'----------------------------------------
Dim txtBox1value As String
'her sætter vi strengen til at være 100 spaces
txtBox1value = Space(100)

lRet = GetPrivateProfileString("Allgemein", "txtBox1", "", txtBox1value, Len(txtBox1value), InitFileName)

' her fjerner vi de overskydene spaces så vi kun har hvad vi skal bruge
txtBox1value = Left(txtBox1value, lRet)

'skriver værdien til textboxen
If txtBox1value <> "" Then
txtBox1.Text = txtBox1value
End If

'-----------------------------------------
'combobox
'-----------------------------------------
Dim cboBox1value As String
'her sætter vi strengen til at være 100 spaces
cboBox1value = Space(100)

lRet = GetPrivateProfileString("Allgemein", "cboBox1", "", cboBox1value, Len(cboBox1value), InitFileName)

' her fjerner vi de overskydene spaces så vi kun har hvad vi skal bruge
cboBox1value = Left(cboBox1value, lRet)

'skriver værdien til comboboxen
If cboBox1value <> "" Then
cboBox1.Text = cboBox1value
End If

End Sub
Avatar billede lokespas Nybegynder
02. september 2003 - 11:28 #8
Private Sub Form_Unload(Cancel As Integer)
'I form unload skriver vi værdierne til init filen
Dim InitFileName As String

InitFileName = App.Path + "\formopsætning.ini"

Dim lRet As Long

Dim chkBox1value As String
Dim txtBox1value As String
Dim cboBox1value As String

'værdien fra checkboxen og lægger den ned i chkBox1value
chkBox1value = chkBox1.Value
'skriver værdien "chkBox1value" til init filen
lRet = WritePrivateProfileString("Allgemein", "chkBox1", chkBox1value, InitFileName)

'værdien fra textboxen og lægger den ned i txtBox1value
txtBox1value = txtBox1.Text
'skriver værdien "txtBox1value" til init filen
lRet = WritePrivateProfileString("Allgemein", "txtBox1", txtBox1value, InitFileName)

'værdien fra comboboxen og lægger den ned i cboBox1value
cboBox1value = cboBox1.Text
'skriver værdien "cboBox1value" til init filen
lRet = WritePrivateProfileString("Allgemein", "cboBox1", cboBox1value, InitFileName)

End Sub
Avatar billede lokespas Nybegynder
02. september 2003 - 11:29 #9
du kan copy/ paste det hele ind i et project det kan være det er lidt mere overskueligt

:-)
Avatar billede stry Nybegynder
02. september 2003 - 11:39 #10
>>lokespas
Tak foreløbigt.
Tester lige og vender tilbage :-)
Avatar billede stry Nybegynder
02. september 2003 - 11:47 #11
Det kører perfekt!
Tak for hjælpen.
Der kommer sikkert mange spgs. i forbindelse med mit projekt men dem opretter jeg så hen ad vejen og håber så på ligeså god hjælp fremover :-)
Avatar billede lokespas Nybegynder
02. september 2003 - 11:48 #12
glad for at kunne hjælpe :-)
Avatar billede stry Nybegynder
02. september 2003 - 11:50 #13
Har du i øvrigt et bud på denne her:
http://www.eksperten.dk/spm/395461
Avatar billede lokespas Nybegynder
02. september 2003 - 15:05 #14
jeg ved det desværre ikke!!

er den en error log du er ude efter???
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester