Jag försöker mig på att skriva och hämta värden ur registret. Det kanske beror på att du har fel typ på Varde, det ska inte vara Long utan String. Gå inte efter app.title, gå istället efter t.ex. app.exename eller liknande då man kan ändra titeln innifrån programmet ibland... >Onkelborg jag kanske skulle visat denna variablen men AppNamn = App.ProductName. JAg gör det på följande sätt. Tack andreas, det ser ju intressant ut. Du har ju tagit det jag skrivit och förvrängt det. Har du tittat på min kod överhuvudet taget? Förstår du hur den fungerar? Andreas, jag har tittat, försökt att först, slagit upp men likväl inte begripit. den skall ligga i en modul...Skriva och hämta värden ur registret
I första läget, så är det en checkbox, som sen skall användas om man skall spara till registret.
Så här försöker jag:
Spara till registret
<code>
Sub SparaTillRegistret()
Dim Beskrivning As String, Objekt As String, Varde As Long
Beskrivning = "Spara värde"
Objekt = "Chekbox"
Varde = Form1.Check1.Value
SaveSetting "AppNamn", "Beskrivning", "Objekt", Varde
End Sub
</code>
Och sedan hämta värdena:
<code>
Sub HamtaIfranRegistret()
Dim Beskrivning As String, Objekt As String, Varde As Long, hamta As String
Varde = GetSetting(appname:="AppNamn", section:="Beskrivning", Key:="Objekt", Default:=Varde)
If Varde = 1 Then
Form1.Check1.Value = Checked
End If
End Sub
</code>
Det här går inget vidare, när jag söker i registret, så finns det ingenting där, följaktningen så får jag inga värden därifrån heller.
Vad gör jag för fel??
PS
Jag har läst de artiklar här som behandlar ämnet, men blir inte klokare.
Sökfunktionen har jag ingen nytta utav, när den inte brakar ihop, så visar den alldeles fel svar. Det känns nästan som om jag saknar den gamle 8ups)
(ursäkta Pelle men så känns det)
DSSv: Skriva och hämta värden ur registret
<code>
'Spara
SaveSetting App.title, "Installningar", "Varde1", Cstr(Form1.Check1.Value)
'Hämta
Form1.Check1.Value = GetSetting(App.title, "Installningar", "Varde1", 0)
</code>
/MickeSv: Skriva och hämta värden ur registret
Sv: Skriva och hämta värden ur registret
Det händer i allafall ingenting. Vad som förvånar är, att jag har för mig att är det en variabel som jag vill lägga in, då skall det inte ha några fnuttar runt sig, annars så skall det vara fnuttar.
Jag har försökt me att ta bort alla fnuttarna, men då får jag ett error.
SuckSv: Skriva och hämta värden ur registret
Jag geniralliserar inställningarna och placerar dem som property procedures i en modul:
<code>
Private Const regAppName = "My App"
Private Const regSectionSettings = "Settings"
Private Const regKeyStartUpTip = "Show startup tip"
Public Property Let ShowStartUpTip(Value As Boolean)
If Value <> ShowStartUpTip Then
SaveSetting regAppName, regSectionSettings, regKeyStartUpTip, Value
End If
End Property
Public Property Get ShowStartUpTip() As Boolean
ShowStartUpTip = GetSetting(regAppName, regSectionSettings, regKeyStartUpTip, True)
End Property
</code>
Jag kan nu läsa och skriva till egenskaperan varifrån som helst i projektet genom att läsa och skriva till ShowStartUpTip som om det vore en variabel.
T.Ex. Läsa av dess värde vid start av programmet:
<code>
Private Sub Form_Load()
If ShowStartUpTip Then
frmTip.Show , Me
End If
End Sub
</code>
Läsa värdet till Comboxoxen och spara det i frmTip:
<code>
Private Sub Form_Load()
If ShowStartUpTip Then
Check1.Value = vbChecked
Else
Check1.Value = vbUnchecked
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
ShowStartUpTip = (Check1.Value = vbChecked)
End Sub
</code>
Detta tycker jag är ett bättre sätt att göra det på.
Har lagt upp detta exempel i filarean:
Programarkivet:Kapsla anrop till registret i Property ProceduresSv: Skriva och hämta värden ur registret
Nu måste jag dock peta i den så att det passar mig:
<code>
Private Const regAppName = "MultiLanguage"
Private Const regSectionSettings = "Settings"
Private Const regKeySparaInst = "Spara inställningarna"
Public Property Let ShowSparaInst(Value As Boolean)
If Form1.Check1.Value = 1 Then
Value = True
Else
Value = False
End If
If Value <> ShowSparaInst Then
SaveSetting regAppName, regSectionSettings, regKeySparaInst, Value
End If
End Property
</code>
Mitt första frågetecken, som du ser så försöker jag att knoppa till för checkboxen, menade du så?
Mitt andra frågetecken, hur drar jag igång detta? Nu har jag lagt detta i en modul, och det var väll så tänkt. Vad jag menar är, att tidigare så namngav jag ju bara subben, och drogs ju koden igång, hur blir det nu?Sv: Skriva och hämta värden ur registret
Meningen är att Property Procedurerna inte skall känna till omvärlden. Det kapslar bara anropet till registret.
Du skall inte lägga in några referenser till externa kontroller eller såvidare. Det är just det som strider mot kapslingen.Sv: Skriva och hämta värden ur registret
Så. om jag går tillbaka exact till din kod, bör inte denna ligga i en modul?Sv: Skriva och hämta värden ur registret
likaså dina konstanter
I propertyn skall du ha så att det blir rätt egenskaper för dig
Sedan skriver du bara if propertyn = true then msgbox "det var true i registret"
och propertyn = false för att ändra... Dvs. koden i modulen skall bara ändras så att det blir rätt registret värden. det är anropet till din property som skall ändras istället