Avatar billede telep Nybegynder
25. oktober 2002 - 01:32 Der er 11 kommentarer og
2 løsninger

ListView1.ListIndex

Halløj XP's

Jeg sidder med en ListView hvor jeg meget gerne skulle have fat i den første "record" i listen hvis man kan kan kalde det det. Med en alm. listbox kan man jo bare skrive:

list1.listindex = 0

Så har man fat i record nr. 1.
Det samme vil jeg gerne med min ListView, altså have fat i nr. 1.

Formålet er en løkke så jeg skal kunne på et givet tidspunkt bede ListView'n om at rykke engang nedad. Hvilket jeg med alm. ListBox ville gøre med:

list1.listindex = list1.listindex +1

....

Thanks
Avatar billede bennytordrup Nybegynder
25. oktober 2002 - 07:10 #1
ListView1.ListItems(1)
Avatar billede telep Nybegynder
25. oktober 2002 - 11:39 #2
Benny...

Forklaring, tak!

Hvordan lægger jeg "1" til indexet?
Avatar billede bennytordrup Nybegynder
25. oktober 2002 - 11:44 #3
for i = 1 to listview1.listitems.count
  set listview1.selecteditem = listview1.listitems(i)
  listview1.selecteditem.ensurevisible
next i

Dette vil løbe listen igennem og bladre dernedaf (skrevet 100% efter hukommelse).

ListView og ListBox er to MEGET forskellige kontroller, så du kan ikke bare sammenligne funktionaliteten i disse to.
Avatar billede telep Nybegynder
25. oktober 2002 - 12:09 #4
Okay heres the story

Jeg skal bruge det i en musikafspiller jeg har lavet. ListView2 indeholder Tre kolonner (Kunster, Album, Titel). Klikker jeg på en knap skal MediaPlayer1 afspille hele listen startende med den første sang (stien finder MediaPlayer1 i en database, det har jeg styr på) Jeg har så en timer kørende der gør følgende:

Dim i As Integer

For i = 1 To ListView2.ListItems.Count
If MediaPlayer1.Duration = MediaPlayer1.CurrentPosition Then
    Set ListView2.SelectedItem = ListView2.ListItems(i +1)
    ListView2.SelectedItem.EnsureVisible
    PlaySongLV
End If
Next i


Men det virker kun første gang If MediaPlayer1.Duration = MediaPlayer1.CurrentPosition = True!!!

kan du knække den?
Avatar billede bennytordrup Nybegynder
25. oktober 2002 - 12:37 #5
Hvad dækker MediaPlayer1.Duration og .CurrentPosition over?
Avatar billede telep Nybegynder
25. oktober 2002 - 12:46 #6
.Duration er længden af den fil der pt bliver afspillet
.CurrentPosition er så hvor langt vi er nået i filen

Når de to så er lig hinanden skal MediaPlayeren tage fat i den næste sang fra ListView2

get it
Avatar billede bennytordrup Nybegynder
25. oktober 2002 - 12:58 #7
Jeg går ud fra, at PlaySongLV starter det korrekte nummer.

Du skal ikke køre alle items igennem i timereventet:

Timer1_Timer:

if mediaplayer1.duration < mediaplayer1.currentposition then exit sub
Timer1.enabled =false
if listview2.selecteditem is nothing then
  set listview2.selecteditem = listview2.listitems(1)
else
  set listview2.selecteditem = listview2.listitems(listview2.selecteditem.index+1)
endif
listview2.selecteditem.ensurevisible
playsonglv
Avatar billede telep Nybegynder
25. oktober 2002 - 13:11 #8
Dette er PlaySongLV

Dim strExec As String

strExec = ListView2.SelectedItem.ListSubItems(2)
strArtist = ListView2.SelectedItem.Text

strSQL = "SELECT * FROM tblAll WHERE Titel = '" & strExec & "'" & " AND Kunstner = '" & strArtist & "'"
Set recSearch = datdb.OpenRecordset(strSQL)

strExec = recSearch("Path")
If Not recSearch.RecordCount = 1 Then
    MsgBox "An error occurred", vbOKOnly + vbCritical, "Error"
Else
    MediaPlayer1.Open strExec
End If
Avatar billede bennytordrup Nybegynder
25. oktober 2002 - 13:14 #9
tilføj Timer1.Enabled = True efter MediaPlayer1.Open og prøv så med min udformning af Timer1_timer
Avatar billede telep Nybegynder
25. oktober 2002 - 13:21 #10
Hey Benny,

Jeg tror selv jeg har løst den:

Timeren:

For i = 1 To ListView2.ListItems.Count
If MediaPlayer1.Duration = MediaPlayer1.CurrentPosition Then
    intShit = intShit + 1
    Set ListView2.SelectedItem = ListView2.ListItems(i + intShit)
    ListView2.SelectedItem.EnsureVisible
    PlaySongLV
End If
Next i
Avatar billede bennytordrup Nybegynder
25. oktober 2002 - 13:23 #11
Fortæl mig lige, om du nogensinde kommer ud over startnummeret på den måde.

Det er spild af tid og ressourcer at løbe hele listview2.listitems igennem i timer-eventet.
Avatar billede telep Nybegynder
25. oktober 2002 - 13:25 #12
Det gør jeg! Det virker præcis som det skal lige nu...

Men jeg ved ikke rigtig hvorfor for-next-løkken skal være der...
Avatar billede telep Nybegynder
25. oktober 2002 - 13:28 #13
Den behøves vidst heller ikke at være der!
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
Kategori
Kurser inden for grundlæggende programmering

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