Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

DBGrid Номер строки

4.2K
26 января 2006 года
Крыс
98 / / 06.05.2005
Давно в билдере не работала(( Не могу понять, то ли я глючу, то ли еще чего..
Ситуация в ощем такая, по координатам мыша нада определить над какой записью в таблице она находится.

int CurRow = dbGrid1->MouseCoord(X, Y).Y

вроде это дает номер строки, но во-первых отсчет начинаетсяне с первой записи в таблице, а с первой строки на экране (разница из-за скрола)
а во-вторых как от номера строки перейти к даным в этой сторке (IdRecord)

Пол дня уже глючу, помогите плиз
7.9K
26 января 2006 года
uki_
122 / / 26.01.2006
Переопредели обработчик OnDrawColumnCell
 
Код:
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);
}

Предполагается, что 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;
4.2K
26 января 2006 года
Крыс
98 / / 06.05.2005
Спасибо :)
попробую
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог