Avatar billede martin_moth Mester
25. juni 2002 - 16:05 Der er 5 kommentarer og
2 løsninger

Listview - sidste spørgsmål: Ikoner...

Så lykkedes det mig at stille hele 3 spørgsmål vedr. listview. Her er så det 3. og nok sidste spørgsmål ;o)

I min ListView (jf. http://www.eksperten.dk/spm/228717) vil jeg gerne have vist et lille ikon til venstre for filnavnet i venstre kolonne (som i Stifinderen). Er der en NEM måde at gøre det på, og hvordan?

/Martin
Avatar billede kaffe Nybegynder
25. juni 2002 - 16:44 #1
Du skal bruge en imagelist, sæt et par små ikoner i imagelisten.
Vælg properties for listview og under fanen imagelists sætter du Small til "Imagelist1".

I koden hvor du tilføjer til listview skal der stå:

.ListItems.Add 1, "Item1", "Item1", , 1

, , 1 betyder at 'smallicon' skal være det første ikon i imagelist.
Avatar billede martin_moth Mester
25. juni 2002 - 16:49 #2
Imagelist - den er ny for mig...

Hvordan laver jeg en imagelist - ikonerne skal jo passe til den aktuelle fil (jeg smider gerne flere point efter et svar, hvis du mener det er nødvendigt :)
Avatar billede kaffe Nybegynder
25. juni 2002 - 17:09 #3
Imagelisten ligger sammen med listview'et. Ikonet ligner et par billeder der ligger lidt forskudt. Husk at vælge små ikoner (16x16) ellers får du nogle brede rækker.
Avatar billede martin_moth Mester
25. juni 2002 - 17:36 #4
Jeg mangler stadig at få læst ikonerne fra de enkelte filer ind - det er jo ikke bare et eller andet tilfældigt ikon der skal vises, men nn .txt-fil skal have een type ikon, en *.doc en anden osv...
Avatar billede kaffe Nybegynder
25. juni 2002 - 18:25 #5
Jeg tror det nemmeste vil være at finde de ikoner du vil bruge til henholdsvis .txt, .doc, .htm filer osv og smide dem ind i listview'et. Når du fylder listview kan du så lave en select sætning der bestemmer hvilket ikon der vises. Hvis du vil hive ikonet ud af en fil kan du bruge følgende fra www.allapi.net. Det hiver ikonet ud af en fil. Jeg kan dog ikke få vist ikonet i listview'et da det vil have en imagelist - men det kan jo være at du kan få noget ud af det...

'Create a new project, and add this code to Form1
Const DI_MASK = &H1
Const DI_IMAGE = &H2
Const DI_NORMAL = DI_MASK Or DI_IMAGE
Private Declare Function ExtractAssociatedIcon Lib "shell32.dll" Alias "ExtractAssociatedIconA" (ByVal hInst As Long, ByVal lpIconPath As String, lpiIcon As Long) As Long
Private Declare Function DrawIconEx Lib "user32" (ByVal hdc As Long, ByVal xLeft As Long, ByVal yTop As Long, ByVal hIcon As Long, ByVal cxWidth As Long, ByVal cyWidth As Long, ByVal istepIfAniCur As Long, ByVal hbrFlickerFreeDraw As Long, ByVal diFlags As Long) As Long
Private Declare Function DestroyIcon Lib "user32" (ByVal hIcon As Long) As Long
Private Sub Form_Paint()
    'KPD-Team 1999
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    Dim mIcon As Long
    'Extract the associated icon
    mIcon = ExtractAssociatedIcon(App.hInstance, "C:\Autoexec.bat", 2)
    'Draw the icon on the form
    DrawIconEx Me.hdc, 0, 0, mIcon, 0, 0, 0, 0, DI_NORMAL
    'remove the icon from the memory
    DestroyIcon mIcon
End Sub
Avatar billede martin_moth Mester
25. juni 2002 - 18:55 #6
Problemet er, at mit program skal lægges ud på flere PC'ere, som måske har forskellige programmer assioseret med forskellige typer filer, og derfor er det ikke sikkert at en *.doc har samme ikon på alle PC'erne. Derfor duer det ikke med en "statisk" imagelist, som jeg fylder een gang for alle.

Vejen frem må være i Runtime at få læst hvilke type ikoner der bruges til hvilke filer på netop den aktuelle PC... Og få dem vist - som i en almindelig stifinder. Jeg VED det kan lade sig gøre, jeg ved bare ikke hvordan... Jeg nappede noget kode fra http://www.eksperten.dk/spm/94732/ fra sjh, men jeg kan ikke gennemskue hvad han gør. Derfor spørger jeg her, om der er en nem måde uden alt for mange API-kald...

PS - du skal nok få point for din indsats - men jeg venter lige og ser om jeg ikke kan få lidt mere hjælp :o)
Avatar billede sjh Nybegynder
26. juni 2002 - 23:48 #7
(nem måde uden alt for mange API-kald...)

Ja, der findes en ocx som kan det du søger. :-)
http://www.vision-factory.com/activex.htm (EX Tree)
http://www.vision-factory.com/explorer.zip
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