Newsgroup: it.comp.lang.visual-basic
Titolo: MsFlexGrid e CellForeColor

Ciao, ho bisogno un conigl.. oopps... un consiglio :-)
Volendo cambiare il colore di una intera riga della MsFlexGrid ed
utilizzando l'istruzione CellForeColor su molti record incappo in un
problema di "lentezza" mostruosa :) In effetti credo che il metodo da me
impiegato non sia quello corretto e mi piacerebbe avere un consiglio.
Vi faccio un esempio semplice tanto per capirci meglio:
Ammettiamo di avere qualche centinaia di record di tipo anagrafico.  Un
campo di questi record è di tipo boolean. Quando questo campo e' = True,
voglio che la riga della tabella appaia di colore diverso (forecolor in
bianco) da quello di default (ammettiamo sia nero)
Set Rcs = dbs.openrecordset("select * from archivio where anni > 20 order by
nome asc")
grid1.rows = rcs.recordcount
a = 0
While not Rcs.eof
   a = a +1
     with rcs
        grid1.TextArray(Fgi(a, 0)) = !Nome
        grid1.TextArray(Fgi(a, 1)) = !Cognome
        grid1.TextArray(Fgi(a, 2)) = !Anni
        grid1.TextArray(Fgi(a, 3)) = !Vero
        if !vero then
            grid1.Row = a
            grid1.RowSel = a
            grid1.Col = 0
            grid1.ColSel = 3
            grid1.CellForeColor = QBColor(15)
        end if
    end with
wend
Rcs.close
Quindi, oltre a rallentare le operazioni, questo tipo di operazione mostra
un fastidioso disturbo visivo sulla griglia a causa della selezione delle
celle (forse è il caso di disattivarla con grid1.enabled = false ??)
Per ovviare allo sfarfallio prodotto dalla selezione delle celle, la parte
di "if !vero then.... end if" puo' essere sostituita dalla piu' lenta...
if !vero then
    grid1.row = a
    for i = 0 to 3
        grid1.col = i
        grid1.cellforecolor = qbcolor(15)
    next i
end if
Ma oltre a rallentare ulteriormente... non scompare del tutto il fastidioso
sfarfallio.
Potete consigliarmi qualcosa di piu' efficace?
Ciao e grassie :-)
Andrea Varisco as MioMao
Paderno Dugnano  - Italy
Email: 
mio...@digibank.it
MioMaoCasaPagina: 
http://www.digibank.it/miomao
-----------------------------------------
TimeHomePage 
http://www.digibank.it/time

Prova a nascondere la grid (grid.visible=false) mentre fai l'elaborazione
per poi  farla tornare visibile alla fine
N.B. quando la rendi invis. non scompare, semplicemente non visualizza in
tempo reale i  cambiamenti...
Fammi sapere, ciao Danilo 
Ki...@usa.net

Ti ringrazio.. ma avevo già provato e non cambia nulla.
Forse dovrei prima provare ad inserire un DoEvent da qualche parte...
Boh... faccio delle prove e poi vi faccio sapere com'e' andata a finire..
Ciao e grazie! :-)
--
Ah... dimenticavo!
Vi segnalo questo sito
http://www.ilsole24ore.it/premiowww/
presso il quale DOVETE votare il sito di MioMao :-)))
..'azzie!
-----------------------------------------


l'aggiornamento!
Non è vero ed è proprio per questo che parlavo di inserire un DoEvents().
Infatti, VB si limita a non aggiornare i dati "grafici" del controllo fin
tanto che esso è disattivato (visible=false), ma non ci pensa proprio di
nasconderlo. Semplicemente lo lascia li... mezzo morto :-) per poi
aggiornarlo in una sola volta al "visible=True". Se, invece, inserisci un
DoEvents, il controllo viene effettivamente nascosto, ma non mi piace
l'effetto.
Ciao e grassie a voi! :-)
