Newsgroup: it.comp.lang.visual-basic
Titolo: lista di immagini

Ho bisogno di visualizzare sullo schermo una lista di immagini (il cui
numero può variare) con un commento sotto di cui l'utente deve sceglierne
una. ho provato con una listview ma non mi sembra il modo migliore (fra
l'altro si può cambiare la scritta o spostare le immagini cosa che io non
voglio proprio ma non so come impedire). Quale controllo è meglio usare?
Grazie


potresti usare la normale PictureBox e caricartene N a run-time quante N
immagini hai...
ma forse cosi c'è un limite di controlli massimo su un form... :(
Sbaglio?
Ciauz
Fabio

 ha scritto nel messaggio
news:Q2Ao8.82958$%g7.26...@twister2.libero.it...

Se consideriamo i controlli forniti con VB, qualcosa di gia' pronto non
c'e', e quello che piu' si avvicina a cio' che ti serve e' proprio il
ListView.
Per quanto riguarda i due problemini accennati sopra, puoi ovviare usando
'disattiva la modifica automatica del testo
ListView1.LabelEdit = lvwManual
'disattiva il trascinamento degli oggetti all'interno del LV
ListView1.OLEDragMode = ccOLEDragAutomatic
in ogni caso potresti tranquillamente creare qualcosa di piu'
personalizzato, senza ricorrere a controlli esterni, per esempio con un
PictureBox contenitore, un array di Images e un paio di scroll bars... ti
lascio giusto una traccia:
In un form vuoto aggiungi un PictureBox abbastanza grande, e al suo interno
aggiungi un controllo Image; chiama il primo PicContainer e il secondo
imgThumbnail, quindi aggiungi questo codice
Private Sub Form_Load()
With picContainer
    .BackColor = vbApplicationWorkspace
    .ScaleMode = vbPixels
End With
'questo e' l'elemento base per caricare l'array,
'non e' necessario sia visibile. Impostiamo qui
'le dimensioni predefinite: 100*100 pixels
With imgThumbnail(0)
    .Visible = False
    .Stretch = True
    .Move 0, 0, 100, 100
End With
End Sub
Private Sub Form_Resize()
picContainer.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
End Sub
Private Sub picContainer_Click()
Dim strFile         As String
Dim i               As Long
Dim ColCount        As Integer
Dim ColSeparator    As Integer
Dim ColNumber       As Integer
Dim RowNumber       As Integer
'quante immagini 100*100 possono stare su una riga?
ColCount = picContainer.ScaleWidth \ 100
'lo spazio approssimativo che separa un immagine
'dall'altra, su una stessa riga
ColSeparator = (picContainer.ScaleWidth Mod 100) \ ColCount
ColNumber = 0
RowNumber = 0
strFile = Dir$("c:\winnt\*.bmp")
Do While strFile <> ""
    i = i + 1
    Load imgThumbnail(i)
    With imgThumbnail(i)
        'cerchiamo di dare una spaziatura uniforme alle miniature, non e'
        'necessario impostare la dimensione perche' vengono mantenute quelle
        'dell'elemento base (quello invisibile con indice 0)
        .Move (100 + ColSeparator) * ColNumber, (100 + ColSeparator) *
RowNumber
        .Picture = LoadPicture("c:\winnt\" & strFile)
        .Visible = True
    End With
    ColNumber = ColNumber + 1
    If ColNumber = ColCount Then
        ColNumber = 0
        RowNumber = RowNumber + 1
    End If
    strFile = Dir$
Loop
End Sub
Vedi un po se ti serve... aggiungere le descrizioni e le barre di
scorrimento te lo lascio come compito a casa ;-)
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 ha scritto nel messaggio
news:Q2Ao8.82958$%g7.26...@twister2.libero.it...

Io ho fatto così:
dato un percorso (ad esempio c:\documenti\immagini\) ciclo su tutti i file
(senza considerarne l'estensione), cerco di caricare ogni file come immagine
di un controllo image nascosto, se  l'operazione va a buon fine faccio la
paintpicture dell'image direttamente sul form (in realtà nel mio caso era un
usercontrol) con le dimensioni ridotte a 100x100, avendo cura di mantenere
le proporzioni dell'immagine originale. Siccome le immagini possono essere
molte, mi limito a visualizzarne solo 12 per volta (4x3), ho aggiunto due
bottoni (precedente e successivo) e premendo leggo le 12 immagini precedenti
e successive.
Quando faccio la paintpicture aggiungo sul form un rettangolo come bordo e
faccio anche la print  del nome del file.
Così facendo ho lo stesso effetto dell'anteprima dell'esplora risorse di Win
ME.
Spero di essermi spiegato.
Saluti,
Pusky



io ho fatto una cosa del genere proprio qualche giorno fa:
ho utilizzato una form mdi che carica un'array di oggetti form in
numero corrispondente alle immagini da visualizzare.
ti basta creare una form campione con un controllo picturebox e una
label e nel form mdi impostare un array di quel form campione.
trovi tutte le istruzioni sull'help, ma se hai bisogno aiuto su
qualcosa di specifico chiedi pure. :-)
--
Ciao!
Davide