Ячейки таблицы я "рисую" сам методом DrawCell.
Эта информация нам зачем? Если правильно рисуешь - то все должно быть нормально.
В общем, расклад такой: если у тебя есть ячейка, которая наполовину скрыта, а наполовину - видна, то при клике на ней происходит прокрутка
нефиксированной части грида так, чтобы выбранная клетка стала видна полностью. То есть, вызывается событие OnTopLeftChanged. Если в его обработчике сделать, скажем, так:
void __fastcall TForm1::StringGrid1TopLeftChanged(TObject *Sender)
{
bool b;
StringGrid1SelectCell(Sender, StringGrid1->Col, StringGrid1->Row, b);
}
, то есть, сразу после прокрутки заставить грид отобразить Picker в выбранной ячейке, то все должно отображаться корректно (если ты там ничего с отрисовкой не перемудрил). Ну, будет исчезать из поля зрения, разумеется, если ты просто возьмешь и перетянешь ползунок скроллбара, не меняя выбранной ячейки, а куда ему деваться?