Očigledno se ne razumemo. Imam utisak da si pomešao nekoliko mogućih rešenja u jedno, pa sada ima i viškova koda.
SCENARIO:
Korisnik u kontrolu Edit1 kuca neki tekst. Taj tekst služi za pretragu grida. Dok god koisnik kuca, pretraga ce suzavati broj redova. Kad korisnik prestane da kuca duze od dve sekunde, pretraga ce se resetovati, i opet ces imati ceo spisak. Timer 1 je podesen na 500ms, a Timer2 na 2000ms.
EVO KOD:
Code:
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Edit1->Text = "";
}
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
// Resetuje se tajmer, kako ne bi ispaljivao upit dog kod korisnik kuca
// Interval je podesen na 500 ms
Timer1->Enabled = false;
Timer1->Enabled = true;
// Resetuje se tajmer, kako bi resetovao celu pretragu
// Interval je podesen na 2000 ms
Timer2->Enabled = false;
Timer2->Enabled = true;
}
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
// tajmer interval za ovaj event je recimo 500 ms
Timer1->Enabled = false;
// OVDE, UMESTO SLEDECE DVE LINIJE, STAVI TVOJ KOD
Caption = "Tekst za pretragu: " + Edit1->Text;
Sleep(200); // <--- kao neko vreme izvrsenja, od 200 ms
// OVO JE TVOJ KOD:
// TLocateOptions SearchOptions;
// SearchOptions.Clear();
// SearchOptions << loPartialKey;
// bool LocateSuccess=Form1->tabelaA->Locate("IME",Edit1->Text,SearchOptions );
}
void __fastcall TForm1::Timer2Timer(TObject *Sender)
{
// tajmer interval za ovaj event je recimo 500 ms
Timer2->Enabled = false;
Edit1->Text = "";
}
Da li je to ono što želiš? Ako nije to, opiši kako treba da izgleda KORISNIČKI INTERFEJS, koje sve tačno kontrole i koji scenario unosa podataka.
U tvom primeru vidim da imaš i Edit i dbgBgKeyPress. Ne razumem čemu služi dbgBgKeyPress, ako već tekst pretrage kucaš u Edit i koristiš njegov OnChange događaj? Tada ti ne treba nikakav KeyPress. Ako želiš pretragu preko dbgBgKeyPress, onda Edit nema funkciju. Drugim recima, ne treba ti i "Edit1->Text" i "trazi", vec samo jedno, zavisno od toga koje resenje (korisnicki nacn unosa) odaberes.