webForumDet fria alternativet

Adressbok i VB

26 svar · 581 visningar · startad av ironhead

ironheadMedlem sedan mars 20011 346 inlägg
#1

Hej!

Jag försöker göra en enkel adressbok i VB.
Jag använder VB6.0 & Access 2002.

1.) Jag har gjort 2 listBoxar, 1 som heter grupper & 1 som heter namn. När jag klickar på en grupp ska namnen under dessa grupper uppenbara sig i ListBox2...hur plockar jag ut id:et ur ListBox1 för att kunna använda i selectsatsen i ListBox2 ?

2.) För att senare göra denna adressbok lite snyggare skulle jag vilja lista grupper och namn med ikoner bredvid namnen...finns det nåt sätt att lägga till bilder i en lista ?

nikoMedlem sedan juni 20022 599 inlägg
#2

1.)

http://www.webforum.nu/showthread.php?s=&forumid=89&threadid=73460

2.)

Man kan meka in ikoner i en listbox via API:er, men jag rekommenderar nog ändå att du använder en listvy istället om du har såna behov. Då får du ikonerna (och många andra finesser) gratis.

ironheadMedlem sedan mars 20011 346 inlägg
#3

Tack så hemskt mycket! :birp

Föresten...vart hittar jag "listvy"?

sawMedlem sedan mars 20011 880 inlägg
#4

Niko menar nog en Listview(listvy på svenska?)

Nexus86Medlem sedan okt. 20023 030 inlägg
#5

ListView finns i Microsoft Windows Common Controls 6.0 och 5.0

Project > Components > Microsoft Windows Common Controls 6.0

ironheadMedlem sedan mars 20011 346 inlägg
#6

aha! Tackarr! :)

ironheadMedlem sedan mars 20011 346 inlägg
#7

Nu har jag lagt till en Listview...nu vill jag ha ikoner också...
Kontrollerna heter Listview1 & ImageList1.
i imagelist finns 2 ikoner 16x16 på plats 1 & 2

Jag har denna kod:

    Dim itmx As ListItem
    Set itmx = ListView1.ListItems.Add(, , "Namn", 1, 1)

Men när jag kör den får jag detta fel:

ImageList must be initialized before it can be used......

Hur gör jag det?

Nexus86Medlem sedan okt. 20023 030 inlägg
#8

Högerklicka på ListView1 i VB, välj Properties, gå till Image Lists-tabben, byt på Small till ImageList1.

ironheadMedlem sedan mars 20011 346 inlägg
#9

Thnx! :)

ironheadMedlem sedan mars 20011 346 inlägg
#10

För att hämta ut id:et i en ListBox använder jag denna kod:

ListGroup.ItemData(ListGroup.ListCount - 1) = RecSet("gruppid")

och hämtar id´t med:

Id = ListGroup.ItemData(ListGroup.ListIndex)

Hur skriver jag när jag har en ListView?

ironheadMedlem sedan mars 20011 346 inlägg
#11

Kan detta vara den rätta koden?

Id = ListGroup.SelectedItem.index

eller räknar man bara då värdet i själva listan, och inte id:t på posten?

red. Det var bara själva värdet i listan :(

nikoMedlem sedan juni 20022 599 inlägg
#12

En Listview har ingen ItemData-property däremot har varje item en Tag-property som du kan använda på ungefär samma sätt.

Ungefär:

    Set itmx = ListGroup.ListItems.Add(, , "Namn", 1, 1)
    itmx.Tag=RecSet("gruppid")

    ' ..
    ' Lite senare.
    Id=ListGroup.SelectedItem.Tag

Eventuellt måste du casta med CInt och CStr, men det märker du isåf.

ironheadMedlem sedan mars 20011 346 inlägg
#13

Lyyysande! :e

Då kommer jag direkt på en fråga till ;)

När jag nu klickat på ett namn i en ListView vill jag att ikonen på just den raden ska ändras till en annan...hur lyckas man med det?

Nexus86Medlem sedan okt. 20023 030 inlägg
#14
ListView1.SelectedItem.ReportIcon = numret på nya bilden i ImageList
ironheadMedlem sedan mars 20011 346 inlägg
#15

Tackar! :birp

...och hur får man tillbaka dom till bild1 när man klickar på annan rad?

Nexus86Medlem sedan okt. 20023 030 inlägg
#16

Byt ut föregående rad mot

Dim oItem As ListItem

For Each oItem In ListView1.ListItems
    If Not oItem.ReportIcon = 1 Then
        oItem.ReportIcon = 1 ' antagligen första bilden
    End If
Next oItem
Set oItem = Nothing

ListView1.SelectedItem.ReportIcon = 2 ' antagligen den nya bilden

R// Otestat eftersom jag inte orkar starta VB nu men det borde fungera ändå.

ironheadMedlem sedan mars 20011 346 inlägg
#17

miljOOOOOners Tack! :bire

ironheadMedlem sedan mars 20011 346 inlägg
#18

I själva listview rutan för kontaktinformationen har jag gjort såhär:

Dim itmx As ListItem
Dim colx As ColumnHeader
    
    Set colx = List1.ColumnHeaders.Add(, , "col1")
    Set colx = List1.ColumnHeaders.Add(, , "col2")
    Set colx = List1.ColumnHeaders.Add(, , "col3")

 Do Until RecSet.EOF
        
  If RecSet("fornamn") > 0 Then
   Set itmx = List1.ListItems.Add(, , RecSet("fornamn"))
   End If
        
  If RecSet("efternamn") > 0 Then
  itmx.SubItems(1) = RecSet("efternamn") 'Här vill jag ha ny rad!!!
  
 
  End If
  
    If RecSet("titel") > 0 Then
     itmx.SubItems(2) = RecSet("titel")
    End If

OSV OSV.

ska man göra såhär?
egentligen vill jag att beskrivningen typ namn, titel arbete ska finnas i kolumn 1 och vara i fet stil och uppgifterna skall finnas i kolumn 2....får inte till det och får ingen ny rad heller...allt skrivs från vänster till höger...hur göra?

Nexus86Medlem sedan okt. 20023 030 inlägg
#19

Hur menar du? Vill du ha RecSet("titel") i kolumn 1 och namnen i kolumn 2?

ironheadMedlem sedan mars 20011 346 inlägg
#20

näe, jag vill ha typ:

kolumn1            kolumn2
                   Anders Andersson
                   VD
                   Slagman & Bong

Arbete              026-234 34 23
                    070-344 34 23

Hem                 022-324 43 32
                    0730-343 32 22
134 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)