DefaultDrawing se postavlja na
false onda kada je potrebno napraviti poseban kod za iscrtavanje celija unutar OnDrawCell. E sad, ako me pamćenje dobro služi (nisam testirao) nije moguće prosto toggle-ovanje između true/false vrednosti ove osobine, odnosno izvršavanje default i posebnog koda, nešto kao:
Code:
ButtonClick
{
StringGrid1->DefaultDrawing = ! StringGrid1->DefaultDrawing;
if ( StringGrid1->DefaultDrawing == false )
{
StringGrid1->OnDrawCell = PosebnoStringGrid1DrawCell;
}
else
{
StringGrid1->OnDrawCell = NULL;
}
}
(Ali ipak probaj, ne znam. Mislim da to nije moglo barem kod OwnerDrawn propertija nekih drugih komponenti)
Kad smo kod ovoga (to je valjda bio deo pitanja):
StringGrid1->OnDrawCell = PosebnoStringGrid1DrawCell;
... to se postiže ovako:
Code:
--- H ---
// public:
void __fastcall PosebnoStringGrid1DrawCell(TObject *Sender, int ACol,
int ARow, const TRect &Rect, TGridDrawState State);
--- CPP ---
void __fastcall TForm1::PosebnoStringGrid1DrawCell(TObject *Sender, int ACol,
int ARow, const TRect &Rect, TGridDrawState State)
{
// ...
}
(Razlika između standardnog prototipa OnDrawCell i ovog je u jednom
const uz TRect)
Ipak, mislim da ti nije neophodno switch-ovanje izmedju default i posebnog koda. Uzmi samo posebni deo koda i modifikuj ga tako da radi za oba slucaja, nesto kao:
Code:
void __fastcall TForm1::PosebnoStringGrid1DrawCell(TObject *Sender, int ACol,
int ARow, const TRect &Rect, TGridDrawState State)
{
// ...
if ( PosebanKod == true )
{
// farbaj linije
}
else
{
// nesto drugo, ili cak nista
}
// ...
}