Avatar billede martin_moth Mester
12. juni 2002 - 11:41 Der er 15 kommentarer og
2 løsninger

Husk indstillinger...

Hvis jeg laver et program med f.eks. nogle checkboxe på, er der så en _simpel_ måde at huske de indstillinger der blev sat ved sidste programkørsel ved næste programkørsel?

Altså - jeg har compileret mit program til en exe-fil. Når brugeren kører programmet sætter han/hun nogle værdier for nogle checkboxe - disse indstillinger skal vises næste gang progreammet kører.

Man kunne jo skrive indstillingerne til en fil og indlæse dem ved programstart - og jeg har en ide om at ProbBag også kan et eller andet - men jeg søger en simpel løsning, _hvis_ det er muligt.

Nogle ideer?
Avatar billede peter.erikse Nybegynder
12. juni 2002 - 11:44 #1
Du kan gemme indstillinger i regestry
Avatar billede kedde65 Praktikant
12. juni 2002 - 11:52 #2
Du kan som peter.erikse siger bruge registry eller som du selv skriver en fil. Der er ikke forskel på de 2 ting, begge dele er lige gode.
Propbag bruges ikke i den sammenhæng du efterlyser.

VH CK
Avatar billede nolle_k Nybegynder
12. juni 2002 - 11:52 #3
ProbBag Kan du ikke bruge til det du taler om her!! Properties kan kun bruges i design time og ved initiliseringer af en control ved opstart!

Jeg ville nok også læse det ind i Registry!

//Nolle_K
Avatar billede martin_moth Mester
12. juni 2002 - 11:53 #4
"Du kan gemme indstillinger i regestry" er ikke helt nok for en smådum person som mig. Forklaring?
Avatar billede kjeld_klit Nybegynder
12. juni 2002 - 16:04 #5
Brug SaveSetting til at gemme og GetSetting til at hente.
Skriv dem ind i din kode og marker ordet og tryk F1 og du får go' hjælp.
Avatar billede martin_moth Mester
12. juni 2002 - 16:58 #6
Så må jeg jo være dum når jeg ikke kan få det til at virke. Jeg skal angive "appname", "Section", "Key" og "setting" - og det kan jeg ikke finde ud af. Hvad er f.eks. en "section"...

Så jeg må hellere være lidt mere konkret:

Hvis jeg har en form med f.eks. 2 option-buttons, en checkbox og et textfelt, hvordan gemmer og sætter jeg så værdierne for disse når mit program startes/lukkes?

Altså værdierne : Option1.Value, Option2.Value, Check1.Value og Text1.Text
Avatar billede sjh Nybegynder
12. juni 2002 - 17:00 #7
Private Sub Delete_Click()
  DeleteSetting "Appname", "Setup" 'Delete Setup
  DeleteSetting "Appname"          'Delete All
End Sub

Private Sub Form_Load()
  ' Load
  Check1.Value = Val(GetSetting("Appname", "Setup", "CheckBox", "0"))
End Sub

Private Sub Form_Unload(Cancel As Integer)
  ' Save
  SaveSetting "Appname", "Setup", "CheckBox", CStr(Check1.Value)
End Sub
Avatar billede martin_moth Mester
12. juni 2002 - 17:11 #8
Mange tak sjh - men hvad hvis jeg har mere end en checkbox, samt 2 option, og 2 textfelter?

PS. Jeg skal nok give points snarest;)
Avatar billede sjh Nybegynder
12. juni 2002 - 17:13 #9
Private Sub Delete_Click()
  DeleteSetting "Appname", "Setup" 'Delete Setup
  DeleteSetting "Appname"          'Delete All
End Sub

Private Sub Form_Load()
  ' Load
  Text1.Text = GetSetting("Appname", "Setup", "Text", "Text1")
  Check1.Value = Val(GetSetting("Appname", "Setup", "CheckBox", "0"))
  Option1.Value = GetSetting("Appname", "Setup", "Option1", "false")
  Option2.Value = GetSetting("Appname", "Setup", "Option2", "true")
End Sub

Private Sub Form_Unload(Cancel As Integer)
  ' Save
  SaveSetting "Appname", "Setup", "Text", Text1.Text
  SaveSetting "Appname", "Setup", "CheckBox", CStr(Check1.Value)
  SaveSetting "Appname", "Setup", "Option1", CStr(Option1.Value)
  SaveSetting "Appname", "Setup", "Option2", CStr(Option2.Value)
End Sub
Avatar billede martin_moth Mester
12. juni 2002 - 17:16 #10
Fornemt - tak
Avatar billede sjh Nybegynder
12. juni 2002 - 17:16 #11
selv tak :-)
Avatar billede kjeld_klit Nybegynder
12. juni 2002 - 17:19 #12
Se det som en træstruktur
De 3 første niveauer kan du ikke ændre:
HKEY_CURRENT_USER\SOFTWARE\VB and Visual Basic program settings

...\appname (= Dit programnavn)
...\appname\sections (=brugerdef. underniveauer fx bruger1, bruger2 osv)
...\appname\sections\key (=navn der beskriver det der skan have værdi fx Option1Value)
...\appname\sections\key\Setting (= den værdi der skal angives fx true)
Avatar billede martin_moth Mester
12. juni 2002 - 17:35 #13
Nu har jeg godt nok lukket spørgsmålet, kjeld - men jeg forstår ikke din sidste sætning. Der skal jo netop ikke angives en værdi (setting), da den skal nappe den setting brugeren satte sidst programmet kørte.

Så hvis en bruger sætter en checkbox til false, synes jeg det er mærkeligt, at den rent faktisk indlæser False (for det virker jo som det skal) når programmet startes og følgende linie afvikles

Option2.Value = GetSetting("Appname", "Setup", "Option2", "true")

Eller er "true" bare en "default value" hvis der ikke er kørt en savesetting forinden?
Avatar billede kjeld_klit Nybegynder
12. juni 2002 - 18:10 #14
Det sidste først. Ja. GetSetting henter den værdi der står i "key" (Option2). I Dit eksempel er "True" = Default og bruges kun hvis du ønsker at der skal returneres en bestemt værdi såfremt nøglen ikke findes. Derfor returneres "False" hvis brugeren på et tidspunkt har angivet det og det er gemt med SaveSetting.

Her er vi så ved dit første spørgsmål. SaveSetting angiver nøgle og værdi som sjh siger SaveSetting "Appname", "Setup", "Option2", CStr(Option2.Value)

Prøv at kikke i din reg.database Start\Kør\Regedit.exe og find dit program, så kan du se havd det laver. (Lad være med at ændre noget med Regedit med mindre du er helt sikker. Det kan være farligt. Derfor er det en meget let ting at bruge i VB da det så er under kontrol. :-)
Avatar billede martin_moth Mester
12. juni 2002 - 21:35 #15
Meget fornemt. Takker mange gange for udførligt svar, selv jeg kan fatte ;o)
Avatar billede omen Nybegynder
28. juni 2003 - 14:51 #16
Håber lige jeg kan få lidt "gratis" hjælp her. Jeg har nu gjort præcis som sjh har gjort, men der er problemer alligevel. Først lige koden som jeg har:

Private Sub Form_Load()

'get saved settings
chkOptionSound.Value = Val(GetSetting("QT", "Settings", "CheckBox", "0"))

End Sub

Og så har jeg:

Private Sub Form_Unload(Cancel As Integer)
' Save settings
SaveSetting "QT", "Settings", "CheckBox", CStr(chkOptionSound.Value)
End Sub

Alligevel sker der intet. Jeg holder øje med værdierne i registry, men der sker intet! Noget hjælpe bedes :/
Avatar billede omen Nybegynder
28. juni 2003 - 15:26 #17
Ah, fandt balladen. Den godtager åbenbart ikke End som Unload. Jeg skal bare quitte programmet fra Unload Me.
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