Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.16;
Скачать: CL | DM;

Вниз

Как получить номер строки DBGrid a, на которой стоит курсор   Найти похожие ветки 

 
Илья_____   (2002-04-18 18:54) [0]

Привет!

Как получить номер строки DBGrid"a, на которой стоит курсор?

---
Илья

PS Если не сложно, то отвечайте на мейл.


 
KaPaT ©   (2002-04-18 21:28) [1]

Попробуй DBGrid1.SelectedRows.??? - сам посмотри


 
Aleksandr ©   (2002-04-18 21:40) [2]

Не понял... А что, RecNo у датасета спросить трудно? Она же и показывает номер строки, потому что строки в гриде полностью соответствуют набору данных


 
Lusha ©   (2002-04-19 10:30) [3]

TMyDBGrid(DBGrid1).Datalink.ActiveRecord, где TMyDBGrid = class(TDBGrid)...


 
olden ©   (2002-04-19 11:05) [4]

если это необходимо для рисования в текущей ячейке через обработчик события OnDrawColumnCell, то RecNo не поможет

и свойства Row у DBGrid нет
поэтому я поступал так

1) создаем свой класс
TlioGrid = class(TCustomGrid)
public
property Col;
property Row;
end;

2) Поскольку свойство Row возвратит положение текущей строки гридины относительно ее первой видимой строчки, то нужно учесть смещение видимой строки относительно реального номера записи ей соответствующего
Для этого используем свою переменную ScrollOffset

В обработчик Query1.OnAfterScroll пишем
ScrollOffset = Query1->RecNo - TlioGrid(DBGrid1)->Row;

3) Теперь отрисуем нужное в текущей ячейке гридины
if Query1->RecNo = (TlioGrid(DBGrid1)->Row + ScrollOffset)
then
{проверим еще и та ли колонка и если та - рисуем то что хотим}

P.S.
Может есть и проще путь, но этот метод точно срабатывает :)


 
olden ©   (2002-04-19 11:06) [5]

если это необходимо для рисования в текущей ячейке через обработчик события OnDrawColumnCell, то RecNo не поможет

и свойства Row у DBGrid нет
поэтому я поступал так

1) создаем свой класс
TlioGrid = class(TCustomGrid)
public
property Col;
property Row;
end;

2) Поскольку свойство Row возвратит положение текущей строки гридины относительно ее первой видимой строчки, то нужно учесть смещение видимой строки относительно реального номера записи ей соответствующего
Для этого используем свою переменную ScrollOffset

В обработчик Query1.OnAfterScroll пишем
ScrollOffset = Query1->RecNo - TlioGrid(DBGrid1)->Row;

3) Теперь отрисуем нужное в текущей ячейке гридины
(вставим в OnDrawColumnCell код)
if Query1->RecNo = (TlioGrid(DBGrid1)->Row + ScrollOffset)
then
{проверим еще и та ли колонка и если та - рисуем то что хотим}

P.S.
Может есть и проще путь, но этот метод точно срабатывает :)


 
Nebuchadnezzar ©   (2002-04-20 17:04) [6]

да зачем придумывать собственные классы то?
DBGrid1.DataSource.DataSet.RecNo и все!!!

а в случае ручного рисования примерно так:

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if not (Sender is TDBGrid) then Exit;
if DataCol = 0 then begin
TextOut(TDBGrid(Sender).Canvas.Handle, Rect.Left, Rect.Top, PChar("Rec No:"+IntToStr(DBGrid1.DataSource.DataSet.RecNo)), Length("Rec No:"+IntToStr(DBGrid1.DataSource.DataSet.RecNo)));
end else TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;



Страницы: 1 вся ветка

Текущий архив: 2002.05.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
14-50118
deleon
2002-04-05 13:48
2002.05.16
Есть-ли у вас увлечения кроме Delphi ?


1-50004
Ronin
2002-04-30 02:08
2002.05.16
Как добавить ссылку на сайт в hlp файле?


3-49858
Chuvi
2002-04-19 11:53
2002.05.16
Как использовать LIKE , в запросе для SQL- сервера ?


4-50171
Fellomena
2002-03-05 16:07
2002.05.16
Вопрос к ASMатикам ;)


14-50124
Song
2002-04-08 08:51
2002.05.16
Вирус тут пришёл... Даже не знаю чего и делать-то :)))