Hogyan jutok a sor számát dbgrid a, amelyen a kurzor áll

Hogyan juthat DBGrid sorszám „egy, a kurzor pozíciójában?

PS Ha nem nehéz, majd válaszoljon az e-mail.

Próbálja DBGrid1.SelectedRows. - maga néz

Nem értem. És, hogy honnan RecNo adatbázisba kérni nehéz? Azt is mutatja, a sor számát a rács, mert a vonal teljes mértékben összhangban van adathalmaz

TMyDBGrid (DBGrid1) .Datalink.ActiveRecord, ahol TMyDBGrid = osztály (TDBGrid).

ha szükséges felhívni az adott cellában keresztül OnDrawColumnCell felvezető eseményeket, ez nem segít RecNo

és Row tulajdonságok nincs DBGrid
Így is tettem, így

1) létrehozása az osztály
TlioGrid = osztály (TCustomGrid)
nyilvános
ingatlan Col;
ingatlan Row;
végén;

2) Mivel a sor tulajdonság visszaadja a pozícióját a jelenlegi vonal Gridina az első látható vonalak, szükséges, hogy figyelembe vegyék az elmozdulás látható vonal a valós számok a megfelelő rögzítette
Ehhez egy változót ScrollOffset

A felvezető Query1.OnAfterScroll levelet
ScrollOffset = Query1-> RecNo - TlioGrid (DBGrid1) -> Row;

3) Most otrisuem szükséges az adott cellában Gridina
ha Query1-> RecNo = (TlioGrid (DBGrid1) -> Row + ScrollOffset)
majd

Ui
Talán van egy egyszerűbb módja, de ez a módszer működik, az biztos :)

ha szükséges felhívni az adott cellában keresztül OnDrawColumnCell felvezető eseményeket, ez nem segít RecNo

és Row tulajdonságok nincs DBGrid
Így is tettem, így

1) létrehozása az osztály
TlioGrid = osztály (TCustomGrid)
nyilvános
ingatlan Col;
ingatlan Row;
végén;

2) Mivel a sor tulajdonság visszaadja a pozícióját a jelenlegi vonal Gridina az első látható vonalak, szükséges, hogy figyelembe vegyék az elmozdulás látható vonal a valós számok a megfelelő rögzítette
Ehhez egy változót ScrollOffset

A felvezető Query1.OnAfterScroll levelet
ScrollOffset = Query1-> RecNo - TlioGrid (DBGrid1) -> Row;

3) Most otrisuem szükséges az adott cellában Gridina
(Írja be a OnDrawColumnCell kód)
ha Query1-> RecNo = (TlioGrid (DBGrid1) -> Row + ScrollOffset)
majd

Ui
Talán van egy egyszerűbb módja, de ez a módszer működik, az biztos :)

miért kitalálni a saját osztályokat?
DBGrid1.DataSource.DataSet.RecNo minden.

és valami, mint ez a manuális rajz:

eljárás TForm1.DBGrid1DrawColumnCell (Sender: TObject; const Rect: TRect; DataCol: Egész Oszlop: TColumn; State: TGridDrawState);
kezdődik
ha nem (Sender TDBGrid), majd a Kilépés;
ha DataCol = 0, akkor kezdődik
TextOut (TDBGrid (Sender) .Canvas.Handle, Rect.Left, Rect.Top, PChar ( "Felvétel száma:" + IntToStr (DBGrid1.DataSource.DataSet.RecNo)) Hosszúság ( "Felvétel száma:" + IntToStr (DBGrid1 .DataSource.DataSet.RecNo)));
végén pedig TDBGrid (Sender) .DefaultDrawColumnCell (téglalap, DataCol, oszlop, állam);
végén;

Memória: 0,73 MB
Idő: 0,04 c