b-urn Skrevet 26. juni 2003 Del Skrevet 26. juni 2003 Bytt ut med addData()-funksjonen istf å bruke List1.AddItem direkte. Private Sub Command1_Click() Dim sTmp As String sTmp = InputBox("Enter the game's name:") stmp2 = InputBox("Enter the serial number:") addData(sTmp,stmp2) End Sub Lenke til kommentar
wacie Skrevet 26. juni 2003 Forfatter Del Skrevet 26. juni 2003 Skriften blir rød over koden Private Sub Command1_Click() Dim sTmp As String sTmp = InputBox("Enter the game's name:") stmp2 = InputBox("Enter the serial number:") -> addData(sTmp,stmp2) End Sub Lenke til kommentar
b-urn Skrevet 26. juni 2003 Del Skrevet 26. juni 2003 Sorry.. sitter ikke så mye med VB om dagen.. så jeg blander litt av og til. Det feiler pga. parentesene i kallet. Mangler også deklarering av sTmp2. Med denne kode SKAL det virke Dim sTmp As String Dim sTmp2 As String sTmp = InputBox("Enter the game's name:") sTmp2 = InputBox("Enter the serial number:") addData sTmp, sTmp2 Det forutsetter selvfølgelig at du har limt inn koden fra tidligere (slik at funksjonen addData() er definert) Lenke til kommentar
wacie Skrevet 27. juni 2003 Forfatter Del Skrevet 27. juni 2003 Takker nå virker det helt fett. Men det er en ting som jeg fant som kunne bli beder: Når man adder noe så skriver man ingen ting da kommer det fårtsatt en tom ting i listboxen hvordan fjærner man det at når du adder noe og skriver ingen ting så kommer det ingen ting opp? -wacie Lenke til kommentar
b-urn Skrevet 27. juni 2003 Del Skrevet 27. juni 2003 Edit: Rettet feil i betingelser Du sjekker enkelt og greit om brukeren faktisk har lagt inn data før du legger til i listen din. Dim sTmp As String Dim sTmp2 As String sTmp = InputBox("Enter the game's name:") sTmp2 = InputBox("Enter the serial number:") If (Trim(sTmp)<>"") And (Trim(sTmp2)<>"") Then addData sTmp, sTmp2 End If Her kunne du også gitt en tilbakemelding hvis data ikke ble lagt til. Det overlater jeg som en øvelse til deg Lenke til kommentar
wacie Skrevet 27. juni 2003 Forfatter Del Skrevet 27. juni 2003 fint... men ett proble nå er å få savet det som står der da... og å få åpnet det... HVordan får man det til da?? -wacie Lenke til kommentar
b-urn Skrevet 27. juni 2003 Del Skrevet 27. juni 2003 Vel.. Det enkleste hadde vært om vi istedet for å legge data rett inn i listboksen, hadde lagt disse dataene i en egen array også. Da kunne vi gjort som følger: a) Ved å trykke på Legg Til-knappen vil navn legges til i navne-liste, og data legges til i data-liste. B) I tillegg må vi kalle kode.. som viser alt innholdet fra navne-listen i listeboksen. c) For å lagre, kaller vi en funksjon som lagrer listedataene til fil. d) For å laste, kaller vi en funksjon som leser fra fil og inn i listene. Deretter må vi oppdatere innholdet i listeboksen med de nye dataene. Løsning følger: For at dette skal virke må du ha en form som inneholder: 3 knapper (command1,command2, command3), en listeboks (List1) og en tekstboks (Text1). Knappene svarer til Legg Til, Lagre og Laste. Lim følgende inn i formen din: Option Explicit Private Sub Command1_Click() Dim sTmp As String Dim sTmp2 As String sTmp = InputBox("Enter the game's name:") sTmp2 = InputBox("Enter the serial number:") If (Trim(sTmp) <> "") And (Trim(sTmp2) <> "") Then addData sTmp, sTmp2 End If '//Oppdaterer innhold i listeboks listContents gstr_Names, Me.List1 End Sub Private Sub Command2_Click() 'Lagrer innhold i array's til fil saveContents End Sub Private Sub Command3_Click() '//Laster innhold fra fil til array's loadContents '//Oppdaterer innhold i listeboks listContents gstr_Names, Me.List1 End Sub Private Sub List1_Click() If (List1.ListIndex > -1) Then Text1.Text = gstr_Data(List1.ListIndex) Else MsgBox "Du har glemt å velge et element i listen" End If End Sub For å dele opp koden litt legger du til en modul. (Project-meny/Add Module) og legger følgende kode inn i den: Option Explicit Public Const FileName = "c:test.dat" '//Stien til fil der data lagres Public gstr_Names() As String Public gstr_Data() As String Public gint_ItemCount As Integer Public Sub clearData() ReDim gstr_Names(0) '//Tømmer innhold i lister ReDim gstr_Data(0) gint_ItemCount = 0 End Sub Public Sub addData(strName As String, strData As String) '//Nytt antall (gammelt antall +1) gint_ItemCount = gint_ItemCount + 1 '//Gjør plass for data og legger til ReDim Preserve gstr_Data(gint_ItemCount) ReDim Preserve gstr_Names(gint_ItemCount) gstr_Names(gint_ItemCount - 1) = strName gstr_Data(gint_ItemCount - 1) = strData End Sub '//Funksjon som lister innholdet i en array til en listeboks Public Sub listContents(str_Data() As String, objList As ListBox) Dim intCounter As Integer objList.Clear '//Fjerner evt. innhold i listeboks For intCounter = 1 To gint_ItemCount objList.AddItem str_Data(intCounter - 1) Next End Sub '//Funksjon som lagrer lister til fil Public Sub saveContents() Dim fh fh = FreeFile '//Neste gyldige filehandle Open FileName For Random Access Write As fh Put #fh, , gstr_Names Put #fh, , gstr_Data Put #fh, , gint_ItemCount Close #fh End Sub '//Funksjon som henter lister fra fil og oppdaterer innhold Public Sub loadContents() Dim fh fh = FreeFile '//Neste gyldige filehandle Open FileName For Random Access Read As fh Get #fh, , gstr_Names Get #fh, , gstr_Data Get #fh, , gint_ItemCount Close #fh End Sub Lykke til! Lenke til kommentar
wacie Skrevet 20. juli 2003 Forfatter Del Skrevet 20. juli 2003 Tusen takk! nå virker det bra Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå