C ++ Builder — раскраска ячеек в C ++ Builder, StringGrid

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

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

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

Что я делаю неправильно?

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

0

Решение

Вы рисуете на неправильном 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);
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]