Quantcast
Channel: Visual Basic Tips and Tricks
Viewing all articles
Browse latest Browse all 2212

posizionamento icone controllo listview

$
0
0

ciao a tutti, sto sviluppando una parte di applicazione dove devo mostrare un'elenco di files e permettere all'utente di aprirne uno a sua scelta.

Uso VB6 SP6 su Windows 7 e ho un semplice form che contiene solo un oggetto ListView. La visualizzazione che preferirei avere è SmallIcon ma solo perchè con le altre (Icon o List) ho dei problemini che non riesco a comprendere. Vado per gradi:

definizione Listview:

   With lvwDocFiles

        '.Arrange = lvwAutoTop

        .View = lvwSmallIcon 'lvwIcon 'lvwList

        .GridLines = False

        .Checkboxes = False

        .AllowColumnReorder = False

        .HideColumnHeaders = True

'       .FullRowSelect = True

        .LabelEdit = lvwManual

        .Icons = imgFileIcons

        .SmallIcons = imgSmallFileIcons

    End With

Le due ImageList sono definite e riempite di immagini con le stesse posizioni e chiavi delle immagini (es. icona di file PDF ha come chiave pdf)

La listview si popola correttamente ma vedo che gli item non vengono posizionati a partire da alto/sinistra ma sembra che si tenga un certo offset. In particolare ho queste situazioni:

View=Icon

Perchè non allinea a sinistra?

View=SmallIcon

stessa domanda di prima

View=List

così è OK.

Infine se ridimensiono il form (e il form_resize fa in modo che la listview si ridimensiona automaticamente sempre a ricoprire tutta l'area del form) gli item nella listview possono sparire (ma sono sempre esistenti perchè se lo riallargo li trovo ancora anche se in posizioni randomiche)

Pensavo che ridimensionando la listview gli item si ridisponessero automaticamente e non sparissero oltre i limiti visibili.

il codice resize è:

Private Sub Form_Resize()

    With lvwDocFiles

        .Height = Me.Height

        .Width = Me.Width

        .Refresh

    End With

End Sub

mentre il caricamento listview è:

    LowBound = LBound(DocPhysicalFiles)

    UppBound = UBound(DocPhysicalFiles)

    For I = LowBound To UppBound

        FileFullPath = fso.BuildPath(SourcePath, DocPhysicalFiles(I).OriginalFileName)

        Extension = LCase(fso.GetExtensionName(FileFullPath))

        If Len(Extension) = 0 Then

            Extension = NULL_EXT

        Else

            If Len(Extension) > 3 Then Extension = Left(Extension, 3)

        End If

        ImageIndex = -1

        For Each Item In img.ListImages

            If Item.Key = Extension Then

                ImageIndex = Item.Index

                Exit For

            End If

        Next Item

        If ImageIndex = -1 Then ImageIndex = NullImageIndex

        lvwDocFiles.ListItems.Add , , DocPhysicalFiles(I).OriginalFileName, ImageIndex, ImageIndex

    Next I

Avete qualche suggerimento? Sbaglio qualcosa?

Grazie

Stefano

 

 


Viewing all articles
Browse latest Browse all 2212