Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Выравнивание текста в StringGrid


Автор: efpies 13.3.2011, 19:15
Здравствуйте.

Есть такой вот код для выравнивания текста:
Код

void __fastcall TMainForm::GridDrawCell(TObject *Sender, int ACol, int ARow,
          TRect &Rect, TGridDrawState State)
{
    Grid->Canvas->Brush->Color=clWhite;
    Grid->Canvas->Font->Color=clBlack;
    Grid->Canvas->FillRect(Rect);        // Тут мы закрашиваем канву для удаления старого текста
    
    DrawText(Grid->Canvas->Handle,
             Grid->Cells[ACol][ARow].t_str(),
             Grid->Cells[ACol][ARow].Length(),
             &Rect,
             DT_CENTER | DT_VCENTER | DT_SINGLELINE);
}

Но суть в том, что при закрашивании канвы убирается красивенький прямоугольничек со скруглёнными краями с градиентом внутри, символизирующий выделенную ячейку.
Можно ли как-то оставить его, не перерисовывая отдельно? Если нет, то в каком событии перерисовывать? OnSelectCell?

Автор: Usper 14.3.2011, 08:54
Параметр State обработчика GridDrawCell показывает (внезапно! smile) в каком "состоянии" отрисовываемая ячейка. Если State.Contains(gdSelected) то значит она выделена и её нужно отрисовать соответствующим образом.

Автор: efpies 14.3.2011, 14:47
Да, это логично, спасибо smile
Блин, поискал примеры - совсем как-то неудобно заливать градиентом :( ну что ж...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)