Newsgroup: it.comp.lang.delphi
Titolo: Evidenziare la riga intera nella dbgrid con un click

Salve a tutti, spero che ci sia qualcuno che mi possa dare una mano
per risolvare il mio problema. Come si puo capire dall'oggetto del
post, ho bisogno che quando clicco sulla mia dbgrid mi si evidenzi
tutto il testo della riga e non solo la cella cliccata. ho provato
nelle opzioni della griglia attivando dgRowSelect ma non mi permette
più di editare i record cosi! Ho provato nell'evento OnDrawColumnCell
ma...non ho ottenuto ciò che cercavo. Come posso fare??? AIUTO!! :(

 ma...non ho ottenuto ciň che cercavo. Come posso fare??? AIUTO!! :(
Bene , ma cosa hai provato ????
mario

 mario
Questo:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect:
TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var ind : integer;
begin
                                          .
                                          .
                                          .
if adoquery1.FieldByName('Cognome').AsString='Mario' then begin
    DbGrid1.Canvas.Font.Style:=[fsBold];
    DbGrid1.Canvas.Font.Color:=clBlue;
  end;
questo codice mi evidenzia tutta la riga, ma me la evidenzia appena
visualizzo i dati. A me serve che al click sulla cella mi si evidenzi.
ho provato anche usando l'evento onclick, da li salvavo l'id del
record cliccato in una variabile e lo portavo nel codice di sopra (con
i dovute modifiche) ma non va... o per lo meno... funziona ma c'è
bisogno del refresh e mi rallenta di molto il programma. Hai qualche
suggerimento?

 suggerimento?
Prova con Repaint invece che Refresh

 Prova con Repaint invece che Refresh
Ho provato ma non va. :( tu come faresti per risolvere il problema?
voglio dire, c'è un'altra strada o devo scervellarmi x forza su questa
soluzione?

 soluzione?
La strada per modificare l'aspetto delle celle in una griglia è l'evento
DBGridDrawColumnCell , richiamato per ogni cella da visualizzare.
Quindi se come dici tu funziona ma rallenta il programma , devi controllare
cosa fà rallentare il programma , il solo cambiamento di colore mi sembra
improbabile.
mario 

 mario
Infatti non è il cambiamento di colore in se che fa rallentare il
programma...ti spiego.
Quello che io voglio è che qundo clicco sulla cella di una riga mi si
colori il testo di tutta la riga. Ora quello che mi fa è che quando
clicco sulla cella mi diventa blue solo il testo della cella dove ho
cliccato. quando clicco sulla cella di un altra riga il risultato è
uguale però a colorarsi tutta è la riga che ho cliccato prima! se poi
continuo a cliccare su righe differenti non solo mi fa questo lavoro
ma le righe colorate non tornano com'erano, rimangono colorate! Se a
questo punto faccio un refresh ottengo finalmente che la riga colorata
risulta essere solo quella dell'attuale selezione.
Ma se devo fare refresh ad ogni click che faccio...allora si che perdo
velocità! Cosa potrei fare? Hai qualche idea?

 velocità! Cosa potrei fare? Hai qualche idea?
Ehi, ho risolto!!! :) :) Prova e riprova finalmente ce l'ho fatta!
Mettevo il refresh o repaint dove non dovevo. Ora l'ho messo a fondo
di DbGrid1CellClick e va alla grande! Cmq grazie lo stesso
dell'interessamento, e buone feste!! :)
Simone