Avatar billede bambus Nybegynder
29. oktober 2001 - 14:43 Der er 10 kommentarer og
1 løsning

Addition af subitems

Kan det lade sig gøre, at addere værdierne af liste af subitems fra en listview.
Jeg har kun kendskab til VBA, og her bruges følgende

For i  = 0 to ListBox1.ListCount –1
    Total = Total + ListBox1.List(i)
Next i

Jeg ville gerne som på listboxen tælle samtlige rækker hver gang der bliver tilskrevet en værdi (ListView optræder i mit eksempel i VBA)
Avatar billede jennemaan Nybegynder
29. oktober 2001 - 14:52 #1
i On_Change eventen for listboksen tilfjer du blot

For i  = 0 to ListBox1.ListCount –1
    Total = Total + ListBox1.List(i)
Next i


Text1.Text=Total

/Jennemaan

Avatar billede bambus Nybegynder
29. oktober 2001 - 14:54 #2
Nu var kodestumpen et eksempel for hvordan jeg ville ha´ beregningen i en LISTVIEW og ikke listbox
Avatar billede jennemaan Nybegynder
29. oktober 2001 - 15:09 #3
år... jeg skal da også lige læse spørgsmålet ;o)

Her er et eksempel på en tabel i et listview.

Listviewet har jeg givet 5 kolonner (tekst, værdi,værdi2,værdi3,total), således at

listitem teksten er \"tekst\" og subitems er værdi1,..2..., total

Jeg fylder listem\'et med værdier og beregner summer både rækkevist og søjlevist.

Private Sub Form_Load()

Dim lItem As ListItem
For X = 1 To 10
Set lItem = Me.ListView1.ListItems.Add(, , \"Tekst \" & X)
lItem.SubItems(1) = Rnd() * 10
lItem.SubItems(2) = Rnd() * 10
lItem.SubItems(3) = Rnd() * 10
lItem.SubItems(4) = lItem.SubItems(1) + lItem.SubItems(2) + lItem.SubItems(3)
Next X
Set lItem = Me.ListView1.ListItems.Add(, , \"Total\")
For Y = 1 To 3
    For X = 1 To 10
        lItem.SubItems(Y) = lItem.SubItems(Y) + Me.ListView1.ListItems(X).SubItems(Y)
    Next X
   

Next Y


End Sub


/Jennemaan
Avatar billede jennemaan Nybegynder
29. oktober 2001 - 15:11 #4
Du skal være opmærksom på at de enkelte subitems er en String, så derfor skal du passe på med decimaltegn og den slags når du laver regneoperationer.

/Jennemaan
Avatar billede bambus Nybegynder
29. oktober 2001 - 15:30 #5
Problemet er så, at jeg ikke er super stærk til VB… jeg beskriver lige problemet på en anden måde..
Du kan nok hurtigt se hvad der sker

Private Sub ListView1_OLEStartDrag(Data As MSComctlLib.DataObject, AllowedEffects As Long)
    With ListView1
    Set moDragItem1 = .SelectedItem
    Set moDragItem2 = .SelectedItem.ListSubItems(1)
    Set moDragItem3 = .SelectedItem.ListSubItems(2)
    Set moDragItem4 = .SelectedItem.ListSubItems(3)
    End With
End Sub
Private Sub Listview1_OLECompleteDrag(Effect As Long)
Dim i As Integer
    msDragSource = \"\"
    Set moDragItem1 = Nothing
    Set moDragItem2 = Nothing
    Set moDragItem3 = Nothing
    Set moDragItem4 = Nothing
End Sub

Private Sub ListView2_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)
    With ListView2.ListItems.Add(, , moDragItem1, 1, 1)
    .SubItems(1) = moDragItem2
    .SubItems(2) = moDragItem3
    .SubItems(3) = moDragItem4
    End With
End Sub

Jeg skal jo nok lave min beregning  ved Drop, men hvordan adderer jeg så SubItem(3), hver gang der tilskrives data i Listview2


håber du forstår B-)
Avatar billede jennemaan Nybegynder
29. oktober 2001 - 15:40 #6
Dim lItem As Listitem
Dim dblTotal As Double
For Each lItem In ListView2.ListItems
dblTotal=dblTotal+lItem.SubItems(3)
Next lItem

Msgbox dblTotal

/Jennemaan
Avatar billede bambus Nybegynder
29. oktober 2001 - 15:53 #7
hmmm virker ikke i VBA.....
kender ikke For Each lItem In ListView2.ListItems
Avatar billede jennemaan Nybegynder
29. oktober 2001 - 15:57 #8
Ok, prøv så

For i=0 To Listview1.ListItems.Count-1
  Total=Total + ListView1.Listitems(i).Subitems(3)
Next i

Msgbox Total

/Jennemaan
Avatar billede bambus Nybegynder
29. oktober 2001 - 16:01 #9
hmmmm index out of bounds
.. tror jeg næppe
Avatar billede jennemaan Nybegynder
29. oktober 2001 - 16:04 #10
For i=1 To Listview1.ListItems.Count
  Total=Total + ListView1.Listitems(i).Subitems(3)
Next i

Msgbox Total
Avatar billede bambus Nybegynder
30. oktober 2001 - 12:47 #11
1000 tak.. du var en stor hjælp!! :))
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