Cum se determină modificarea focalizării unui șir în tdbgrid

CPU nu a fost găsit. Apăsați orice tastă pentru a continua

Utilizați evenimentul OnDataChange pe obiectul Datasource care este conectat la DBGrid. Dacă parametrul de stat din instrumentul de procesare a evenimentului este dsBrowse, atunci ați mutat la o linie nouă (sau a deschis doar tabelul).







De ce rețeaua nu suportă un astfel de eveniment? Deoarece grila nu poate fi singurul control care nu are grijă de datele din linia curentă, este posibil să nu fie singurul element care vă permite să vă deplasați de la linie la linie. Folosind Datasource, evenimentul este tratat central.

Nu sunt sigur că problema poate fi rezolvată prin tratarea evenimentului un singur clic, pentru a urmări liniile de a schimba evenimente, am recomandăm utilizarea eveniment TDatasource.OnDataChange și difuzor - TDBGrid.OnColEnter / Exit.

Personal, folosesc următoarea tehnologie de lucru:
  1. Pentru a detecta modificările la linia curentă, utilizați evenimentul TDataSource OnDataChange. OnDataChange apare când defilați sau faceți clic pe un alt rând. Operatorul de evenimente ar putea arăta astfel:

unde Field este coloana în care sa produs schimbarea.







Câmpurile TTable pot fi folosite pentru a compara rândurile de câmp selectate în prezent (cheie) cu cerințele dvs. În același scop, se poate folosi și proprietatea TDBGrid Fields. De exemplu:


  • Pentru a urmări modificările coloanelor, utilizați evenimentele TDBGrid OnColExit OnColEnter. Pentru a determina coloana selectată în prezent, utilizați proprietățile TDBGrid SelectedField și SelectedIndex.

    Când este selectată o altă coloană dintr-un alt rând, primiți evenimentele OnColExit, OnColEnter și OnDataChange.

  • Este posibil să mergeți și să "curbați" modul în care ați efectuat procesarea evenimentului TDBGrid OnDrawDataCell care apare atunci când este selectată celula sau atunci când grila este derulată. Operatorul de evenimente ar putea arăta astfel:

    Când modificați o celulă, primiți un flux de evenimente, așa că trebuie să filtrați cumva.

  • Dacă nu aveți probleme în crearea "101 modificări" la componentele standard - ceea ce este o problemă pentru mine 8-), încercați acest lucru. E ușor.

    Pentru a accesa indexul de rând sau coloană al celulei selectate, trebuie să moșteniți clasa de la TCustomGrid și să publicați proprietățile de rulare ale liniilor Row și Col (rândul curent și coloana de grilă, nu tabelele !!):

    în procedura sau manipulatorul corespunzător, distribuie tipul:

    din care pot concluziona că trebuie să o faceți programabil. Să presupunem că grila există deja și aveți acces la tabela principală TTable:

    Pot exista erori, dar acest lucru ar trebui să ajute.

    Uită-te la următorul cod, te poate ajuta. Este nevoie de controlul proprietății "Name" și o plasează în proprietatea "Caption" a etichetei.







    Trimiteți-le prietenilor: