Newsgroup: it.comp.lang.visual-basic
Titolo: Selezione multipla in ListView da codice VB6

Salve a tutti.
Vorrei implementare un pulsante Seleziona tutti in una Listview.
Sono riuscito facilmente a impostare la proprietà Checked di tutte le righe,
ma vorrei poter selezionare le righe, cioè conferire a tutte l'aspetto blu,
come se avessi fatto clic sulla prima e sull'ultima tenendo premuto Shift.
Ho cercato a lungo sul web, e ho trovato riferimenti su come selezionare un
singolo record, ma non ho trovato come selezionare più record da codice. Ho
letto post che menzionano una collection SelectedItems e menzioni ad un
oggetto FocusedItem, però io non ho disponibili questi oggetti e ciò mi fa
pensare che forse io ho un controllo diverso (sebbene tutti questi post
fossero per VB.Net): io ho incluso nel progetto il MS Windows Common
Controls 6.0 (SP6) e il MS Windows Common Controls-2 (SP4). VB6 ha il
Service Pack 6.
Qualcuno può darmi indicazioni su come procedere o delucudazioni sul
controllo?
Grazie a tutti per l'attenzione.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 ha scritto nel messaggio
news:82Z190Z206Z26Y1...@usenet.libero.it...

Scusa la soluzione ma io queste cose le faccio solo con le API per non
perdermi in CICLI inutili che perdono tempo...!
Call SelectAllRows(TuaListView.hWnd)
' Metti questo codice in un Modulo...!
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA"
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As
Any) As Long
Public Enum LVITEM_Mask
    LVIF_TEXT = &H1
    LVIF_IMAGE = &H2
    LVIF_PARAM = &H4
    LVIF_STATE = &H8
    LVIF_INDENT = &H10
    LVIF_NORECOMPUTE = &H800
End Enum
Public Enum LVITEM_States
    LVIS_FOCUSED = &H1
    LVIS_SELECTED = &H2
    LVIS_CUT = &H4
    LVIS_DROPHILITED = &H8
    LVIS_ACTIVATING = &H20
    LVIS_OVERLAYMASK = &HF00
    LVIS_STATEIMAGEMASK = &HF000
End Enum
Type LVITEM
    mask As LVITEM_Mask
    iItem As Long
    iSubItem As Long
    state As LVITEM_States
    stateMask As LVITEM_States
    pszText As Long     '// LPCSTR
    cchTextMax As Long
    iImage As Long
    lParam As Long
    iIndent As Long
End Type
Const LVM_FIRST = &H1000                     '// ListView messages
Const LVM_SETITEMSTATE = (LVM_FIRST + 43)
Sub SelectAllRows(lvHwnd as Long)
  Dim ulvi As LVITEM
  ulvi.state = LVIS_SELECTED
  ulvi.stateMask = LVIS_SELECTED
  Call SendMessage(lvHwnd , LVM_SETITEMSTATE, -1, ulvi)
End Sub
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.alessandrobaraldi.it
---------------------------------------------------------------------------


[CUT]
Ciao Alessandro, grazie per la risposta. Però il tuo suggerimento sembra non
avere effetto: ho incollato il codice che mi hai postato, passando il nome
della mia listview come riferimento, ma le righe rimangono le stesse, cioè
non appaiono selezionate. Questo è quallo che succede pure a me quando provo
a impostare la proprietà Selected di ognuna. Mi sto anche domandando se sia
possibile una cosa del genere, e penso che dovrebbe esserlo visto che lo si
può fare con il mouse.
Però il tuo riferimento ai cicli mi ha suscitato una riflessione: perché, è
possibile farlo con un ciclo?
Grazie a tutti coloro che mi aiuteranno.



Ovviamente hai impostato la proprietà Multiselezione .....????
Spero di si altrimenti meriti una tirata di Orchiti.... ;.)
Per selezionarli tutti il metodo che ti ho suggerito è il migliore...
tuttavia risulta possibile ciclare gli Items della ListView ed
impostare la proprità Selected per ognuno di questi....
@Alex

 mouse.
Oltre a Multiselect = True, hai impostato anche HideSelection = False? 
Perché altrimenti quando la listview perde il focus, la selezione non si 
evidenzia.
Bye
Raf

 evidenzia.
Si, ecco, l'ho scoperto poco fa: io impostavo Selected = True a tutti con un
ciclo, ma alla fine non erano blu. Poi per caso mi sono spostato con Tab e
appena la listview riceveva il focus erano tutti blu! Bingo.
Adesso cerco la proprietà HideSelection, perché al momento sono fuori stanza
e non mi ricordo di averla vista durante tutti i tentativi che ho fatto, ma
il concetto è proprio quello.
Grazie davvero, stasera vi faccio sapere com'è andata. Bye.


 impostare la propritą Selected per ognuno di questi....
Si Alex, ho capito il senso, solo che anche con le API gli item non
diventano blu. Ma adesso ho capito che la cosa riguarda il focus del
controllo, appena rientro riprovo anche con la tua tecnica.
PS: sono yronium.


 Adesso cerco la proprietà HideSelection
Confermo, era proprio quella: HideSelection.
Grazie di cuore a tutti e Buone Feste


 PS: sono yronium.
Ma allora ti mimetizzi...
Sinceramente non sò quale parametro API corrisponfa al suggerimento di
Rafunk ma
è decisamente più comodo settarlo da VB... per il SelectAll invece rimango
della mia idea...
;-)
Ciao
