void __fastcall TForm1:: DBGrid1DrawColumnCell(TObject *Sender,
const TRect &Rect, int DataCol, TColumn *Column,
TGridDrawState State)
{
if(DataCol==0)
DBGrid1->Tag = Column->Field->DataSet->RecNo - (Rect.Top-Rect.Height()-1)/(Rect.Height()+1);
}
DBGrid Номер строки
Ситуация в ощем такая, по координатам мыша нада определить над какой записью в таблице она находится.
int CurRow = dbGrid1->MouseCoord(X, Y).Y
вроде это дает номер строки, но во-первых отсчет начинаетсяне с первой записи в таблице, а с первой строки на экране (разница из-за скрола)
а во-вторых как от номера строки перейти к даным в этой сторке (IdRecord)
Пол дня уже глючу, помогите плиз
Код:
Предполагается, что 0-й столбей всегда видим в Gride. Иначе другой номер или вообще без проверки.
Переход на запись
Код:
TPoint pt = ScreenToClient(Mouse->CursorPos);
pt.x -= DBGrid1->Left;
pt.y -= DBGrid1->Top;
int recno = DBGrid1->Tag
+ DBGrid1->MouseCoord(pt.x,pt.y).Y - 1;
if(recno>0)Table1->RecNo = recno;
pt.x -= DBGrid1->Left;
pt.y -= DBGrid1->Top;
int recno = DBGrid1->Tag
+ DBGrid1->MouseCoord(pt.x,pt.y).Y - 1;
if(recno>0)Table1->RecNo = recno;
попробую