Gå til innhold

Anbefalte innlegg

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
Videoannonse
Annonse

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

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 :D

 

  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

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

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 :D

Lenke til kommentar

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
  • 4 uker senere...

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...