Avatar billede stry Nybegynder
06. december 2006 - 15:34 Der er 9 kommentarer og
1 løsning

Indlæs array i Listview

Nedenstående kode bruger jeg til at finde bestemte data i et array som så "fyldes" i 'arrUdvalgteKon'-arrayet.
Spørgsmålet er nu hvordan jeg får læst 'arrUdvalgteKon'-arrayet ind i en Listview-control på min formular 'frmTest' og derefter returneret den kontakt som bliver valgt på 'frmTest' til mit class-modul så jeg kan arbejde videre med den der.

Kommentarer til metodevalget i koden modtages også gerne.

På forhånd tak :-)



'================ class modul start ============================
Option Explicit
Option Base 1
Type csKontakt
    Fornavn As String
    Efternavn As String
    Mobil As Long
End Type
Dim arrKontakter() As csKontakt
Dim arrUdvalgteKon() As csKontakt
Dim KontListe(5) As String

Private Sub FyldArr()
Dim i As Integer
Dim tmp
KontListe(1) = "Kim;Jensen;23568987"
KontListe(2) = "Ole;Nielsen;21457887"
KontListe(3) = "Lone;Hansen;56544587"
KontListe(4) = "Lisa;Bjerre;25252623"
KontListe(5) = "Jonas;Obel;45788956"

    For i = LBound(KontListe) To UBound(KontListe)
        tmp = Split(KontListe(i), ";")
        ReDim Preserve arrKontakter(i)
            arrKontakter(i).Fornavn = tmp(0)
            arrKontakter(i).Efternavn = tmp(1)
            arrKontakter(i).Mobil = tmp(2)
                'Debug.Print arrKontakter(i).Fornavn & " " & arrKontakter(i).Efternavn & " Mobil: " & arrKontakter(i).Mobil
    Next i
End Sub

Private Sub FindForBogstav(Fbs As String)
Dim i As Integer, j As Integer
Dim tmp() As csKontakt
Fbs = UCase(Fbs)
FyldArr
    For i = LBound(arrKontakter) To UBound(arrKontakter)
        If UCase(Left(arrKontakter(i).Fornavn, 1)) = Fbs Then
        j = 1
            ReDim Preserve tmp(j)
                tmp(j) = arrKontakter(i)
                    Debug.Print tmp(j).Efternavn
                j = j + 1
        End If
    Next i
    arrUdvalgteKon = tmp
End Sub

Private Sub Kald()
    Call FindForBogstav("l")
End Sub
'================ class modul slut ============================
Avatar billede stry Nybegynder
07. december 2006 - 15:30 #1
ingen med et bud?...
Avatar billede stry Nybegynder
08. december 2006 - 13:48 #2
Hæver lige til 60 point og ser om det hjælper.....
Avatar billede sjh Nybegynder
09. december 2006 - 17:21 #3
' --------------------------------- Form1 ---------------------------------
' Husk at tilføj ListView (ListView1) på din form
' -------------------------------------------------------------------------
Option Explicit

Private Sub Form_Load()

  With ListView1 ' <- ListView
      .View = 3
      .ColumnHeaders.Add , , "Fornavn"
      .ColumnHeaders.Add , , "Efternavn"
      .ColumnHeaders.Add , , "Mobil"
  End With

Dim i As Long
Dim LItem As ListItem

Dim tmp() As String
Dim KontListe(4) As String

  KontListe(0) = "Kim;Jensen;23568987"
  KontListe(1) = "Ole;Nielsen;21457887"
  KontListe(2) = "Lone;Hansen;56544587"
  KontListe(3) = "Lisa;Bjerre;25252623"
  KontListe(4) = "Jonas;Obel;45788956"

  With ListView1 ' <- ListView
      For i = LBound(KontListe) To UBound(KontListe)
        tmp = Split(KontListe(i), ";")
        Set LItem = .ListItems.Add(, , tmp(0)) ' Fornavn
        With LItem
            .SubItems(1) = tmp(1) ' Efternavn
            .SubItems(2) = tmp(2) ' Mobil
        End With
      Next
  End With

End Sub

Private Sub ListView1_Click()
Dim nIndex As Long
  With ListView1 ' <- ListView
      If Not .SelectedItem Is Nothing Then
        nIndex = .SelectedItem.Index
        With .ListItems(nIndex)
            MsgBox .Text        ' Fornavn
            MsgBox .SubItems(1) ' Efternavn
            MsgBox .SubItems(2) ' Mobil
        End With
      End If
  End With
End Sub
' --------------------------------- Form1 ---------------------------------
Avatar billede stry Nybegynder
09. december 2006 - 17:29 #4
>>Sjh
Arrayet ligger i mit Class Module, så jeg skal "have det med" som parameter når jeg kalder formen.

Altså noget a'la:

Pseudo-kode

Private Sub Kald()
    Call FindForBogstav("l")
frmTest[arrUdvalgteKon].show
End Sub
Avatar billede sjh Nybegynder
09. december 2006 - 17:36 #5
ha ha tror ikke det er et "class module" bare et "module" ik.. da "class module" er et object ;)

men du kan jo se hvordan du skal gøre med ListView.. nu har jeg vist dig hvordan du skal gøre det..
Avatar billede stry Nybegynder
09. december 2006 - 17:44 #6
Det ændrer ikke på at spørgsmålet gik på at kalde formularen med mit array som parameter og så returnere den valgte kontakt i enten en variabel el. som en funktionsværdi.

I øvrigt er det et class module - det skal gerne ende med at blive en activeX-dll., men jeg vil ikke afvise at der er noget jeg kan have misforstået i den sammenhæng - derfor også anmodningen om kommentarer til metodevalget :-)
Avatar billede sjh Nybegynder
09. december 2006 - 20:39 #7
1 Hvis det er et Class module, så kan du ikke tilgå FindForBogstav() ved bare at skrive Call FindForBogstav("l")

så er det noget i den stil..

Dim objClass As New Class1 ' eller hvad dit class module hedder..
Call objClass.FindForBogstav("l")
Avatar billede sjh Nybegynder
09. december 2006 - 20:42 #8
eller også er det ikke Visual Basic 6 du snakker om.. ved ikke hvordan man gør i Visual Basic .NET
Avatar billede stry Nybegynder
09. december 2006 - 20:53 #9
Det er vb 6.0 og jeg er klar at det kald ikke virker - det er kun til test.
Men jeg mangler fortsat en metode til at klare det ovenfor beskrevne problem.
Jeg spekulere på om jeg kan bruge samme fremgangsmåde som her http://www.eksperten.dk/spm/748431 ....?
Avatar billede stry Nybegynder
29. november 2007 - 17:42 #10
;-(
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