Окрашивание ячеек в C ++ Builder, StringGrid - PullRequest
0 голосов
/ 21 ноября 2018

Я пытался сделать это:

void __fastcall TTetrisGame::DrawGrid1DrawCell(TObject *Sender, int ACol, int ARow,
    TRect &Rect, TGridDrawState State)
{
    this->Canvas->Brush->Color=clBlue;
    this->Canvas->FillRect(Rect);
}

Но это действительно странный результат.Я поместил свою StringGrid в середину окна, но я не вижу никакого синего цвета.Вместо этого это прозрачно.Я вижу синюю сетку в правом верхнем углу моего окна.

Что я делаю не так?

Как я могу покрасить каждую ячейку по отдельности?

1 Ответ

0 голосов
/ 22 ноября 2018

Вы рисуете не на том Canvas.

Внутри вашего OnDrawCell обработчика событий this ссылается на родительскую форму, потому что обработчик является членом класса TTetrisGame.Таким образом, вы рисуете на форме Canvas.Вам нужно рисовать на сетке Canvas вместо:

void __fastcall TTetrisGame::DrawGrid1DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State)
{
    DrawGrid1->Canvas->Brush->Color=clBlue;
    DrawGrid1->Canvas->FillRect(Rect);
}
...