PDA

Visualizza la versione completa : [Borland c++]


Kreator
04-03-2005, 10:23
Ciao raga.

Ho un problema con il componente TDBGrid.
Sostanzialmente il problema e' che a seconda del valore di un campo sul database chiamato "EVASO" di dominio (true/false) devo colorare di rosso il record corrispondente ad EVASO = true.
Ho provato a fare un po di ricerche su internet ed ho trovato di questo:



void __fastcall TForm1::DBGrid1DrawDataCell(TObject *Sender,
const TRect &Rect, TField *Field, TGridDrawState State)
{
if (Field->FieldName == "EVASO")
{
if (Field->AsBoolean == true)
DBGrid1->Canvas->Font->Color = clRed;
}

DBGrid1->DefaultDrawDataCell(Rect, Field, State);
}


Il problema pero' e' che non so come viene attivato questo evento.
Sigh !.
C'e' qualcuno che puo' aiutarmi ?
Grazie.

:dh˛: :dh˛: :dh˛: :dh˛:

alka
04-03-2005, 10:35
Hai provato ad impostare la proprietÓ DefaultDrawing del controllo DBGrid a False?

Ciao! :ciauz:

Kreator
04-03-2005, 10:42
Si, ho provato ... ma quando vado ad eseguire il prog, sembra che la tabella sia vuota, ma se vado a fare doppio click su ogni singola cella, mi viene fuori il contenuto della cella (praticamente sembra come se il colore del carattere e' cambiato in bianco).
Pero' non funziona. sigh!
Ho provato ad inserire anche un ShowMessage (..) dentro quell'evento per vedere se viene eseguito ma non c'e' niente da fare.

alka
04-03-2005, 10:44
Una domanda stupida: sei sicuro che il metodo di gestione sia realmente associato all'evento attraverso l'Object Inspector? Non si sa mai...

Kreator
04-03-2005, 10:48
Si, e' associato.
questo e' il mio codice:




__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Table1->Active = true;
}

void __fastcall TForm1::FormDestroy(TObject *Sender)
{
Table1->Active = false;
}

void __fastcall TForm1::DBGrid1DrawDataCell(TObject *Sender,
const TRect &Rect, TField *Field, TGridDrawState State)
{
ShowMessage ("CIAO");
if (Field->FieldName == "EVASO")
{
if (Field->AsBoolean == true)
DBGrid1->Canvas->Font->Color = clRed;
}

DBGrid1->DefaultDrawDataCell(Rect, Field, State);
}

Loading