PDA

Visualizza la versione completa : [Dephi] Colorare una riga di una griglia


FatMax
30-04-2002, 09:55
Hola hola.
Allora ..ho una table collegata ad una griglia (meglio un mem data ..ma è lo stesso)
e volevo colorare una riga..della griglia quando la mia condizione fosse vera.:dottò:

Ma......uff me la fa tutta :cry:

ora .....io uso una DxDBGrid ..ma se avete la soluzione per una DBgrid ..cmq..la accetto comunque.

Ciao raga

buon work :quote:

alka
30-04-2002, 16:46
Puoi facilmente ottenere l'effetto che desideri gestendo l'evento OnDrawDataCell del controllo DBGrid. Il metodo di gestione di tale evento viene richiamato ogni volta che il controllo deve scrivere il valore di un campo della tabella all'interno della corrispondente cella della griglia. Il campo contenente il valore viene passato come parametro al metodo; ispezionando il valore del campo per il record corrente, puoi decidere se intervenire o no sulla modalità predefinita di disegno della cella. Ad esempio, potresti verificare se il campo, di tipo Booleano, vale True o False e riempire una cella con il colore rosso oppure verde a seconda del caso. Consulta l'argomento della Guida in linea di Delphi che tratta gli eventi del controllo DBGrid...troverai anche un esempio che dovrebbe fare proprio al caso tuo.
L'evento è ereditato dalla classe base TCustomDBGrid...non so da dove provenga il controllo che usi tu (DxDBGrid), ma se eredita dalla suddetta classe base, il funzionamento dovrebbe essere analogo a quello adottato con la DBGrid.

Ciao! :ciauz:

FatMax
30-04-2002, 17:02
Allora io uso la DxDBGrid .....è un componente buy ..che trovi
su
www.devexpress.com
cmq....
allora con questo componente c'è il metodo CustomDrawCell......ma non riesco a fare vedere ..il campo che devo controllare..
sono riuscito a colorare
ma non mi differenzia le cose.....e soprattutto.....si comporta in modo strano quando editi la tabella

alka
30-04-2002, 17:08
Credo che la "Developer Express", l'azienda che produce il componente in tuo possesso, abbia anche un forum di discussione privato sul proprio sito. Prova a inoltrare a loro la tua richiesta di aiuto.

Ciao!

210corso
24-05-2002, 12:07
E se volessi utilizzare una griglia normale di testo ? (no database)
Se con le freccette desiderassi evidenziare la riga corrente?
Non sono ancora riuscito a trovare il metodo opportuno per fare evidenziare ste c...o di righe a mio piacimento;)

Ciao!

alka
24-05-2002, 12:33
Per visualizzare una semplice griglia di testo, puoi usare il controllo TStringGrid, disponibile nella pagina "Additional" della Palette dei componenti. Per visualizzare le stringhe utilizzando stili a tuo piacimento, devi gestire l'evento OnDrawCell, il quale ti consente di intervenire sul normale meccanismo di disegno di ogni singola cella della griglia.
Al metodo incaricato di gestire l'evento vengono passati alcuni parametri che consentono di identificare la riga e la colonna che si sta tracciando, lo stato della cella (standard, selezionata, fissa...), l'area che essa occupa sul controllo e così via.
La proprietà DefaultDrawing ti consente di regolare il grado di personalizzazione del disegno. Se impostata a True, il controllo ti disegna lo sfondo della cella e il bordo di selezione (quando necessario) prima di "passare la palla" al tuo metodo, che dovrà completare l'opera scrivendo il testo della cella (vedi oggetto Canvas, metodo TextOut) o copiando una porzione di immagine; se DefaultDrawing è impostata a False, dovrai gestire l'intero tracciamento della cella (sfondo, bordo di selezione ove necessario, testo, immagini, ecc.); il parametro Rect indica l'area grafica occupata dalla cella corrente.

210corso
24-05-2002, 15:25
Ma OnDrawCell non si scatena durante la creazione della griglia e smette quando ha finito ?

Se il testo che metto nella griglia è dinamico, cioè cambia a seconda delle mie preferenze, e io voglio che la riga che lo evidenzi per esempio diventi gialla anzichè blu(quella di default) come faccio ?

Scusa ma con i metodi di "disegno" non ci capisco un granchè :tongue:

210corso
27-05-2002, 14:00
Sono riuscito a colorare ste benedette celle!:D
Nella procedura OnDrawCell ho cambiato le proprietà di canvas es.

if StringGrid1.Cells[Acol,Arow] = 'HTML.IT'then
begin
Canvas.Brush.Color := clyellow;
Canvas.FillRect(Rect);
Canvas.Font.Color := clBLACK;
Canvas.TextOut(Rect.Left+2, Rect.Top+2,StringGrid1.Cells[acol,arow]);

Ciauz!

alka
27-05-2002, 14:24
Meglio così...

Scusa per il silenzio. Volevo sperimentare una buona soluzione da farti vedere...però mi è mancato totalmente il tempo!

Ciao! :ciauz:

Loading