Newsgroup: it.comp.lang.visual-basic
Titolo: Problema di visualizzazione in un combo box

In un form si abbia un ComboBox ed un TextBox con il seguente codice :
Private Sub Combo1_Click()
   Text1.SetFocus
End Sub
Private Sub Form_Load()
  Combo1.Width = 1800  ' quindi abbastanza stretto
  Combo1.Text = ""
  Combo1.AddItem "QUESTO E' UN TESTO MOLTO LUNGO"
  Combo1.AddItem "SECONDA RIGA ANCH'ESSA MOLTO LUNGA"
  Combo1.AddItem "CORTA"
End Sub
Avviato il programma si selezioni la seconda riga. Tutto OK
Si faccia ora click sul combobox; la tendina si dispiega e si vedrà, al suo 
interno, solo la parte finale della scritta; in pratica si vedrà solo "SA 
MOLTO LUNGA" mentre io vorrei vedere la parte iniziale della scritta 
("SECONDA RIGA ...").
Parebbe ai più un problema non vitale ma nell'applicazione che vo scrivendo 
io nel combobox memorizzo anche altri dati che mi piacerebbe non fossero 
visibili; questo non per questioni di segretezza ma per chiarezza nella 
visualizzazione in quanto questi dati potrebbero essere fuorvianti per 
l'utilizzatore.
Inutile dire che ho provato in vario modo ad intercettare i vari eventi del 
combobox ed applicare le proprietà SelStart e SelLenght:  inutilmente !
Qualcuno sa trovare la soluzione ?
Grazie comunque per l'attenzione.
AlpVir
P.S.: Per la precisione sviluppo in VB6 ma credo che il problema si 
ripresenti per qualsiasi versione di VB. 

 inutilmente ! Qualcuno sa trovare la soluzione ?
Innanzitutto se l'utente non può modificare il testo del combobox, puoi sempre
imporgli Style=2-Dropdown list, ma forse ci avevi già pensato.
Altrimenti: piazzi un timer di comodo, inizalmente disabilitato, con intervallo
es. 100ms. E poi:
Private Sub Combo1_DropDown()
    Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
    SendKeys "{END}+{HOME}", True
    Timer1.Enabled = False
End Sub
Bye
Raf
-----------------------------------------------------
Funk: cooler than the other side of the pillow.

 per l'utilizzatore.
Beh, questo è concettualmente errato.
Anche perchè potresti avere problemi a non finire con diverse risoluzioni o 
con font di sistema diversi.
Se stai usando VB6 puoi usare la proprietà ItemData per memorizzare i dati 
"nascosti" relativi a un singolo item.
Se stai usando .Net ti conviene scriverti una classe con i due campi Dato e 
Nascosto e un override di ToString() e assegnare questa al combo.
Ciao 

 Ciao
Ammetto che la mia soluzione è un po' sporca ma funziona. Tieni inoltre 
conto che in ItemData memorizzo altri tipi di dati.
Grazie comunque (Rafunk mi ha dato un suggerimento utile)
Ciao
AlpVir 

 Raf
Perfetto ! (la seconda che hai detto)
Grazie infinite !
AlpVir 

 Grazie comunque (Rafunk mi ha dato un suggerimento utile)
Buona fortuna.
Ciao 


Tieni presente che con Style=0 come hai tu, l'utente può comunque scorrere la
casella di testo del combo usando i cursori, rivelando eventualmente la parte di
testo che vuoi tenere nascosta.


 testo che vuoi tenere nascosta.
Si ma in realtà i dati nascosti non sono segreti che non voglio 
assolutamente render noti ma solo dati che, per comodità, ho voluto legare 
ad ogni item e che voglio poter leggere ogniqualvolta io lo desideri.
Avrei forse potuto, più elegantemente, registrare questi dati "nascosti" 
negli ItemData (come mi ha giustamente suggerito Fabio) ma avrei complicato 
ulteriormente il codice, avendo già io utilizzato gli ItemData per 
memorizzare un'altra - e diversa - serie di dati.
La tua soluzione è ottima e mi ha risolto pienamente il problema che è 
solo - ripeto - un problema di buona visualizzazione.
Grazie ancora.
AlpVir