Newsgroup: it.comp.lang.visual-basic
Titolo: ListBox Multi-Selection

Ciao a tutti,
utilizzo VB4 ed ho questo piccolo problemino.
Ho una ListBox (per la precisione una FileListBox) che contiene dunque i
file di una Directory
supponiamo che siano 1000 o piu' files, debba selezionarli tutti, ho due
strade:
a) seleziono il primo, poi tenendo SHIFT seleziono l'ultimo
b) metto un bottone che fa la stessa cosa
ovviamente la listbox e' in MultiSelection.
Per la soluzione a) nessun problema, e' tutto velocissimo, per la soluzione
b) ....qui' casca l'asino (cioe' io :-)))
Come fare a selezionare TUTTI (dal primo all'ultimo) gli elementi ???
Ho usato il classico ciclo di For da 0 a listcount-1 impostando la
proprieta' Selected=true di ciascun elemento, ma cosi' facendo la listbox
(ovviamente) la ListBox seleziona un elemento alla volta e scrolla fino alla
fine, capite che se gli elementi sono 1000 o piu' la cosa e' pesante!!!!
C'e' un altro modo ???
Grazie anticipatamente, attendo prodighi aiuti!!!!
CIAOAIC
======================
_/_/_/  _/_/_/
_/      _/   _/
_/_/_/  _/_/_/
_/      _/   _/
_/      _/_/_/
fab...@login.it
fabio...@hotmail.com
fabio...@usa.net
======================
--
Automatic posted from 
login.login.it
 [194.184.84.2]
via Mailgate Server - 
http://www.mailgate.org

 C'e' un altro modo ???
Zzzzz Zzzz ..... Sento volare un'Ape.....
che guarda caso si e' posata proprio su questa mail.
Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long,
ByVal lParam As Long) As Long
Const LB_SELITEMRANGE = &H19B
    ' questa chiamata abilita tutti gli item
    Call PostMessage(List1.hwnd, LB_SELITEMRANGE, 1, (List1.ListCount - 1) * 65536)
    ' quasta chiamata li disabilita tutti.
    Call PostMessage(List1.hwnd, LB_SELITEMRANGE, 0, (List1.ListCount - 1) * 65536)
Nel parametro lParam la word bassa e' l'item di partenza, e la word alta quello di fine.
Buon lavoro
-- 
Hi, Ciao
Ettore                 By -MES-
http://freeweb.aspide.it/freeweb/ilmes
Il sito comune di programmatori VB
http://members.xoom.com/it_lang_vb


Potresti usare l'API SendMessage() con messaggio LB_SELITEMRANGE:
SendMessage(ListBox1.hWnd, LB_SELITEMRANGE, True, ListBox1.ListCount-1)
Non ho mai provato, quindi e' possibile che ci siano degli aggiustamenti da
fare...
Inoltre non sono sicuro che funzioni anche con i FileListBox.
Le Declare per funzioni e costanti le trovi nel Visualizzatore API.
Sotto ti riporto anche l'help del messaggio LB_SELITEMRANGE, per maggiori
informazioni.
--
Roal Zanazzi
z...@iol.it
An application sends an LB_SELITEMRANGE message to select one or more
consecutive items in a multiple-selection list box.
LB_SELITEMRANGE
wParam = (WPARAM) (BOOL) fSelect;   // selection flag
lParam = MAKELPARAM(wFirst, wLast); // first and last items
Parameters
fSelect
Value of wParam. Specifies how to set the selection. If the fSelect
parameter is TRUE, the string is selected and highlighted; if fSelect is
zero, the highlight is removed and the string is no longer selected.
wFirst
Value of the low-order word of lParam. Specifies the zero-based index of the
first item to select.
wLast
Value of the high-order word of lParam. Specifies the zero-based index of
the last item to select.
Return Values
If an error occurs, the return value is LB_ERR.
Remarks
Use this message only with multiple-selection list boxes.
This message can select a range only within the first 65,536 items.
See Also
LB_SELITEMRANGEEX, LB_SETSEL