Newsgroup: it.comp.programmare.win32
Titolo: [ListBox] Come cambiare il colore di selezione item

Quale messaggio va intercettato in una routine di subclass per modificare il
colore di sfondo dell'item selezionato?
Grazie,
susanna

 colore di sfondo dell'item selezionato?
WM_ERASEBKGND potrebbe funzionare (ma non ne sono sicuro).
Normalmente non si otterrebbe questo controllo subclassando il
listbox, ma facendolo owner-drawn e gestendo WM_DRAWITEM
nella finestra _genitrice_ del listbox...
Alex

Alex
Grazie.
Purtroppo l'informazione mi serviva per VisualBasic dove, pare, non e`
possibile modificare il colore dell'item selezionato di un controllo ListBox
e dove non e` possibile (o non ha particolarmente senso) creare controlli
owner-drawn.
susanna

 wrote in message
news:89pm0t$clm$1...@pluto.sm.dsi.unimi.it...

Per VB l'approccio e` normalmente quello di usare un altro
controllo Active/X che faccia cio` che desideri, invece del
controllo predefinito che non e` in grado di farlo.
Il controllo customizzato si puo` naturalmente realizzare in
C++/ATL per subclassing di controlli esistenti, ecc.  Ma si
puo` fare una quantita` sorprendente di cose anche in VB:
la mia competenza VB non e` sufficiente a capire perche`
uno vorrebbe fare cose del genere se non "per scommessa",
ma c'e` un gruppo di super-VB'isti che ci si e` messo con
grande passione.
Ti consiglio anzitutto, se hai scelto di usare esclusivamente
VB nel tuo progetto, di iniziare ad approfondire le enormi
potenzialita` nascoste del linguaggio studiando i link su:
http://ourworld.compuserve.com/homepages/RHendricks/vbdev.htm
Per lo specifico problema in discussione, vedi poi:
http://www.mvps.org/ccrp/
, che e` il sito del "Common
Controls Replacement Project" -- un progetto che ha lo
scopo di riscrivere tutti i common controls in VB nativo
(mi pare che siano gia` un pezzo avanti); l'umile listbox
non c'e`, ma studiando i loro sorgenti puoi ben ricavare
il know-how per realizzartela.
In particolare, per fare controlli owner-drawn in VB, vedi
http://www.thescarms.com/vbasic/OwnerDrawn.htm
Sempre piu` specificamente sul tuo problema, vedi
http://www.vbexplorer.com/tips/src24-5.htm
e capitoli circonvicini: mi sembra che il controllo di
esempio che stanno sviluppando sia proprio una
listbox con il grado di "granularita`" che tu desideri,
come ad esempio un colore per l'item highlighted
che e` sotto il controllo del programmatore.
E si potrebbe continuare...!
Tornando dal particolare al generale: la principale
skill del programmatore di oggi e` trovare questo
tipo di webpage che gli danno la soluzione o una
buona direzione verso di essa, soprattutto per temi
trattatissimi in web come il VB e i "ciappini" di UI
come colori e simili.
http://www.google.com
 (o, immagino, altri motori
di ricerca, ma io non uso mai altri che Google,
semplicissimo e velocissimo!-) e` dunque oggi uno
strumento per il programmatore secondo solo al
suo compilatore... abituandoti ad usarlo, e imparando
ad usarlo al meglio, farai il migliore possibile investimento
nella tua professionalita` tecnica.
Alex

> [snip]
Gentile Martelli,
prima di tutto, grazie ancora: uno dei link indicati conteneva proprio il
codice richiesto (come ipotizzato, gestione owner-drawn della classe
finestra del controllo listbox di VB; naturalmente le righe di codice sono,
come spesso succede, estrememente illuminanti. Da sola avrei perso tempo su
un migliaio di dettagli tra cui quello di reperire il nome della classe di
finestra dei listbox di VB, cioe` "ThunderListBox").
Ma dato che sono sufficientemente soddisfatta, mi prendo la liberta` di
esprimere un paio di considerazione che, ritengo, quasi doverose (e
addirittura non temo neppure di diventare, come si dice, OT).
Fa *molto* piacere rilevare come, in questi tempi da "do ut des" imperativo,
esistano luminose eccezioni quali il suo impegno (ma anche quello di tanti
altri su questo NG) per cui l'eccezione diventa regola.
Devo anche sospettare che lei abbia rinunciato, probabilmente in nome di
qualche principio non piu` di moda (o forse per il caratteraccio che si
ritrova), ad una splendente carriera da informatico in giacca e cravatta,
magari con foto su riviste specializzate in calce ad articoli ridicolmente
supponenti, o a qualche epitaffio su libri inutilmente spaziosi (e
indecentemente cari, come le riviste di cui sopra, tra l'altro); se e`
cosi`, come sono certa, la cosa le fa doppiamente onore.
Purtroppo la mia 'imbarazzante' richiesta tecnica sul colore di sfondo di un
item selezionato su un controllo listbox di VB non e` stata posta per
scommessa (come peraltro sarebbe stato lecito ipotizzare), ma deriva da una
precisa specifica tecnica di uno di quei clienti "a cui non si puo` dire di
no".
La questione, lieve nella sua sostanza, solleva una serie di curiose
considerazioni: perche` avrei dovuto dire a questo cliente che l'azzurro e`
un colore proibito per i listbox, senza provare un istintivo imbarazzo? A
suo parere e` dignitosa una disciplina per cui l'azzurro e` un colore
proibito? In nome di questa scintillante (e tre) disciplina dovrei
utilizzare il mio tempo per scommesse?
Confidando che anche il suo tempo sia intrinsecamente prezioso quanto il
mio, le porgo di nuovo i miei piu` sentiti ringraziamenti e le rinnovo tutta
la mia stima.
susanna

 la mia stima.
Apprezzo molto tutti questi discorsi, e ricambio i ringraziamenti
e la stima.
Alex