Gå til innhold

Håper dere kan hjelpe meg med 2 spørsmål.


Anbefalte innlegg

Har et par spørsmål jeg håper dere kan hjelpe meg med.

 

1. Hvordan får jeg en tekst til å vises i en Listboks rett etter at den er skrevet til fil?

 

2. Når en tekstboks er tom vil jeg at en kommandoknapp skal være deaktivert, men så fort det blir skrevet noe i tekstboksen skal knappen aktiveres.

Hvordan?

Endret av Sjenever
Lenke til kommentar
Videoannonse
Annonse

Nummer 1 skjønte jeg ikke helt.. For å adde tekst i en ListBox bruker du .AddItem

 

På nummer 2 kan du bruke denne koden:

Private Sub Text1_Change()

If Text1.Text = "" Then
   Command1.Enabled = False
Else
   Command1.Enabled = True
End If

End Sub

Lenke til kommentar
Nummer 1 skjønte jeg ikke helt.. For å adde tekst i en ListBox bruker du .AddItem

 

På nummer 2 kan du bruke denne koden:

Private Sub Text1_Change()

If Text1.Text = "" Then
   Command1.Enabled = False
Else
   Command1.Enabled = True
End If

End Sub

Takk for svar på spm. 2.

Det ble litt kronglete skrevet ista. Prøver på nytt :p

 

Jeg har en form med en tekstboks og en listboks. Det jeg skriver i tekstboksen skal lagres i en fil f.eks. fil.txt. For hver gang jeg legger en tekst inn i fil.txt, vil jeg at teksten som ligger på fil.txt skal vises i listboksen. Slikt som det er nå, så må jeg restarte programmet for at den nye teksten skal vises.

 

Denne bruker jeg til å skrive til fil

Private Sub cmdAdd_Click()
Dim item As String
If txtAddfav.Text = "" Then MsgBox "Skriv inn adresse!"
Open "fav.dat" For Append As #1
Print #1, txtAddfav.Text
Close #1

End Sub

Denne til å sende innholdet tilbake til listboksen:

Private Sub Form_Load()

   Dim item As String
   On Error GoTo Error_Handler
   Open "fav.dat" For Input As #1
   Do Until EOF(1)
       Line Input #1, item
       lstFav.AddItem item
   Loop
   Close #1
   Exit Sub
Error_Handler:
   MsgBox "Ingen adresse i liste"
   wbBrowser.Navigate cboURL.Text
   
End Sub

Lenke til kommentar

Bare å kalle på Form_Load etter du etter teksten er blitt lagra det:

Private Sub cmdAdd_Click()
Dim item As String
If txtAddfav.Text = "" Then MsgBox "Skriv inn adresse!"
Open "fav.dat" For Append As #1
Print #1, txtAddfav.Text
Close #1

form_load

End Sub

Lenke til kommentar
Bare å kalle på Form_Load etter du etter teksten er blitt lagra det:

Private Sub cmdAdd_Click()
Dim item As String
If txtAddfav.Text = "" Then MsgBox "Skriv inn adresse!"
Open "fav.dat" For Append As #1
Print #1, txtAddfav.Text
Close #1

form_load

End Sub

Takker. Det var til stor hjelp.

Har også et tilleggsspørsmål.

Hvordan unngår jeg å skriver inn to eksakt like linjer i tekstfilen?

Lenke til kommentar
If lstFav.List(lstFav.ListCount - 1) = txtAddfav.Text Then

   MsgBox "Linjen er allerede skrevet inn!"
   
Else

   Dim item As String
   If txtAddfav.Text = "" Then MsgBox "Skriv inn adresse!"
   Open "fav.dat" For Append As #1
   Print #1, txtAddfav.Text
   Close #1

   Form_Load

End If

Lenke til kommentar
If lstFav.List(lstFav.ListCount - 1) = txtAddfav.Text Then

   MsgBox "Linjen er allerede skrevet inn!"
   
Else

   Dim item As String
   If txtAddfav.Text = "" Then MsgBox "Skriv inn adresse!"
   Open "fav.dat" For Append As #1
   Print #1, txtAddfav.Text
   Close #1

   Form_Load

End If

Takk igjen.

Denne koden søker vel bare etter første linjen i listen. Hva om jeg skal søke gjennom hele listen etter like linjer. Tenkte på noe alla "Do until EOL".

Lenke til kommentar

Den søker på den siste linjen som er skrevet inn. For å søke etter alle ville jeg ha brukt "For-Next". Slik:

Dim i, søk
For i = 0 To lstFav.ListCount - 1

   If lstFav.List(i) = txtAddfav.Text Then søk = søk + 1
   
End If



If søk = 0 Then


   Dim item As String
   If txtAddfav.Text = "" Then MsgBox "Skriv inn adresse!"
   Open "fav.dat" For Append As #1
   Print #1, txtAddfav.Text
   Close #1

   Form_Load
  
Else

   MsgBox "Linjen er allerede skrevet inn. Så mange har skrevet den inn: " & søk

End If

Koden sjekker hver linje og hvis den er lik som du har skrevet inn, vil den plusse på "søk".

Lenke til kommentar

Neida, det gjør du ikke :)

 

Bare en liten feil fra min siden. Slik skal det være:

Dim i, søk
For i = 0 To lstFav.ListCount - 1

  If lstFav.List(i) = txtAddfav.Text Then søk = søk + 1
  
Next i



If søk = 0 Then


  Dim item As String
  If txtAddfav.Text = "" Then MsgBox "Skriv inn adresse!"
  Open "fav.dat" For Append As #1
  Print #1, txtAddfav.Text
  Close #1

  Form_Load
 
Else

  MsgBox "Linjen er allerede skrevet inn. Så mange har skrevet den inn: " & søk

End If

 

EDIT: Den koden vil se forskjell på to tekster hvor forskjellen er en stor bokstav. Det kan endres med den koden her:

Dim i, søk
For i = 0 To lstFav.ListCount - 1

  If LCase(lstFav.List(i)) = LCase(txtAddfav.Text) Then søk = søk + 1
  
Next i



If søk = 0 Then


  Dim item As String
  If txtAddfav.Text = "" Then MsgBox "Skriv inn adresse!"
  Open "fav.dat" For Append As #1
  Print #1, txtAddfav.Text
  Close #1

  Form_Load
 
Else

  MsgBox "Linjen er allerede skrevet inn. Så mange har skrevet den inn: " & søk

End If

Endret av Jonas
Lenke til kommentar

Men det er en ting til jeg stussa litt på.. Jeg ser at du, i koden, sjekker om brukeren har skrevet noe i tekst boksen. Hvis han ikke har det vil meldingen sprette opp, men programmet vil fortsatt gå videre! Jeg sikter til denne:

Dim item As String
If txtAddfav.Text = "" Then MsgBox "Skriv inn adresse!"
Open "fav.dat" For Append As #1
Print #1, txtAddfav.Text
Close #1

Bytt det ut med dette:

Dim item As String
If txtAddfav.Text = "" Then
   MsgBox "Skriv inn adresse!"
   Exit Sub
End If
Open "fav.dat" For Append As #1
Print #1, txtAddfav.Text
Close #1

Her kan du se at "exit sub" vil stanse det helt. Der stopper den og ingen ting under vil bli utført!

Endret av Jonas
Lenke til kommentar

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å
×
×
  • Opprett ny...