|
A TDBGrid komponensben lehetőségünk van arra, hogy egynél több rekordot is kiválasszon a felhasználó. Ehhez csak arra van szükség, hogy az Options property-hez a dgMultiSelect értéket is hozzáadjuk.
Ezekkel a kiválasztott rekordokkal tetszőleges műveletet végrehajthatunk, ehhez persze tudnunk kell megállapítani, hogy melyek ezek.
Mellékelt példában egy nyomógomb lenyomására összegezzük a kijelölt rekordok B mezőjének a tartalmát.
Első lépésként átmenetileg megszakítjuk az adatbázis és az adatmegjelenítő komponensek közötti kapcsolatot a DisableControls eljárás hívásával. Ezt azért célszerű megtenni, mert így egyrészt gyorsabb lesz a feldolgozás, másrészt pedig nem ugrál a TDBGrid-en a kijelölés, mikor végigmegyünk a kiválasztott rekordokon az összegzés elvégzésének érdekében.
A SelectedRows property-t felhasználva kérdezhetjük le, hogy mely rekordok lettek kijelölve. Ezen belül is a Count property fogja megmondani, hogy összesen hány darab ilyen van. Ha egy sincs kijelölve, tulajdonképpen akkor is van egy aktuális rekord. Ilyenkor csupán ennek az értékét írjuk ki.
Ha viszont van kijelölve, akkor egy FOR ciklussal végigmegyünk sorban az összesen.
Mivel e művelet közben megváltoztatjuk az aktuális rekord pozícióját, így illik egy könyvjelzőt létrehozni a GetBookmark hívásával, majd ha elvégeztük a műveletet, akkor visszaállni az eredeti pozícióra a GotoBookmark eljárással.
A FOR ciklus magjában mindig ugrunk a következő kijelölt rekordra, majd egy lokális változóba elvégezzük a B mező értékének összegzését.
A ciklus végén ismét engedélyezzük a kapcsolatot az adatbázis és az adatmegjelenítő objektumok között az EnableControls hívásával.
Legvégül már csak annyi van hátra, hogy a kapott eredményt kiírjuk.
|