Newsgroup: it.comp.lang.visual-basic
Titolo: [ ? ] Colorare le singole righe di una ListView (stile ACDSee)

Ciao
qualcuno sa dirmi se in VB è possibile colorare in modo
differente le singole righe di una ListView come fa il
programma ACDSee ?
Io ho provato mandando il msg LVM_SETTEXTBKCOLOR e poi
facendo ridisegnare solo le righe che mi interessano (e che hanno
il tag impostato su un colore) con il msg LVM_REDRAWITEMS che
accetta come parametri il primo e l'ultimo item da ridisegnare
consentendo quindi di ridisegnare anche un singolo item.
In effetti funziona, ma solo se poi non si tocca più la ListView (non
la si clicca, non la si scrolla etc... in pratica non la si costringe
a ridisegnarsi)
Penso che si potrebbe risolvere il problema catturando il msg
di REDRAW della ListView e colorando gli items dopo che la
ListView ha finito di ridisegnare la sua finestra.
Purtroppo io non so come si fa. (E vabbè, mica siamo tutti perfetti...)
Non so quale messaggio catturare e come.
So solo che si deve usare la keyword AddressOf per ottenere
l'indirizzo della funzione sostitutiva e passare tale indirizzo
al messaggio che sostituisce la funzione standard con la nuova.
(A parte tutto a me servirebbe in Access 97 che non ha la keyword AdressOf
...)  SOB
Chi mi sa dare una risposta ?
Questa è l'unica cosa che non sono riuscito a far fare alla ListView.
Per il resto so come :
- Visualizzare le intestazioni piatte (senza possibilità di fare click)
- Mettere icone sulle intestazioni (tipo il triangolino in su o in giu a
seconda dell'ordinamento)
- Aggiungere la griglia (senza ottenere quello strano effetto sulle
intestazioni...)
- Selezionare un'intera riga
- Fare il tracking delle righe
- Fare il tracking delle colonne
- Fare il drag & drop delle colonne
- Aggiungere le checkboxes alle righe
- Visualizzare le icone su tutti gli items (e non solo sul primo... anche se
non serve a nulla)
- Visualizzare le intestazioni in grassetto, corsivo, sottolineato e barrato
- Cambiare il colore del testo nelle righe (anche se non di singole righe)
- Impostare una immagine di sfondo (centrata, allineata in qualche angolo,
affiancata)
- Adattare le colonne alla larghezza del testo delle intestazioni (e non al
testo delle righe)
- Indentare le righe (che è quello che fa Outlook Express nella ListView dei
messaggi news)
        (anzi se qualcuno mi sa dire come catturare un clic fatto in un
punto esatto di un item...)
Se qualcuno pensa che un esempio del genere possa (o debba) essere
pubblicato sul SITO COMUNE, basta dirlo...
Ciao a tutti
e grazie in anticipo per le numerosissime risposte... :-)))
Roberto

Gundam ha scritto nel messaggio >Per il resto so come :

Ma stai scherzando? Sei ancora qui che aspetti! Voglio :-) vedere il codice
sul sito comune entro non più di 5 (e dico 5) minuti. Sono giorni che mi
scervello per fare alcune delle cose che hai elencato (avevo anche messo dei
messaggi sul Ng).
Purtroppo non sono in grado di dare una risposta ai tuoi problemi, cmq non
aspettare davvero oltre a mandare un esempio sul sito comune.
Ciao e grazie (valoroso eroe delle ListView), Rick


Con la listView di VB6 è possibile fare molte delle cose che hai elencato ed
anche settare un colore diverso per ogni singolo item.
Saluti.


Ma la ListView del VB6 è contenuta in una DLL o OCX oppure
fa parte del programma ?
Se è contenuta in un file linkabile, è possibile utilizzarla anche
in VB5 o in Access97 ???
E se le due precedenti affermazioni sono vere, dove si può trovare
tale file (oltre che ovviamente sul CD di VB6 che io non ho ?)
Ciao e grazie


L'ho spedito al Webmaster del sito comune questa mattina.
Se ti serve urgentemente posso spedirtelo via e-mail...
Oppure posso postarlo qui (o nel NG dei files binari)
Ciao

sul sito comune entro non più di 5 (e dico 5) minuti. Sono giorni
 che mi scervello per fare alcune delle cose che hai elencato (avevo
 anche messo dei messaggi sul Ng).
Hunter... ti sta prendendo in giro  ^__^... la ListView di
 VB6 ha tutte queste cose tra le proprietà. Non è più come
la ListView di VB5 in cui devi fartele a mano con codice
e API.
E Gundam sta usando la ListView di VB6... ^____^
Zeross


La listview del vb6 e come quella del vb5 (un ocx) e quindi la puoi
utilizzare do vuoi (vb5, access e tutti gli altri applicativi che si
interfacciano agli ocx).
Il problema è che per usarla come programmatore ti serve la licenza, il che
vuol dire acquistare almeno una copia di vb6.
Se poi, certe menate legali non ti interessano puoi fartela passare da
qualcuno (ricordati pero di farti passare anche il file .srg che contiene la
chiave che devi aggiungere al registro di configurazione di win, altrimenti
non potrai usare il controllo in fase di design).
Ciao, Rick


Io non stavo prendendo in giro nessuno. A me il codice che lui ha scritto
serve veramente. Ho un sacco di progetti scritti in vb5 in cui mi piacerebbe
poter utilizzare alcune delle caratteristiche che ha listview di vb6. E dato
che per il momento in ufficio sembrano non avere nessuna intenzione di
passare a vb6 e visto che senza licenza non posso ridistribuire i controlli
di vb6 il codice che lui ha già bello e pronto farebbe proprio al caso mio.
Ciao, Rick.

Con la listView di VB6 č possibile fare molte delle cose che hai elencato



WHAT ????
In che senso sto utilizzando la ListView di VB6 ?
Nel senso che già faccio riferimento alle nuove librerie ?
Io tutte 'ste proprietà a livello di progettazione non le vedo mica...
Probablimente le si vede solo dall'interno del VB6 !?!? (o dico una
stupidaggine ?)
Io uso VB5 e Access 97...
Forse sto diventando vecchio...  (a 32 anni sarebbe grave...)
Ciao a tutti
Gundam


Devo dire che se qualcuno mi spedisse all'indirizzo roberto#
nova.bz.it
 i
files
necessari (non solo della ListView ma anche della TreeView e degli altri
controlli che hanno subito evoluzioni nella versione 6 di VB) io non mi
arrabbierei più di tanto...
Se poi costui (o costei) fosse così gentile da inviare anche i files .hlp e
.olb relativi
a tali controlli non avrei molto da ridire...
Se infine a questa ipotetica persona interessasse il mio programmino per
la manipolazione delle ListView, non avrei difficoltà a spedirglielo...
A parte gli scherzi, io ho acquistato l'Office 97 Developer Edition Tools
e se la Microsoft aggiorna i controlli in VB e non nell'ODE mi sento (quasi)
autorizzato
ad aggiornarlo manualmente...
Ciao, Roberto

Forse sto diventando vecchio...  (a 32 anni sarebbe grave...)
Ooohhhh.. ma le avete viste le faccine ????
STAVO SKERZANDO !!! ^____^
uff... si potrebbe dire:
ICLVB.Humor = 0
^___________^
Zeross


In VB6 la classe listitem della listview supporta sia la proprietà
subitems(indice) (come quella in VB5) che una collection ListSubitems i cui
membri (ListSubitem) espongono le seguenti proprietà:
- Bold
- ForeColor
- Index
- Key
- ReportIcon
- Tag
- Text
- ToolTipText
perciò puoi impostrare il colore della singola casella con :
ListView1.ListItems(1).ListSubitems(1).ForeColor = vbRed