• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

C++builder 6, Stringgrid

  • Автор темы Автор темы pawtet
  • Дата начала Дата начала
P

pawtet

Добрый день, ув. программисты! Вопрос именно по билдеру 6, т.к. в других версиях синтаксис может отличаться. Мне нужно по нажатии кнопки Button1, закрасить определённые ячейки в StringGrid, в котором уже сгенерирован двухмерный массив mas[X][Y].
Я пытался обрабатывать событие OnDrawCell, т.к. в нём есть необходимые параметры для закраски, но в таком случае:
1) Ячейки закрашиваются сразу после запуска программы, а мне надо по нажатии Button;
2) Поверх закрашеннных ячеек невозможно вывести текст.
Я работал вот с этим кодом:
Код:
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect,
TGridDrawState State)
{
TStringGrid *p=(TStringGrid*)Sender;
if (p->Cells[ACol][ARow]==" ") {
p->Canvas->Brush->Color=clRed;
} else {
p->Canvas->Brush->Color=clGreen;
}
p->Canvas->FillRect(Rect);

}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
StringGrid1->Cells[1][2]=" ";
}

Помогите, пожалуйста его преобразовать, дополнить, или предложите свой вариант. Искренне надеюсь на Вас и Ваш форум. Заранее спасибо!
 
У Архангельского в "Русских справках" есть твоя тема - написано понятно, с примерами.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab