TStringGrid, часть I
Автор Деймон Чандлер перевод Виктор Алексеев aka prom
Прорисовка текста
В дополнение к событию OnDrawCell, классTStringGrid наследует свойство DefaultDrawing, которое впервые появилась в классе TCustomGrid. Когда это свойство имеет значение "истина" (по умолчанию), то каждая ячейка автоматически прорисовывается в соответствии с параметром State. В этом случае, в обработчике событий OnDrawCell, требуется лишь предоставить отформатированный текст. Например, чтобы прижать содержимое каждой ячейки в правой стороне сетки, надо выполнить код:
#include <cassert>
void __fastcall TForm1::FormCreate(TObject *Sender)
{
for (int i = 0;i < StringGrid1 -> ColCount; i++ )
for (int j = 0;j < StringGrid1 -> RowCount; j++ )
StringGrid1 -> Cells[i][j] = "asd";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
int ARow, TRect &Rect, TGridDrawState State)
{
TStringGrid* StringGrid = static_cast<TStringGrid*>(Sender);
assert(StringGrid != NULL);
StringGrid->Canvas->FillRect(Rect);
AnsiString text(StringGrid->Cells[ACol][ARow]);
RECT RText = static_cast<RECT>(Rect);
InflateRect(&RText, -3, -3);
DrawText(StringGrid->Canvas->Handle, text.c_str(), text.Length(), &RText,
DT_RIGHT | DT_SINGLELINE | DT_VCENTER );
}