Cum se obține numărul liniei dbgrid a, pe care este poziționat cursorul

Cum obțin numărul liniei DBGrid "a, pe care se află cursorul?

PS Dacă nu este dificil, răspundeți la e-mail.

Încercați DBGrid1.SelectedRows. - vezi-te singur

Nu înțeleg. Și ce, RecNo la un set de date pentru a întreba dificil? De asemenea, indică numărul liniei, deoarece liniile din rețea sunt pe deplin compatibile cu setul de date







TMyDBGrid (DBGrid1) .Datalink.ActiveRecord, în care TMyDBGrid = clasă (TDBGrid).

dacă este necesar să trageți în celula curentă printr-un handler de evenimente OnDrawColumnCell, atunci RecNo nu va ajuta

și proprietatea Row a DBGrid nu există
așa că am făcut-o

1) creați propria clasă
TlioGrid = clasa (TCustomGrid)
public
proprietate Col;
proprietate Row;
se încheie;

2) Deoarece proprietatea Row returnează poziția șirului curent Gridin față de prima sa linie vizibilă, este necesar să se țină seama de decalajul șirului vizibil față de numărul real de înregistrare al rândului corespunzător
Pentru aceasta, folosim variabila ScrollOffset

În agendă Query1.OnAfterScroll scriem
ScrollOffset = Interogare1-> RecNo - TlioGrid (DBGrid1) -> Rând;

3) Desenați acum dorința din grila curentă
dacă Query1-> RecNo = (TlioGrid (DBGrid1) -> Row + ScrollOffset)






atunci

P.S.
Poate că există o cale mai ușoară, dar această metodă funcționează bine :)

dacă este necesar să trageți în celula curentă printr-un handler de evenimente OnDrawColumnCell, atunci RecNo nu va ajuta

și proprietatea Row a DBGrid nu există
așa că am făcut-o

1) creați propria clasă
TlioGrid = clasa (TCustomGrid)
public
proprietate Col;
proprietate Row;
se încheie;

2) Din moment ce proprietatea Row returnează poziția liniei curente Gridina pe primele linii vizibile, este necesar să se ia în considerare deplasarea liniei vizibile pe numerele reale ale corespunzătoare înregistrării ei
Pentru aceasta, folosim variabila ScrollOffset

În agendă Query1.OnAfterScroll scriem
ScrollOffset = Interogare1-> RecNo - TlioGrid (DBGrid1) -> Rând;

3) Desenați acum dorința din grila curentă
(inserați în codul OnDrawColumnCell)
dacă Query1-> RecNo = (TlioGrid (DBGrid1) -> Row + ScrollOffset)
atunci

P.S.
Poate că există o cale mai ușoară, dar această metodă funcționează bine :)

de ce să-ți construiești propriile clase atunci?
DBGrid1.DataSource.DataSet.RecNo și toate.

și în cazul desenului manual, aproximativ în felul următor:

Procedura TForm1.DBGrid1DrawColumnCell (Expeditor: TObject; const Dreptunghi: TRect; DataCol: Integer; Coloană: TColumn; Stat: TGridDrawState);
începe
dacă nu (Sender este TDBGrid) atunci ieșiți;
dacă DataCol = 0 atunci începe
TextOut (TDBGrid (Sender) .Canvas.Handle, Rect.Left, Rect.Top, PChar ( "Rec No:" + IntToStr (DBGrid1.DataSource.DataSet.RecNo)), Lungime ( "Rec No:" + IntToStr (DBGrid1 .DataSource.DataSet.RecNo)));
termină altfel TDBGrid (Sender) .DefaultDrawColumnCell (Rect, DataCol, Column, State);
se încheie;

Memorie: 0,73 MB
Durată: 0,04 secunde







Trimiteți-le prietenilor: