Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ListView: selezionare un elemento

1,009 views
Skip to first unread message

Luca D.

unread,
Dec 28, 2000, 6:10:04 PM12/28/00
to
Vorrei sapere come si fa via codice a selezionare un elemento in una
listview.
Grazie !

CiAo :-)


--- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
UIN: 50254876
http://www.danteworkshop.f2s.com
--- --- --- --- --- --- --- --- --- --- --- --- --- --- ---


pal

unread,
Dec 28, 2000, 6:54:52 PM12/28/00
to

"Luca D." <dan...@galactica.it> ha scritto

> Vorrei sapere come si fa via codice a selezionare un elemento in una
> listview.
> Grazie !
> CiAo :-)
> UIN: 50254876
> http://www.danteworkshop.f2s.com

per esempio, per selezionarne uno a caso:
indice = Int((LV.ListItems.Count * Rnd) + 1)
Set LV.SelectedItem = LV.ListItems(indice)
per "indice" guarda l'help del listview

ciao, a.


Luca D.

unread,
Dec 28, 2000, 7:37:07 PM12/28/00
to
Ma per selezionare intendo anche visivamente e SelectedItem non mi sembra lo
faccia :( Come posso fare ?
Grazie.

CiAo :-)

"pal" <p...@zelig.it> ha scritto nel messaggio
news:92gjrj$6ssdl$1...@ID-51318.news.dfncis.de...

pal

unread,
Dec 28, 2000, 7:52:14 PM12/28/00
to
controlla le proprieta'.
ci deve essere qc tipo
-- selectfullrow
-- lascia selezionato quando perde il fuoco
se hai vb6. con vb5 dovrei cercare il codice.

"Luca D." <dan...@galactica.it> ha scritto nel messaggio
news:978053916.984637@NNTPCache01...

SKUNK

unread,
Dec 29, 2000, 4:07:05 AM12/29/00
to
Se queste sono le colonne della tua listview:

pippo pluto paperino
minnie paperone gamba di legno

così ti becchi l' indice della riga selezionata:

LsvIndice = listview.SelectedItem.Index

Se ad esempio clicchi su pippo, Lsvindice vale 1.
Così invece ti becchi quello che c'è nelle colonne della riga
selezionata:

nome = listview.SelectedItem.Text
cognome = lsvMp3.SelectedItem.ListSubItems.Item(1).Text
soprannome = lsvMp3.SelectedItem.ListSubItems.Item(2).Text

Esempio, se clicchi su minnie:

none = minnie
cognome = paperone
soprannome = gamba di legno

Saluti...

pal

unread,
Dec 29, 2000, 4:15:46 AM12/29/00
to
skunk, era il contrario... non gli serve sapere quale e' selezionato, ma
selezionarne uno, via codice, non via mouse...

avrei anche qualcosina da ridire sulla tua distribuzione di nome cognome
soprannome, se i dati sono quelli delle tue prime righe, ma non ho il tempo.
comunque a occhio pippo ecc sono sei items (nomi), e un paio di righe (per
combaciare col codice sotto) dovrebbere essere:

paolino paperino sfortunato
paperon depaperonis miliardario

ciao, a.

"SKUNK" <sku...@libero.it> ha scritto

SKUNK

unread,
Dec 29, 2000, 4:35:44 AM12/29/00
to
Cia Zio Pal!! :))
mi aggiungo anche io che devo giusto chiedere due cose sulla list
view.

>controlla le proprieta'. ci deve essere qc tipo
>-- selectfullrow
>-- lascia selezionato quando perde il fuoco

Ma sei sicuro che sia questa la proprietà giusta? Io neanche la
trovo...

>se hai vb6. con vb5 dovrei cercare il codice.

Veniamo a noi :)) Io ho vb6, come si fa a:

1) selezionare l' intera riga di una listview quando faccio click su
un suo elemento? Io ho notato un paio di cose, faccio un disegnino
perchè segna disegnetti non so psiegarmi :))

Considera queste come le colonne della mia listview

pippo pluto paperino
minnie paperone gamba di legno

Se clicco su minnie mi evidenzia nel rettangolino blu solo la parola
minnie, per far si che si tiri una riga o simile, che prenda anche
paperone e gamba di legno, come si fa?

2) Perchè se clicco su minnie, mi evidenzia questa nel rettangolino
blu e l' indice della listview vale 2 (giusto), mentre se cliccco su
paperone mi seleziona (o gamba di legno) pippo e l' indice di
conseguenza vale 1? Ma una listview, considera solo il primo item
selezionabile di una colonna? (in questo caso gli unici selezionabili
sarebbero pippo o minnie?!?!) Se io seleziono il secondo (paperone) e
non il primo item (minnie) la listview mi prende sempre il primo della
prima riga? (pippo)

3) Cliccando su minnie, le fa il rettangolino blu intorno, se ci
riclicco il rettangolimo diventa bianco con il cursore che lampeggia e
mi darebbe la possibilità di cambiare quello che cè scritto dentro. A
parte che se anche cambio il testo dell' item non lo salva, quindi non
serve a niente, e poi, se io non voglio che qualuno cambi il contenuto
delle colonne di una listview, come faccio? Non esiste una proprieà
tipo locked delle textbox?

Saluti...

PS: passato bene il natale? :))

SKUNK

unread,
Dec 29, 2000, 4:56:30 AM12/29/00
to
>skunk, era il contrario... non gli serve sapere quale e' selezionato, ma
>selezionarne uno, via codice, non via mouse...

Ho visto quando ha risposto al tuo post, infatti se vedi, adesso mi
sono messo anche io trà quelli che fanno le domande :))
Selezionare via codice...io una cosa del genere forse l' ho fatta, ma
aspetto che qualcuno gli risponde prima di parlare...

>avrei anche qualcosina da ridire sulla tua distribuzione di nome cognome
>soprannome, se i dati sono quelli delle tue prime righe, ma non ho il tempo.

Ho promesso che non mi immischierò più in discussioni lunghe 90 post
per cose del genere :))

>comunque a occhio pippo ecc sono sei items (nomi), e un paio di righe (per
>combaciare col codice sotto) dovrebbere essere:

> paolino paperino sfortunato
> paperon depaperonis miliardario

Spetta fammi capire, quello che non ti convince è il codice che ho
scritto, o il fatto che ho messo soprannome = gamba di legno? Se
questo è l' errore...bhè, mi serviva un altro campo testuale dopo nome
e cognome e c' ho messo soprannome, è il primo che mi è venuto in
mente :) Era solo un esempio, non credo che questa sia una cosa
importante ai fini di un esempietto come quello che ho postato io, se
invece il codice era sbagliato allora è un altro discorso...bhè, quale
delle due? Stangato ancora una volta dalla onnipresente precisione di
Zio Pall oppure ho scritto una boiata io? :))

PS: ora ti prendi anche i meriti del mio sapere!?! Tzè, incredibile...
:)) Dopo che ho risposto ad un post su ADO, Della Bianca ha replicato
in questo modo: (parole sue!!!)

> Ehi Pal, hai visto il nipotino? l'hai tirato su proprio bene ....
> E' quasi arrivato al livello in cui pochi riusciranno ad aiutarlo ...
> Me sa che avrete dei trietti, *Alessandro*, Jimi, SHUNK.

Hehehehe, premesso che per arrivare ai livello a cui si riferiva lui,
purtroppo, mi manca ancora qualche pelo dietro la schiena e qualche
baffo lungo e setoso :))) Se girando in strada vedrai ragazze
sconvolgersi al tuo passaggio, lanciarti reggiseni o biancheria...è
perchè si è sparsa questa voce che sono una tua creazione :)))
Ma infondo...sei l' unico che mi ha sempre dato fiducia... :°)) Zio
Pal... HUAAAA HUUUAAAA :°°°))) Piango di gioia :))))) Hihihihihihi

Saluti!!!!

pal

unread,
Dec 29, 2000, 5:08:44 AM12/29/00
to

"SKUNK" <sku...@libero.it> ha scritto nel messaggio

> >comunque a occhio pippo ecc sono sei items (nomi), e un paio di righe
(per
> >combaciare col codice sotto) dovrebbere essere:
>
> > paolino paperino sfortunato
> > paperon depaperonis miliardario
>
> Spetta fammi capire, quello che non ti convince è il codice che ho
> scritto, o il fatto che ho messo soprannome = gamba di legno? Se
> questo è l' errore...bhè, mi serviva un altro campo testuale dopo nome
> e cognome e c' ho messo soprannome, è il primo che mi è venuto in
> mente :) Era solo un esempio, non credo che questa sia una cosa
> importante ai fini di un esempietto come quello che ho postato io

invece lo e', e parecchio, specie se stai aiutando qualcuno.
se dico che i campi di un lvAutomobili sono marca e modello,
non posso fare un esempio con:
fiat panda
alfa lancia
toyota corolla
ford opel
seno' chi legge non ci capisce piu' una mazza

una volta si diceva: non puoi sommare mele e pere...

quanto alle mie creazioni, mi chiameranno
frankenstein-si-dice-frankenstijn ?
:)

ciao, a.

ps -- all'altro post rispondo oggi che ora sono di corsa.


pal

unread,
Dec 29, 2000, 7:07:32 AM12/29/00
to

"SKUNK" <sku...@libero.it> ha scritto
..
> Cia Zio Pal!! :))

mi fido dei tuoi refusi e spero di non passare da zio a cia o fbi (c'e' gia
fibia :)

> >controlla le proprieta'. ci deve essere qc tipo
> >-- selectfullrow
> >-- lascia selezionato quando perde il fuoco
> Ma sei sicuro che sia questa la proprietà giusta? Io neanche la
> trovo...

si'. con vb6 il lv ha una proprieta' fullrowselect, che in visualizzazione
dettagli evidenzia l'intera riga.

> >se hai vb6. con vb5 dovrei cercare il codice.

trovato:
'declare:
'listview full line
Public Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, _
ByVal Msg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long

Public Const LVM_FIRST = &H1000
Public Const LVM_SETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 54
Public Const LVM_GETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 55

Public Const LVS_EX_FULLROWSELECT = &H20

'form_load: qui il lv si chiama lvFL
lReturn = SendMessageLong(lvFL.hwnd, _
LVM_SETEXTENDEDLISTVIEWSTYLE, _
LVS_EX_FULLROWSELECT, True)

> Veniamo a noi :)) Io ho vb6, come si fa a:
>
> 1) selezionare l' intera riga di una listview quando faccio click su
> un suo elemento? Io ho notato un paio di cose, faccio un disegnino
> perchè segna disegnetti non so psiegarmi :))

gia'. provo a cercarti una tastiera con disegnetti cosi' forse diventi anche
un bravo dattilografo :)))

> Considera queste come le colonne della mia listview
>
> pippo pluto paperino
> minnie paperone gamba di legno
>
> Se clicco su minnie mi evidenzia nel rettangolino blu solo la parola
> minnie, per far si che si tiri una riga o simile, che prenda anche
> paperone e gamba di legno, come si fa?

vedi sopra

> 2) Perchè se clicco su minnie, mi evidenzia questa nel rettangolino
> blu e l' indice della listview vale 2 (giusto), mentre se cliccco su
> paperone mi seleziona (o gamba di legno) pippo e l' indice di
> conseguenza vale 1? Ma una listview, considera solo il primo item
> selezionabile di una colonna? (in questo caso gli unici selezionabili
> sarebbero pippo o minnie?!?!) Se io seleziono il secondo (paperone) e
> non il primo item (minnie) la listview mi prende sempre il primo della
> prima riga? (pippo)

oddio, ci ho capito poco. te lo dicevo che gli esempi devono essere chiari
:)
se tu hai messo il lv con
view = 3 - lvwReport
doresti avere qc come
nome eta tipo
mickey 35 buono
minnie 25 buono
gamba 40 cattivo
pippo indef. buono

a questo punto se clicchi su un subitem come 35 o buono, e _se_ hai messo
fullrowselect, ti _deve_ evidenziare la riga di minnie.

dal tuo esempio con tutti nomi di personaggi sembra piuttosto un lv in
modalita' icone,

tieni sempre presente gestione risorse, che e' un lv che sta sempre davanti
agli occhi.


>
> 3) Cliccando su minnie, le fa il rettangolino blu intorno, se ci
> riclicco il rettangolimo diventa bianco con il cursore che lampeggia e
> mi darebbe la possibilità di cambiare quello che cè scritto dentro. A
> parte che se anche cambio il testo dell' item non lo salva, quindi non
> serve a niente, e poi, se io non voglio che qualuno cambi il contenuto
> delle colonne di una listview, come faccio? Non esiste una proprieà
> tipo locked delle textbox?

si':

Private Sub LV_BeforeLabelEdit(Cancel As Integer)
Cancel = True
End Sub

> Saluti...
>
> PS: passato bene il natale? :))

si', grazie. ma non ho dormito abbastanza :))

ciao, a.


SKUNK

unread,
Dec 29, 2000, 8:02:16 AM12/29/00
to
>invece lo e', e parecchio, specie se stai aiutando qualcuno.
>se dico che i campi di un lvAutomobili sono marca e modello,
>non posso fare un esempio con:
> fiat panda
> alfa lancia
> toyota corolla
> ford opel
>seno' chi legge non ci capisce piu' una mazza

bhà...secondo me non è così importante, anche perchè io ho detto che
nella mia lview ci sono tre campi, poi posso chiamarli come voglio,
non è che cambia qualcosa in base a che nome gli do, io ho postato un
codice funzionate :)) a prescinedere dal fatto che per me gamba di
legno è un soprannome :))

>una volta si diceva: non puoi sommare mele e pere...

Infatti non ho sommato niete, ho detto..."ho tre gruppi: delle mele,
delle pere e un copertone di una macchina..." saranno anche diversi,
ma sempre tre sono :)) Gamba di legno potrà anche non essere un
soprannome, ma la discussione del post non era nata sul che nomi
mettere alle intestazioni delle colomme doi una lview, e di
conseguenza se quello che ci va sotto è attinente.

>quanto alle mie creazioni, mi chiameranno
>frankenstein-si-dice-frankenstijn ?
>:)

Hehehehe, parlate bene o parlate male, ma l' importante è che ne
parliate :)))

>ps -- all'altro post rispondo oggi che ora sono di corsa.

Si si grazie, che quello mi interessa.

SKUNK

unread,
Dec 29, 2000, 9:14:01 AM12/29/00
to
>mi fido dei tuoi refusi e spero di non passare da zio a cia o fbi (c'e' gia
>fibia :)

No no, stai tranquillo :)

>si'. con vb6 il lv ha una proprieta' fullrowselect, che in visualizzazione
>dettagli evidenzia l'intera riga.

Hai ragione, c'č!!! L' ho tovata e funziona pure!! :))

>gia'. provo a cercarti una tastiera con disegnetti cosi' forse diventi anche
>un bravo dattilografo :)))

Ma piů che altro non perdo tempo a doverli fare io :)

>vedi sopra

Punto 1 risolto...

>oddio, ci ho capito poco. te lo dicevo che gli esempi devono essere chiari
>:)

Per me va bene, tieniamo il tuo esempio.

>se tu hai messo il lv con
>view = 3 - lvwReport
>doresti avere qc come
>nome eta tipo
>mickey 35 buono
>minnie 25 buono
>gamba 40 cattivo
>pippo indef. buono

>a questo punto se clicchi su un subitem come 35 o buono, e _se_ hai messo
>fullrowselect, ti _deve_ evidenziare la riga di minnie.

E no!! Dovrebbe e non ti deve, visto che non lo fa :) Ti spiego meglio
(ci provo)...ora riesco a selezionare un intera riga, questo funziona,
perň se il primo click sulla listview, io lo faccio su 40 o cattivo
piuttosto che su gamba, nella list mi si seleziona automaticamente
mickey e non l' itera rigadi gamba; prova se hai tempo. Adesso me lo
fa solo per il primo click, mentre prima ogni volta che cliccavo su
qualcosa che non era il nome (cosniderando la tua tabellina); perchč
fa cosě?

>dal tuo esempio con tutti nomi di personaggi sembra piuttosto un lv in
>modalita' icone,

No che icone, non ci sono icone.

Punto 3 risolto!!!

Saluti...

>si', grazie. ma non ho dormito abbastanza :))

e dillo a me!!

Luca D.

unread,
Dec 29, 2000, 9:43:59 AM12/29/00
to
Da MSDN:
Nota: Anziché utilizzare la proprietà Selected per selezionare a livello di
programmazione un oggetto ListItem, è consigliabile utilizzare l'istruzione
Set con la proprietà SelectedItem, come di seguito indicato:

Set ListView1.SelectedItem = ListView1.ListItems(1)

Infatti è come tu hai detto, ma non mi seleziona neinte :((

Luca D.

unread,
Dec 29, 2000, 9:41:32 AM12/29/00
to
> controlla le proprieta'.
> ci deve essere qc tipo
> -- selectfullrow

Si, c'è FullRowSelect che come hai già chiarito in un'altro post ti
seleziona l'intera riga quando tu selezioni un elemento in una colonna, però
con quella non seleziono un elemento...

> -- lascia selezionato quando perde il fuoco

Hmmm non penso sia questa, cmq non l'ho trovata.

> se hai vb6. con vb5 dovrei cercare il codice.

Ho vb6 :)

CiAo :-)

pal

unread,
Dec 29, 2000, 12:19:49 PM12/29/00
to
riunisco qui i due thread

"Luca D." <dan...@galactica.it> ha scritto.

strano. faccio un esempio con un lv che ho sotto gli occhi:
elenco di file.
organizzazione tipo gestione risorse in visual dettagli.
con la griglia mostrata, sembra una tabella.
fullrowselect o comesichiama attivato.

se clicco sulla data di un file, mi evidenzia l'intera riga e mi restituisce
l'_indice_ dell'_item_ selezionato. _non_ mi dice su quale subitem ho fatto
clic.

se quello che vi interessa e' sapere quale subitem, c'e' stato ca. 10 gg fa
un interessante thread mi sembra partito da marioh in cui si dibatteva l'uso
dell'api a questo scopo. se fate in oe
^-maiusc-f ---> "listview" dovreste trovarlo.

ciao, a.


Luca D.

unread,
Dec 29, 2000, 12:50:35 PM12/29/00
to
Ma io non voglio che quando clicco mi selezioni l'intera riga, ma voglio che
mi selezioni l'intera riga dicendoglielo via codice, passando l'indice.
Cioè io ho una listview in un form e voglio che quando carico il form sia
già selezionato un elemento nella list...

CiAo :-)


pal

unread,
Dec 29, 2000, 1:37:14 PM12/29/00
to

"Luca D." <dan...@galactica.it> ha scritto

l'avevo capito, e la procedura e' esattamente quella che ti abbiamo detto io
e msdn :)

prova qualcosa tipo (scrivo al volo in oe, quindi controlla)

sub command1_click
dim j as integer
j = lv.selecteditem.index
j = j+1
' non mi ricordo mai se ci va .count o .count-1 :
if j <= lv.listitems.count then _
ListView1.SelectedItem = ListView1.ListItems(j)
end sub

se tieni evidenziata l'intera riga,
dovresti vedere l'evidenziazione scendere man mano che premi il cmd.

ciao, a.


Luca D.

unread,
Dec 29, 2000, 2:12:35 PM12/29/00
to
Popietą HideSelection attivata di default !!! :(((

CiAo :-)


0 new messages