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