Piszę swój własny notatnik w C++ Builderze, o wdzięcznej nazwie "Notatnik Szatana". Postanowiłem napisać samemu wyszukiwanie frazy w polu tekstowym. Mam jednak pewien problem.
Sama szukajka wygląda tak:
Jeśli wpisany zostanie tekst znajdujący się w tekście, napis "Nie znaleziono" będzie niewidoczny, a tekst w głównym oknie zostanie zaznaczony.
Natomiast funkcja odpowiedzialna za zaznaczenie tekstu po znalezieniu wygląda tak:
Dopiero się uczę, więc pozwoliłem sobie po prostu wziąć jedną funkcję z internetu. Reszta kodu jest moja.
void zaznaczenie(TMemo *tresc, int start, int meta)
{
tresc->Perform(EM_SETSEL, start, meta);
tresc->SetFocus();
//tutaj trzeba jeszcze sprawic, by okno glowne nie stawalo sie aktywne, tylko zeby szukajka pozostala aktywna a zaznaczenie pojawialo sie w oknie glownym
//ANY IDEAS?
}
Funkcja szukania wywoływana jest przy OnChange pola edit występującego w okienku wyszukiwania. Chcę, by szukana fraza zaznaczała się na bieżąco gdy wpisujemy tekst w pole edit. Podoba mi się ta funkcjonalność - jedno klikanie mniej (nie jest potrzebny żaden button szukaj na który należałoby kliknąć), a wszystko dynamiczniej i prościej. Pomysł wziąłem z tego, jak działa wyszukiwanie w używanej przeze mnie przeglądarce internetowej i stwierdziłem, że w moim notatniku właśnie tak musi to wyglądać.
Wyszukuje prawidłowo. Tyle tylko, że po znalezieniu, oprócz zaznaczenia frazy w polu tekstowym głównego okna, czyni to okno aktywnym. Tak więc, żeby kontynuować wpisywanie szukanej frazy, należy z powrotem kliknąć na okno wyszukiwania. I tak ciągle po wpisaniu każdego znaku.
A nie chcę rezygnować z tej funkcjonalności zaznaczania na bieżąco.
Macie może jakiś pomysł, żeby został zaznaczony tekst w polu tekstowym w oknie głównym programu, ale bez utraty aktywności szukajki (ewentualnie żeby po zaznaczeniu tekstu pole wyszukiwania stało się z powrotem aktywne, ale tekst w polu tekstowym w oknie głównym pozostał zaznaczony)?
Jeśli ktoś by chciał zobaczyć całość mojego kodu, to proszę: http://pastebin.com/NLdd506A