realbasic-nug.it
[Top] [All Lists]

Re: Listbox

To: REALbasic NUG Italian <realbasic-nug dot it at lists dot realsoftware dot com>
Subject: Re: Listbox
From: Massimo Valle <maxduepuntozero at yahoo dot it>
Date: Wed, 17 Jan 2007 00:00:49 +0100
Delivered-to: listarchive at realsoftware dot com
Delivered-to: realbasic-nug dot it at lists dot realsoftware dot com
Domainkey-signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.it; h=Received:X-YMail-OSG:Mime-Version:In-Reply-To:References:Content-Type:Message-Id:Content-Transfer-Encoding:From:Subject:Date:To:X-Mailer; b=CTXbcgI9BLcK1epBbVNR4qwi0UU40IrKkyUplSG7k09G8gybZakRVmuFIjGJs005g0Kfc4ui+OXoEq/t09H6ErLYdQIiT5JuCG41s0FB5T2tCAGBJVsUNwCROda7Km/wGa2JbcNOLqgM2KsBOEi0SJfJib1uXgxXY9D3nvjr1hQ= ;
References: <3C32ACD8-27F8-496B-937A-3D8AB7C6BAF8 at tin dot it> <8B1F4257-80DE-4852-B2DB-05B4E61E59E8 at tin dot it>

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


<Prev in Thread] Current Thread [Next in Thread>