Avatar billede weingarten Nybegynder
04. marts 2004 - 22:08 Der er 21 kommentarer

Listview og tekstfiler

Kan nogen hjælpe mig med dette? Jeg har en tekstfil som ser nogenlunde sådan her ud:

Item1  Kommentar
Item2  Kommentar

Hvordan får jeg smidt det i et listview?
Avatar billede Marting Forsker
04. marts 2004 - 22:16 #1
hej
jeg ligge lige en lytter ind!!
Avatar billede Marting Forsker
04. marts 2004 - 22:20 #2
hej

private Sub Command1_Click()

  Dim sBeskrivelse As String 
  sBeskrivelse = InputBox("Beskrivelse")
  List.ListItems.Add , , sBeskrivelse

End sub

det her er godt nok i kun i fra InputBox
Avatar billede weingarten Nybegynder
04. marts 2004 - 22:22 #3
jamen jeg vil gerne have det sådan at teksten linie for linie kommer i et listview, hvor items står i kolonne1 og kommentarer i kolonne 2.... :-)
Avatar billede Marting Forsker
04. marts 2004 - 22:31 #4
prøve det her

Private Sub Text2_KeyPress(KeyAscii As Integer)
Dim sBeskrivelse As String
sBeskrivelse = Text2
If KeyAscii = KeyCodeConstants.vbKeyReturn Then
  List.ListItems.Add , , sBeskrivelse
 
  End If
End Sub
Avatar billede weingarten Nybegynder
04. marts 2004 - 22:44 #5
Jeg må jo på en eller anden måde traversere ned igennem min tekstfil C:\text.txt
Avatar billede helmet Nybegynder
04. marts 2004 - 22:46 #6
Har lige fedtet en mulig løsning sammen, har forsøgt og skrive lidt kommentarer til koden, men du er velkommen til og sprøge ind til den. Jeg har været nødt til og gå ud fra at et mellemrum i tekst filen betyder en ny kolonne i listviewet.

Dim fso As FileSystemObject
Dim ts As Scripting.TextStream
Dim item As ListItem
Dim data() As String
Dim i As Integer
Dim bHeader As Boolean

  'Bruger reference til "Microsoft Scripting Runtime"
  Set fso = New Scripting.FileSystemObject
  Set ts = fso.OpenTextFile("C:\Fil.txt") 'Filens placering
 
  bHeader = False
 
  With ListView1
    ListView1.View = lvwReport
 
    While Not ts.AtEndOfStream
      'Læser en linie i tekst filen, går ud fra at mellemrum betyder ny kolonne
      'Indlæser linie i et array
      data() = Split(ts.ReadLine, " ", , vbTextCompare)
     
      'Vi er nødt til og indsætte nogle kolonner
      'Dette gør vi kun en gang, da vi ellers får for mange
      If Not bHeader Then
        For i = LBound(data) To UBound(data)
          ListView1.ColumnHeaders.Add , , "Kolonne " & i + 1
        Next
        bHeader = True
      End If
     
      If UBound(data) > 0 Then 'Indlæser data
        Set item = ListView1.ListItems.Add
        For i = LBound(data) To UBound(data)
          If i = 0 Then
            item.Text = data(i)
          Else
            item.SubItems(i) = data(i)
          End If
        Next
      End If
    Wend
  End With
Avatar billede weingarten Nybegynder
04. marts 2004 - 23:09 #7
Det ser ud til at virke....nogenlunde ihvertfald. Det ser ikke ud til at der kommer nogen kommentarer med i kolonne 2(Skal kun have de 2 kolonner)
Avatar billede helmet Nybegynder
04. marts 2004 - 23:13 #8
Er det du henviser til fra teksten filen det eneste der står i hver linie? Og er der kun et mellemrum mellem dem?
Avatar billede weingarten Nybegynder
04. marts 2004 - 23:20 #9
ja, der er kun et item og en kommentar i hver linie (der er lidt større mellemrum, men det har jeg rettet i splitten), så hvad jeg gerne vil have er at der kommer til at stå

Kolonne1  Kolonne2
item1      kommentar1
item2      kommentar2
Avatar billede helmet Nybegynder
04. marts 2004 - 23:24 #10
Hmm, og der kommer godt nok kun 2 kolonner i listviewet??
Avatar billede weingarten Nybegynder
04. marts 2004 - 23:28 #11
nå, nu ser det ud til at det virker nogenlundem hvis jeg remmer "item.SubItems(i) = data(i)" ud??? :-)....
Avatar billede helmet Nybegynder
04. marts 2004 - 23:31 #12
Så får du da kun data i den første kolonne?
Avatar billede weingarten Nybegynder
04. marts 2004 - 23:32 #13
næ...det står fint!
Item1 i første kolonne og kommentar1 i næste
Avatar billede helmet Nybegynder
04. marts 2004 - 23:34 #14
Jeg må tilstå jeg er en smule forvirret, for hvis du har remmet item.SubItems(i) = data(i) ud, vil den kun sætte data ind i en kolonne for hver linie.
Avatar billede weingarten Nybegynder
04. marts 2004 - 23:39 #15
ja, nu er jeg også forvirret...hvis jeg ikke remmer den ud kommer der en runtime error 380 fejl (ivalid property value), hvis jeg så remmer det ud står det fint. kører jeg appl igen...ja så kommer der kun noget i første kollone!.....prette wheird! :-)
Avatar billede helmet Nybegynder
04. marts 2004 - 23:43 #16
Har du ændret den del af koden der sætter kolonnerne ind, for det kunne det tyde på, den fejl du får kommer når den prøver og sætte noget ind i en kolonne som ikke er blevet oprettet i listviewet, der er altså for lidt kolonner i forhold til det data den vil sætte ind?
Avatar billede weingarten Nybegynder
04. marts 2004 - 23:53 #17
tror det har noget at gør med at arrayet kun når op på 2(itemkommentar) og at der kan være 10 linier i tekstfilen....
Avatar billede helmet Nybegynder
04. marts 2004 - 23:58 #18
Nope, antallet af linier har ikke noget med kolonnerne at gøre, det der er afgørende for kolonnerne er hvor meget der står i den 1. linie i tekstfilen. Den er bestemmende for hvor mange kolonner resten af linierne må have. Det store while loop kører jo en gang pr. linie i tekstfilen, men for løkkerne køres det antal gange som den har regnet sig ud til at der skal være kolonner.
Avatar billede weingarten Nybegynder
05. marts 2004 - 00:17 #19
Hmmmmm.....jeg prøver at rode lidt med det...kan ikke rigtigt få det til at virke :-(
Avatar billede Marting Forsker
25. maj 2015 - 12:43 #20
Lukket
Avatar billede Marting Forsker
25. maj 2015 - 12:45 #21
UBS - øv
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

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