StringGrid (для fellow)
>Ширина ячейки известна, ширину текстовой метки получаешь вышеописанным способом. Находишь максимальное значение в столбце и, соответственно, максимальную ширину текстовой метки. Из ширины столбца вычитаешь максимальную ширину текстовой метки (ведь ты же не хочешь, чтобы рисование наползало на цифры) и получаешь максимальную ширину области рисования.
До этого предложения все сделал, а дальше не соображу, как составить формулу. Если есть возможность пару строк please!
Получилось, даже проще:
Ymin - минимальное число в колонке
Ymax - максимальное
void __fastcall TLogForm::StringGrid2DrawCell(TObject *Sender, int ACol,
int ARow, TRect &Rect, TGridDrawState State)
{
if(CneckVisual)//щелчок на CheckBox1 начинаем закрашивать
{
if(ACol==3 && ARow != 0)
{
StringGrid2->Canvas->FillRect(Rect);
StringGrid2->Canvas->Brush->Color = clRed;
int Z = StrToInt(StringGrid2->Cells[3][ARow]);
StringGrid2->Canvas->Rectangle(Rect.Left, Rect.Top, Rect.Left +
Rect.Width() * (Z+1 - Ymin) / (Ymax - Ymin), Rect.Bottom);
}
}
}