On 16/gen/07, at 22:57, Lucio Liberi wrote:
Mi rispondo da solo...
Allora. Non si puo' fare niente, a meno che... a meno che, non si
fissino le dimensioni delle colonne
in modo definitivo e si lasci lo spazio per la scrollbar.
listbox larga 500 pti
allora bisogna fissarla in 500-16=484 pti.
Se qualcuno ha un'idea migliore, si faccia avanti...
Ciao a tutti.
Mai rispondersi da soli. Il meglio che si riesca a fare e confermare
le proprie ipotesi.
Infatti ci sono almeno due modi per fare quello che vuoi.
1. Impostando la proprietà AutoHideScollbars = false, la scrollbar è
sempre visibile e non hai bisogno di spostare il totale.
2. La proprietà ListBox.DefaultRownHeight ti può dire l'altezza di
una riga. Per fare ciò devi però impostarla tu a un valore definito
perchè il default è -1. Una volta impostata (ad esempio a 18),
misurata l'altezza dell'header (se usato), tu puoi fare una semplice
divisione. L'altezza della Listbox - la dimensione dell'header /
l'altezza delle righe ti dice quante righe sono visibili. Ottenuto
questo dato che chiamiamo N tu sai che quando la listbox ha più di N
righe la scrollbar diventa visibile e devi spostare il totale.
Come fare a monitorare il numero di righe: semplicemente crea una
sottoclasse di Listbox e fai l'override del metodo AddRow. Qualcosa
del genere:
Sub AddRow(item as String)
Super.AddRow item
if me.listCount > NUMERO_RIGHE_VISIBILI then
StaticText.left = StaticText.left -16
end if
End Sub
Dovrai fare l'override anche degli altri metodi che agiscono sul
numero di righe (InsertRow, RemoveRow, DeleteAllRows, ecc.)
Non ho provato ma dovrebbe funzionare.
Ciao
Massimo Valle
Chiacchiera con i tuoi amici in tempo reale!
http://it.yahoo.com/mail_it/foot/*http://it.messenger.yahoo.com
|