Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

КАк определить номер ... при прорисовывании в DBGrid


Vadim S ©   (2003-10-13 14:02:00) 

Как в событии

procedure TXX.dbgDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);

определить порядковый номер ПРОРИСОВЫВАЕМОЙзаписи.


MsGuns   (2003-10-13 17:54:00) [1]

В какой-то мере может помочь FetchAll после открытия с последующим обращением при перерисовке к RecNo так, как это было уже не раз описано выше (через грид->сорс->НД)

И запомни - в гриде нет записей, более того, он ничего не знает ни об их кол-ве, ни о источнике. Для получения информации к рисованию (а именно для этого гриды и служат) он юзает TDataSource.

Резюме - читай хэлпы.


Vadim S   (2003-10-13 17:13:00) [2]

Нужен номер относительно первой записи в данном ДБГриде.
Не видимый а абсолютный (в данной выборке).


MsGuns   (2003-10-13 15:57:00) [3]

Для абстрактной проблемы и решение абстрактное. Почитай внимательно свой сабж - что есть порядковый номер прорисовываемой записи ? Номер относительно чего ?
- Видимой части сетки ?
- Курсора НД
- Содержимого буфера
- Таблицы БД по первичным ключам
- Третьего дерева за четвертым поворотом пятой дороги ?


Vadim S   (2003-10-13 14:55:00) [4]

>RecNo не всегда возвращает то что нужно. Эту тему тут уже с >десяток раз поднимали за последнюю неделю.

Т.е. решения нет? Или как?


DenK_vrtz   (2003-10-13 14:54:00) [5]

Я одного не пойму, а на фига все это при прорисовке?!


Vlad   (2003-10-13 14:38:00) [6]

RecNo не всегда возвращает то что нужно. Эту тему тут уже с десяток раз поднимали за последнюю неделю.


MsGuns   (2003-10-13 14:24:00) [7]

Если надо обратиться к текущей записи датасета, то RecNo датасета (TQuery/TTable,...), если надо обратиться к записи, соответствующей прорисовываемой в данной момент в гриде, то к TDBGrid.DataSource.DataSet.RecNo. Кстати, таким же манером можно "располосатить" грид, т.е. окрасить строки в зависимости от значения некоторого поля НД.


stone   (2003-10-13 14:16:00) [8]


> ПРОРИСОВЫВАЕМОЙ записи,
> а не той на которой стоит курсор!!!


Специально проверил, работает

if Column.Index = 0 then
Memo1.Lines.Add(IntToStr(Column.Grid.DataSource.DataSet.RecNo))


Stas   (2003-10-13 14:13:00) [9]

Vlad © (13.10.03 14:07) [3]

Точно...
Vadim S (13.10.03 14:08) [4]
Курсор всегда становится на прорисовываемую запись.


NAlexey   (2003-10-13 14:09:00) [10]

>I:=i+1
>где I глобальная переменная
Всетаки не стоит так делать...


Vadim S   (2003-10-13 14:08:00) [11]

ПРОРИСОВЫВАЕМОЙ записи,
а не той на которой стоит курсор!!!


Vlad   (2003-10-13 14:07:00) [12]

У прорисовываемой записи НЕТ порядкового номера.
Есть ключевые поля в DataSet"e. По ним и определяй.
Stas © (13.10.03 14:05) [1]
Да, только это число даст тебе произведение столбцов и строк.
Тем более, что ее нужно будет обнулять при каждой перерисовке грида.


stone   (2003-10-13 14:06:00) [13]

Если речь о RecNo, тогда
Column.Grid.DataSource.DataSet.RecNo


Stas   (2003-10-13 14:05:00) [14]

на событие: procedure TXX.dbgDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);

I:=i+1
где I глобальная переменная


Наверх

Титульная страница Поиск, карта сайта Написать письмо