[ franjo_tahi @ 06.06.2008. 01:01 ] @
| Ima li tko ideju kako se najbrže vratiti na aktivni slog u gridu?
Radim s TIBDataSet-om i TDBGrid-om
Procedure je sljedeča:
U gridu je aktivan određeni slog. Potrebno je promjeniti order klikom na title (znači: close - izmjena qrya - open), a da se nakon toga u gridu pozicionira na isti slog.
Pokušao sam s bookmarkom i stvar radi nakon close - open, ali bez izmjene ordera, ako primijenim u qry-u order, bookmar više ne radi kako treba, tj. ne varti se na pravi slog.
Pokušao sam sa Locate, ali je presporo na većem setu podataka.
Svaka ideja je dobro došla...
|
[ priki @ 06.06.2008. 09:42 ] @
TIBDataSet poveži s TClientDataSetom
tamo postavi IndexFieldNames na polje po kojem želiš sortirati i to ti je
Code:
ClientDataSet.IndexName := 'sifra';
[ savkic @ 06.06.2008. 10:03 ] @
> Radim s TIBDataSet-om i TDBGrid-om
> U gridu je aktivan određeni slog. Potrebno je promjeniti order klikom na title (znači: close - izmjena qrya - open), a da se nakon toga u
> gridu pozicionira na isti slog.
> Pokušao sam s bookmarkom i stvar radi nakon close - open, ali bez izmjene ordera, ako primijenim u qry-u order, bookmar više ne radi
> kako treba, tj. ne varti se na pravi slog.
> Pokušao sam sa Locate, ali je presporo na većem setu podataka.
Koliko se sećam IBDataSet za Bookmark koristi RecNo, zato se posle sortiranja RecNo odnosi na sasvim drugi slog. Jedini način je preko nekog nepromenljivog podatka poput ID polja iz baze. Što se tiče brzine dve stvari mi padaju na pamet:
1) Handluj OnNewRecord* i proveri koji od novoučitanih slogova ima traženi ID, sačuvaj RecNo i posle otvaranja se pozicioniraj na njega (ili se pozicioniraj direkno iz handlera).
* Ako se OnNewRecord ne poziva prilikom učitavanja svakog sloga onda vidi ima li neki drugi event koji će se pozvati, ako nema napravi naslednika IBDataSet i overajduj GetNextRecord i tu vrši proveru. Naravno ovu proveru nema potrebe da radiš ako se dataset otvara po prvi put ili nije potrebno da se repozicionira na prethodno aktivni slog.
2) Napravi poseban thread u kome ćeš pozvati Locate, kada nađe slog, pošalji glavnom threadu poruku sa datim RecNo i neka se on pozicionira.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.