Ĺadny brzuch
Witam W swoim edytorze mam opcję wyszukiwania tekstu w komponencie SynEdit. Niestety jest to dość skromne udogodnienie. Powiedzmy, że mam na innej formie niż główna (frm_main), mam formatkę (frm_znajdz), w której mam Edita (edtFraza) i Buttona, który rozpoczynałby szukanie (sbZnajdz). Mam taki kod pod Buttona:
procedure Tfrm_znajdz.sbZnajdzClick(Sender: TObject); var i : integer; begin i := Pos(edtFraza.Text, frm_main.Edytor.Lines.Text); if i > 0 then begin frm_main.Edytor.SelStart := i -1; frm_main.Edytor.SelLength := Length(edtFraza.Text); frm_main.Edytor.SetFocus; end else ShowMessage('Nie znaleziono szukaniej frazy!'); end;
I tak: chciałbym dodać funkcję typu "Znajdź następny" (bo to co zaprezentowałem znajduje pierwszy ciąg, jaki występuje w tekscie - a gdy chcę jechać po całym tekście i znajdywać następne podciągi to legnie) oraz możliwość rozbudowania o takie funkcje jak "Rozrówniaj wielkość liter", "Kierunek" (Przód i Tył) itd.
Drugie moje pytanie. Chciałbym stworzyć o podobnym możliwościach funkcję "Zamień" ("Zamień wszystko" i inne) ;)
Jak ktoś ma może kawałek kodu z jakiegoś swojego edytora, mógłby go użyczyć? Byłbym wdzięczny :D
P.S. -> Jakby co, to zaglądałem do demka załączonego do SynEdita, nawet próbowałem co nie co wykorzystać, ale akurat te example są jakieś niechyrze i nie mogłem sobie z nimy poradzić :pomocy:
Jeśli chodzi o kierunki i "znajdź następny":
1. Na samym początku sprawdzasz pozycję kursora -> x
2. w dół: do jakiejś innej zmiennej kopiujesz tekst od kursora (x) w dół (do końca)
w górę: ... od początku do kursora (x) :)
3. i := Pos(edtFraza.Text, zmienna_punkt_3)
4 w dół:
if i > 0 then begin  frm_main.Edytor.SelStart := x + i -1;  frm_main.Edytor.SelLength := x + Length(edtFraza.Text);  frm_main.Edytor.SetFocus; end else  ShowMessage('Nie znaleziono szukaniej frazy!');
a w górę normalnie (bez "x +") B)
Użytkownik lukexpert edytował ten post 05 luty 2006, 19:27
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
procedure Tfrm_znajdz.sbZnajdzClick(Sender: TObject); var i : integer; begin i := Pos(edtFraza.Text, frm_main.Edytor.Lines.Text); if i > 0 then begin frm_main.Edytor.SelStart := i -1; frm_main.Edytor.SelLength := Length(edtFraza.Text); frm_main.Edytor.SetFocus; end else ShowMessage('Nie znaleziono szukaniej frazy!'); end;
I tak: chciałbym dodać funkcję typu "Znajdź następny" (bo to co zaprezentowałem znajduje pierwszy ciąg, jaki występuje w tekscie - a gdy chcę jechać po całym tekście i znajdywać następne podciągi to legnie) oraz możliwość rozbudowania o takie funkcje jak "Rozrówniaj wielkość liter", "Kierunek" (Przód i Tył) itd.
Drugie moje pytanie. Chciałbym stworzyć o podobnym możliwościach funkcję "Zamień" ("Zamień wszystko" i inne) ;)
Jak ktoś ma może kawałek kodu z jakiegoś swojego edytora, mógłby go użyczyć? Byłbym wdzięczny :D
P.S. -> Jakby co, to zaglądałem do demka załączonego do SynEdita, nawet próbowałem co nie co wykorzystać, ale akurat te example są jakieś niechyrze i nie mogłem sobie z nimy poradzić :pomocy:
Jeśli chodzi o kierunki i "znajdź następny":
1. Na samym początku sprawdzasz pozycję kursora -> x
2. w dół: do jakiejś innej zmiennej kopiujesz tekst od kursora (x) w dół (do końca)
w górę: ... od początku do kursora (x) :)
3. i := Pos(edtFraza.Text, zmienna_punkt_3)
4 w dół:
if i > 0 then begin  frm_main.Edytor.SelStart := x + i -1;  frm_main.Edytor.SelLength := x + Length(edtFraza.Text);  frm_main.Edytor.SetFocus; end else  ShowMessage('Nie znaleziono szukaniej frazy!');
a w górę normalnie (bez "x +") B)
Użytkownik lukexpert edytował ten post 05 luty 2006, 19:27