![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
КАк определить номер ... при прорисовывании в 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 глобальная переменная