Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Scrollare orizzontalmente una listview

Immaginiamo di avere una listview con molte colonne. La freccia a destra o a
sinistra scrolla orizzontalmente la listview, ma con una lentezza
esasperante. Trascinando col mouse la barra di scorrimento si rischia di non
vedere la colonna che interessa perchè scappa via troppo alla svelta. Non mi
pare che ci siano altro modalità di scroll...
Insomma, vorrei farmi, da codice, uno scroll orizzontale per colonna, nel
senso che la listview si sposta a sinistra o a destra di una colonna intera
a ogni botta.
Da una vecchia nota ho che "...Non si sposta cambiando .Left di Listitems,
nemmeno se lo si fa con tutte le righe e la .Left di ColumnHeaders e' di
sola lettura..."
Insomma, come fare? Grazie.

Il 21/04/2004 18.05, Lupo scrisse:

Se ho capito bene cosa vuoi fare:
Public Const LVM_SCROLL As Long = 4116
SendMessage ListView1.hWnd, LVM_SCROLL, 20, 0
il terzo e quarto parametro sono rispettivamente lo spostamento 
orizzontale e verticale in pixel (in modalita' report).
ciao
	maxx
-- 
NOSPAM: Rimuovere i trattini dallo username!
Cut hyphens from my username!

 colonna intera a ogni botta.
Parziale soluzione (che non conoscevo), ma obbliga all'uso del mouse:
cliccando sulla parte bianca della barra di scorrimento orizzontale la
griglia si sposta di una paginata...

 orizzontale e verticale in pixel (in modalita' report).
Grazie, ci proverň.
Sai dove lo voglio mettere, vero?! ;-)

 Grazie, ci proverň.
Funziona. Domani ci pastrocchio. Grazie ancora.

 
Nella mia versione personalizzata lo avevo gia' messo!
;-)


 griglia si sposta di una paginata...
Il problema è che se tieni premuto ti sposti di mille paginate.
Ho avuto una brutta esperienza con questa cosa... :-(
bye
-- 
Esistono 10 tipi di persone: chi conosce il binario e chi no.
Gestione Ottica - Gestionale per Ottici e Programmi Gratuiti su:
http://www.nicolaottomano.it

 ;-)
Ok, fine degli aggiornamenti personalizzati.

Il 21/04/2004 23.12, Lupo scrisse:

Nooooooooooooooooooooooooooooooooooooooooooooooooooooooo!
Scherzavo, Scherzavo, Scherzavo, Scherzavo, Scherzavo, Scherzavo, 
Scherzavo,  Scherzavo, Scherzavo, Scherzavo, Scherzavo, Scherzavo!!!
:-)


[Lupo = 
circa_LupoOrm...@libero.it
 in
c66863$8dv3u$
1...@ID-174464.news.uni-berlin.de
] ha scritto:

Non funziona un tubo!
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd
As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
'Non cambia niente anche se ... lParam As Long)
Se lv_sql č una ListView (modalitŕ report), quanto segue (4116 consegue da
&H1000+20 pari a LVM_SCROLL) dovrebbe scrollare a destra di 20 pixels. Lo
fa, ma mi va anche a
fine listview (in verticale), pur non cambiando la riga selezionata. Devo
forzare un EnsureVisible, che perň mi pone in testa la riga selezionata,
togliendomela da sotto gli occhi.
Call SendMessage(lv_sql.hwnd, 4116, 20, 0)
Quanto segue dovrebbe invece scrollare in verticale di 20 pixels. Non fa
niente, nemmeno se la riga selezionata e in vista sta in mezzo alla listview
e questa ha piů righe di quelle che stanno nella parte visibile.
Call SendMessage(lv_sql.hwnd, 4116, 0, 20)
Uso VB6 SP5 e Microsoft Common Controls 6.0 (SP4) pari a MSCOMCTL.OCX
(6.0.88.62)
Sbatto via tutto?

 
Noooooooooooooooooooooooooooooooooooooooooooooo!
Fai la chiamata cosi':
Call SendMessage(lv_sql.hwnd, 4116, Byval 0, Byval 20)
Non chiedere perche', sai chi lo sa!
ciao
	maxx
P.S. Ho provato e funge.


 P.S. Ho provato e funge.
Anche a me, ma ho applicato solo lo scroll orizzontale (perchè m'ha rovinato
la giornata), al solito indirizzo.
PS.mio: Dove si trovano i numerelli dei messaggi (SendMessage) per i vari
oggetti, come quel 4116=&H1000+20?

 
Scaricati questo:
http://prdownloads.sf.net/mingw/w32api-2.5.tar.gz?download
e poi guarda nel file commctrl.h
Se hai visual c++ dovresti cercare tra gli include files.
ciao
	maxx


 Se hai visual c++ dovresti cercare tra gli include files.
Api Viewer non e' meglio? :P
Lokar
-- 
Sito Comune: 
http://www.it-lang-vb.net/
Manifesto: 
http://www.it-lang-vb.net/docs/Manifesto.txt
Statuto: 
http://www.it-lang-vb.net/docs/Statuto.txt
UGIdotNET - 
http://www.ugidotnet.org

 
Se ci fossero tutte. In quello che ho io non ci sono.
Forse bisognerebbe aggiornare qualche file (che evidentemente non viene 
aggiornato dai vari service pack), ma comunque per le api che non 
conosco bene preferisco gli include files perche' a volte contengono 
anche qual;che informazione aggiuntiva.


 
http://prdownloads.sf.net/mingw/w32api-2.5.tar.gz?download
Grazie. Guarderň, ma prima che 'ste cose mi becchino ancora...

 
Pensa al risultato, con 2 sole righe di codice.


 Pensa al risultato, con 2 sole righe di codice.
Dici? Sai quanto ho impiegato e cercato prima di postare qui anche solo per
lo scroll orizzontale che mi portava in fondo alla list?... <eg>

 
Potevi seguire la regola del ng: prima si posta, poi si cerca!
;-)


 Potevi seguire la regola del ng: prima si posta, poi si cerca!
Già, magari specificando "ho già cercato uvunque..." ;-)

 
Effettivamente non e' cosi' banale.
Dovresti intercettare lo scroll ed agire di conseguenza.
Se hai voglia di lanciarti in un po' di subclassing puoi guardare questo 
esempio:
http://vbnet.mvps.org/index.html?code/subclass/lvscrollbars.htm
Li' viene intercettato lo scroll verticale, WM_VSCROLL, ma esiste anche 
un evento WM_HSCROLL.
Ovviamente se ti lanci nel subclassing sai che devi prendere delle 
precauzioni! ;-)
ciao


 Se hai voglia di lanciarti in un po' di subclassing...
Grazie (anche della fiducia), ma lo dico chiaro: Non ci penso nemmeno!
Anche perchè, quando ne avrò voglia, potrò farlo senza.
Stamane l'avevo fatto, poi, in fase di debug mi sono scoglionato, ma si può.

 
E beh, col timer ... :-)
Vuoi mettere un bel GPF col subclassing!
notte
